`

第二十一章 YUM 线上升级机制

 
阅读更多
我们在本章一开始的地方谈到过 yum 这玩意儿,这个 yum 是透过分析 RPM 的标头数据后, 根据各软件的相关性制作出属性相依时的解决方案,然后可以自动处理软件的相依属性问题,以解决软件安装或移除与升级的问题。 详细的 yum 服务器与用户端之间的沟通,可以再回到前面的部分查阅一下图 1.5.1 的说明。

由於 distribution 必须要先释出软件,然后将软件放置於 yum 服务器上面,以提供用户端来要求安装与升级之用的。 因此我们想要使用 yum 的功能时,必须要先找到适合的 yum server 才行啊!而每个 yum server 可能都会提供许多不同的软件功能,那就是我们之前谈到的『容器』啦!因此,你必须要前往 yum server 查询到相关的容器网址后,再继续处理后续的配置事宜。

事实上 CentOS 在释出软件时已经制作出多部映射站台 (mirror site) 提供全世界的软件升级之用。 所以,理论上我们不需要处理任何配置值,只要能够连上 Internet ,就可以使用 yum 罗!底下就让我们来玩玩看吧!

利用 yum 进行查询、安装、升级与移除功能

yum 的使用真是非常简单,就是透过 yum 这个命令啊!那么这个命令怎么用呢? 用法很简单,就让我们来简单的谈谈:

查询功能:yum [list|info|search|provides|whatprovides] 参数

如果想要查询利用 yum 来查询原版 distribution 所提供的软件,或已知某软件的名称,想知道该软件的功能, 可以利用 yum 相关的参数为:


[root@www ~]# yum [option] [查询工作项目] [相关参数]
选项与参数:
[option]:主要的选项,包括有:
  -y :当 yum 要等待使用者输入时,这个选项可以自动提供 yes 的回应;
  --installroot=/some/path :将该软件安装在 /some/path 而不使用默认路径
[查询工作项目] [相关参数]:这方面的参数有:
  search  :搜寻某个软件名称或者是描述 (description) 的重要关键字;
  list    :列出目前 yum 所管理的所有的软件名称与版本,有点类似 rpm -qa;
  info    :同上,不过有点类似 rpm -qai 的运行结果;
  provides:从文件去搜寻软件!类似 rpm -qf 的功能!

范例一:搜寻磁盘阵列 (raid) 相关的软件有哪些?
[root@www ~]# yum search raid
....(前面省略)....
mdadm.i386 : mdadm controls Linux md devices (software RAID arrays)
lvm2.i386 : Userland logical volume management tools
....(后面省略)....
# 在冒号 (:)  左边的是软件名称,右边的则是在 RPM 内的 name 配置 (软件名)
# 瞧!上面的结果,这不就是与 RAID 有关的软件吗?如果想了解 mdadm 的软件内容呢?

范例二:找出 mdadm 这个软件的功能为何
[root@www ~]# yum info mdadm
Installed Packages      <==这说明该软件是已经安装的了
Name   : mdadm          <==这个软件的名称
Arch   : i386           <==这个软件的编译架构
Version: 2.6.4          <==此软件的版本
Release: 1.el5          <==释出的版本
Size   : 1.7 M          <==此软件的文件总容量
Repo   : installed      <==容器回报说已安装的
Summary: mdadm controls Linux md devices (software RAID arrays)
Description:            <==看到否?这就是 rpm -qi 嘛!
mdadm is used to create, manage, and monitor Linux MD (software RAID)
devices.  As such, it provides similar functionality to the raidtools
package.  However, mdadm is a single program, and it can perform
almost all functions without a configuration file, though a configuration
file can be used to help with some common tasks.
# 不要跟我说,上面说些啥?自己找字典翻一翻吧!拜托拜托!

范例三:列出 yum 服务器上面提供的所有软件名称
[root@www ~]# yum list
Installed Packages <==已安装软件
Deployment_Guide-en-US.noarch            5.2-9.el5.centos       installed
Deployment_Guide-zh-CN.noarch            5.2-9.el5.centos       installed
Deployment_Guide-zh-TW.noarch            5.2-9.el5.centos       installed
....(中间省略)....
Available Packages <==还可以安装的其他软件
Cluster_Administration-as-IN.noarch      5.2-1.el5.centos       base
Cluster_Administration-bn-IN.noarch      5.2-1.el5.centos       base
....(底下省略)....
# 上面提供的意义为:『 软件名称   版本   在那个容器内 』

范例四:列出目前服务器上可供本机进行升级的软件有哪些?
[root@www ~]# yum list updates  <==一定要是 updates 喔!
Updated Packages
Deployment_Guide-en-US.noarch            5.2-11.el5.centos      base
Deployment_Guide-zh-CN.noarch            5.2-11.el5.centos      base
Deployment_Guide-zh-TW.noarch            5.2-11.el5.centos      base
....(底下省略)....
# 上面就列出在那个容器内可以提供升级的软件与版本!

范例五:列出提供 passwd 这个文件的软件有哪些
[root@www ~]# yum provides passwd
passwd.i386 : The passwd utility for setting/changing passwords using PAM
passwd.i386 : The passwd utility for setting/changing passwords using PAM
# 找到啦!就是上面的这个软件提供了 passwd 这个程序!


透过上面的查询,你应该大致知道 yum 如何用在查询上面了吧?那么实际来应用一下:

例题:
利用 yum 的功能,找出以 pam 为开头的软件名称有哪些?而其中尚未安装的又有哪些?
答:
可以透过如下的方法来查询:

[root@www ~]# yum list pam*
Installed Packages
pam.i386                  0.99.6.2-3.27.el5      installed
pam_ccreds.i386           3-5                    installed
pam_krb5.i386             2.2.14-1               installed
pam_passwdqc.i386         1.0.2-1.2.2            installed
pam_pkcs11.i386           0.5.3-23               installed
pam_smb.i386              1.1.7-7.2.1            installed
Available Packages <==底下则是『可升级』的或『未安装』的
pam.i386                  0.99.6.2-4.el5         base
pam-devel.i386            0.99.6.2-4.el5         base
pam_krb5.i386             2.2.14-10              base


如上所示,所以可升级者有 pam, pam_krb5 这两个软件,完全没有安装的则是 pam-devel 这个软件罗!

安装/升级功能:yum [install|update] 软件

既然可以查询,那么安装与升级呢?很简单啦!就利用 install 与 update 这两项工作来处理即可喔!

[root@www ~]# yum [option] [查询工作项目] [相关参数]
选项与参数:
  install :后面接要安装的软件!
  update  :后面接要升级的软件,若要整个系统都升级,就直接 update 即可

范例一:将前一个练习找到的未安装的 pam-devel 安装起来
[root@www ~]# yum install pam-devel
Setting up Install Process
Parsing package install arguments
Resolving Dependencies  <==先检查软件的属性相依问题
--> Running transaction check
---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be updated
--> Processing Dependency: pam = 0.99.6.2-4.el5 for package: pam-devel
--> Running transaction check
---> Package pam.i386 0:0.99.6.2-4.el5 set to be updated
filelists.xml.gz          100% |=========================| 1.6 MB    00:05
filelists.xml.gz          100% |=========================| 138 kB    00:00
-> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 pam-devel               i386       0.99.6.2-4.el5   base              186 k
Updating:
 pam                     i386       0.99.6.2-4.el5   base              965 k

Transaction Summary
=============================================================================
Install      1 Package(s)  <==结果发现要安装此软件需要升级另一个相依的软件
Update       1 Package(s)
Remove       0 Package(s)

Total download size: 1.1 M
Is this ok [y/N]: y  <==确定要安装!
Downloading Packages: <==先下载!
(1/2): pam-0.99.6.2-4.el5 100% |=========================| 965 kB    00:05
(2/2): pam-devel-0.99.6.2 100% |=========================| 186 kB    00:01
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction <==开始安装!
  Updating  : pam                          ######################### [1/3]
  Installing: pam-devel                    ######################### [2/3]
  Cleanup   : pam                          ######################### [3/3]

Installed: pam-devel.i386 0:0.99.6.2-4.el5
Updated: pam.i386 0:0.99.6.2-4.el5
Complete!


有没有很高兴啊!你不必知道软件在哪里,你不必手动下载软件,你也不必拿出原版光盘出来 mount 之后查询再安装!全部不需要,只要有了 yum 这个家伙,你的安装、升级再也不是什么难事! 而且还能主动的进行软件的属性相依处理流程,如上所示,一口气帮我们处理好了所有事情! 是不是很过瘾啊!而且整个动作完全免费!够酷吧!

移除功能:yum [remove] 软件

那能不能用 yum 移除软件呢?将刚刚的软件移除看看,会出现啥状况啊?

[root@www ~]# yum remove pam-devel
Setting up Remove Process
Resolving Dependencies  <==同样的,先解决属性相依的问题
--> Running transaction check
---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be erased
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Removing:
 pam-devel               i386       0.99.6.2-4.el5   installed         495 k

Transaction Summary
=============================================================================
Install      0 Package(s)
Update       0 Package(s)
Remove       1 Package(s)  <==还好,并没有属性相依的问题,单纯移除一个软件

Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing   : pam-devel                    ######################### [1/1]

Removed: pam-devel.i386 0:0.99.6.2-4.el5
Complete!


连移除也这么简单!看来,似乎不需要 rpm 这个命令也能够快乐的安装所有的软件了! 虽然是如此,但是 yum 毕竟是架构在 rpm 上面所发展起来的,所以,鸟哥认为你还是得需要了解 rpm 才行!不要学了 yum 之后就将 rpm 的功能忘记了呢!切记切记!

yum 的配置档

虽然 yum 是你的主机能够连线上 Internet 就可以直接使用的,不过,由於 CentOS 的映射站台可能会选错, 举例来说,我们在台湾,但是 CentOS 的映射站台却选择到了大陆北京或者是日本去,有没有可能发生啊! 有啊!鸟哥教学方面就常常发生这样的问题,要知道,我们连线到大陆或日本的速度是非常慢的呢!那怎办? 当然就是手动的修改一下 yum 的配置档就好罗!

在台湾,CentOS 的映射站台主要有高速网络中心与义首大学,鸟哥近来比较偏好高速网络中心, 似乎升级的速度比较快,而且连接台湾学术网络也非常快速哩!因此,鸟哥底下建议台湾的朋友使用高速网络中心的 ftp 主机资源来作为 yum 服务器来源喔!目前高速网络中心对於 CentOS 所提供的相关网址如下:

http://ftp.twaren.net/Linux/CentOS/5/
如果你连接到上述的网址后,就会发现里面有一堆连结,那些连结就是这个 yum 服务器所提供的容器了! 所以高速网络中心也提供了 addons, centosplus, extras, fasttrack, os, updates 等容器,最好认的容器就是 os (系统默认的软件) 与 updates (软件升级版本) 罗!由於鸟哥在我的测试用主机是利用 i386 的版本, 因此那个 os 再点进去就会得到如下的可提供安装的网址:

http://ftp.twaren.net/Linux/CentOS/5/os/i386/
为什么在上述的网址内呢?有什么特色!最重要的特色就是那个『 repodata 』的目录!该目录就是分析 RPM 软件后所产生的软件属性相依数据放置处!因此,当你要找容器所在网址时, 最重要的就是该网址底下一定要有个名为 repodata 的目录存在!那就是容器的网址了! 其他的容器正确网址,就请各位看倌自行寻找一下喔!现在让我们修改配置档吧!


[root@www ~]# vi /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5


接下来当然就是给他测试一下罗!如何测试呢?再次使用 yum 即可啊!

范例一:列出目前 yum server 所使用的容器有哪些?
[root@www ~]# yum repolist all
repo id         repo name                  status
addons          CentOS-5 - Addons          enabled
base            CentOS-5 - Base            enabled
c5-media        CentOS-5 - Media           disabled
centosplus      CentOS-5 - Plus            disabled
extras          CentOS-5 - Extras          enabled
updates         CentOS-5 - Updates         enabled
# 上面最右边有写 enabled 才是有启动的!由於 /etc/yum.repos.d/
# 有多个配置档,所以你会发现还有其他的容器存在。


全系统自动升级

我们可以手动选择是否需要升级,那能不能让系统自动升级,让我们的系统随时保持在最新的状态呢? 当然可以啊!透过『 yum -y update 』来自动升级,那个 -y 很重要,因为可以自动回答 yes 来开始下载与安装! 然后再透过 crontab 的功能来处理即可!假设我每天在台湾时间 3:00am 网络频宽比较轻松的时候进行升级, 你可以这样做的:

[root@www ~]# vim /etc/crontab
....(前面省略并保留配置值)....
0  3 * * * root /usr/bin/yum -y update


从此你的系统就会自动升级啦!很棒吧!此外,你还是得要分析登录档与收集 root 的信件的, 因为如果升级的是核心软件 (kernel),那么你还是得要重新启动才会让安装的软件顺利运行的! 所以还是得分析登录档,若有新核心安装,就重新启动,否则就让系统自动维持在最新较安全的环境吧! 真是轻松愉快的管理啊!

这个模拟题的目的是想要安装一套较为完整的 WWW 服务器,并且此服务器可以支持外挂的其他网页服务器模块。 所以需要安装的就会有网页程序语言 php 与数据库软件 MySQL ,以及未来开发用的 php-devel, httpd-devel 等软件。 整个流程会有点像这样:

1.检查所需要的软件是否存在?最好直接使用 rpm ,因为可以直接取得 RPM 的数据库内容:

[root@www ~]# rpm -q httpd httpd-devel php php-devel php-mysql
httpd-2.2.3-22.el5.centos
package httpd-devel is not installed  <==没有安装的软件!
php-5.1.6-23.el5
package php-devel is not installed    <==没有安装的软件!
package php-mysql is not installed    <==没有安装的软件!


经过上面的分析,我们知道 httpd-devel, php-devel, php-mysql 等软件并没有安装!那么该如何安装 可以使用 yum 直接线上安装。不过我们必须要先有网络才行!

2.确认网络的可行性:

[root@www ~]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 08:00:27:11:3B:75
          inet addr:192.168.201.201  Bcast:192.168.201.255  Mask:255.255.255.0
....(底下省略)....
# 你可以看到我们的主机是有 IP 存在的!再来看看有没有路由配置存在?

[root@www ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.201.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         192.168.201.254 0.0.0.0         UG    0      0        0 eth0
# 确实是有路由器 (Gateway) 存在的!那么该路由器是否配置正确呢?

[root@www ~]# ping -c 2 192.168.201.254
PING 192.168.201.254 (192.168.201.254) 56(84) bytes of data.
64 bytes from 192.168.201.254: icmp_seq=1 ttl=64 time=0.325 ms
64 bytes from 192.168.201.254: icmp_seq=2 ttl=64 time=0.281 ms
# 路由器有回应!表示可以连接到路由器!那么 TCP/IP 设好了,
# 但是主机名称解析器统 (DNS) 该如何处理?

[root@www ~]# dig www.google.com

; <<>> DiG 9.3.4-P1 <<>> www.google.com
;; global options:  printcmd
....(中间省略)....
;; QUESTION SECTION:
;www.google.com.                        IN      A
....(中间省略)....
;; ANSWER SECTION:
www.google.com.         522933  IN      CNAME   www.l.google.com.
www.l.google.com.       107     IN      A       72.14.203.103
....(中间省略)....
;; Query time: 5 msec
;; SERVER: 120.114.150.1#53(120.114.150.1)
;; WHEN: Fri Sep 18 13:14:45 2009
;; MSG SIZE  rcvd: 340
# 确实有查到 Google 的 IP ,且是由 120.114.150.1 那部 DNS 主机帮忙解析的!


3.网络配置妥当之后,那我们就能够直接使用 yum 罗!可以这样直接进行安装的:

[root@www ~]# yum install httpd httpd-devel php php-devel php-mysql


然后接著一步一步进行安装即可。

转自:http://vbird.dic.ksu.edu.tw/linux_basic/0520rpm_and_srpm_4.php
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    可用于yum命令升级的软件仓库地址

    在Linux系统管理中,`yum`(Yellowdog Updater, Modified)是一个强大的包管理器,用于自动处理软件包的安装、升级、查询、卸载等任务。它通过连接到特定的软件仓库,从那里获取软件包及其依赖关系,确保系统的无缝...

    yum安装和更新mysql

    ### yum安装和更新MySQL知识点详解 #### 一、概述 在Linux环境中,使用`yum`(Yellowdog Updater Modified)工具来安装和更新MySQL数据库是非常常见的做法。`yum`是Red Hat系列Linux发行版(包括CentOS、Fedora等...

    red hat linux yum升级包

    red hat linux yum升级包,含安装说明和必须的文件

    python升级2.7后导致yum无法使用还原包

    当您尝试在CentOS 6.5上升级Python 2.6到2.7后发现`yum`无法正常工作时,这通常是由于`yum`和其他系统工具仍然依赖于Python 2.6导致的。升级Python可能会覆盖或破坏这些依赖关系,使得`yum`无法找到正确的Python解释...

    CentOS 通过yum来升级php到php5.6

    为了能够通过 YUM 获取 PHP5.6,我们需要添加一个支持 PHP5.6 的第三方仓库,这里选择使用 Remi EPEL 仓库。如果还没有安装过任何第三方仓库,则可以通过以下命令来安装 Remi EPEL RPM 源: ```bash wget ...

    centos下用yum升级的包

    epel-release-5-3.noarch.rpm remi-release-5-7.el5.remi.noarch.rpm 两个yum用的升级包

    yum安装包(yum.7z )

    本文将围绕“yum安装包”这一主题,详细介绍其基本原理以及提供的组件,帮助读者深入理解yum的工作机制。 首先,让我们看看“yum.7z”这个压缩包中的四个关键文件: 1. `yum-3.2.29-40.el6.centos.noarch.rpm`:这...

    Centos7环境下Nginx版本升级方式及步骤

    在CentOS7环境中,对Nginx进行版本升级是一个重要的任务,这可能是因为新版本提供了更多的功能、性能优化或安全修复。本篇文章将详细介绍两种在CentOS7上升级Nginx的方法:YUM upgrade和源码平滑升级,并提供相关的...

    yum.rar离线资源yum包

    在Linux系统管理中,`yum`(Yellowdog Updater, Modified)是一个基于RPM包管理的工具,它使得安装、更新、卸载软件变得非常简单。`yum`通过网络连接从指定的仓库下载并安装软件包,极大地简化了Linux系统维护的过程...

    yum命令介绍(升级、安装、删除)

    本文将详细介绍Yum的基本操作,包括软件的安装、升级、卸载以及查询功能。 ## 1. 安装软件 ### 1.1 网络安装 通过Yum,我们可以从远程仓库直接下载并安装软件。例如,要安装`httpd`服务,只需在终端输入: ```...

    CentOS yum 升级php 5.2.6

    要升级PHP,首先我们需要添加一个第三方仓库,因为CentOS的默认仓库可能不包含较新的PHP版本。在提供的描述中,可以看到操作者导入了一个GPG密钥,并编辑了`/etc/yum.repos.d/utterramblings.repo`文件来配置新的...

    yum命令的使用总结

    yum的主要功能是自动化安装、更新、删除和管理RPM软件包,支持仓库管理机制,以及提供了一组程序、库和文档。它允许用户和系统管理员通过命令行界面快速方便地更新系统。yum还支持依赖性解析,可以自动安装依赖的...

    yum源配置讲解

    二、yum的配置 yum的配置分为客户端和服务端两部分,服务端上存放了RPM软件、依赖关系文件和分组关系文件;客户端上需要配置yum设置,把服务端配置成yum源,让其从服务端下载依赖关系数据文件和分组关系数据文件,...

    redhat7.X 升级yum安装包.zip

    在Red Hat Enterprise Linux 7(RHEL 7)系统中,`yum` 是一个重要的包管理器,用于安装、更新和管理软件包。这个压缩包文件 "redhat7.X 升级yum安装包.zip" 提供了升级 `yum` 和相关组件的必要资源。下面是关于 `...

    使用yum安装g++

    对于基于RPM(Red Hat Package Manager)的Linux发行版,如Red Hat Enterprise Linux、CentOS等,`yum`(Yellowdog Updater Modified)是一个非常重要的工具,它允许用户在系统上搜索、安装、更新或删除软件包。...

    解决yum对python依赖版本问题

    如果条件不允许升级`yum`,那么修改解释器设置也是一个不错的选择。不过需要注意的是,在修改之前最好备份原有文件,以便在出现问题时能够迅速恢复。希望这些解决方案能帮助大家顺利解决遇到的相关问题。

    linux下yum的使用

    #### 二、YUM概述 YUM是一种自动化工具,用于在基于RPM的Linux发行版上安装、更新和卸载软件包。它最初由Yellow Dog Linux项目开发,后经杜克大学改进,并被纳入Fedora Core和Red Hat Enterprise Linux等发行版中...

    yum 自动更新下载

    `yum`是一个基于RPM包管理的工具,它简化了软件包的安装、升级和查询过程,尤其在CentOS、Red Hat Enterprise Linux等发行版中广泛使用。 `yum`的主要优点在于它可以自动处理软件包之间的依赖关系,用户无需手动...

Global site tag (gtag.js) - Google Analytics