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

来源:互联网 发布:重庆大数据培训 编辑:程序博客网 时间:2024/05/17 20:13
我们在本章一开始的地方谈到过 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 mdadmInstalled 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 raidtoolspackage.  However, mdadm is a single program, and it can performalmost all functions without a configuration file, though a configurationfile can be used to help with some common tasks.# 不要跟我说,上面说些啥?自己找字典翻一翻吧!拜托拜托!范例三:列出 yum 服务器上面提供的所有软件名称[root@www ~]# yum listInstalled Packages <==已安装软件Deployment_Guide-en-US.noarch            5.2-9.el5.centos       installedDeployment_Guide-zh-CN.noarch            5.2-9.el5.centos       installedDeployment_Guide-zh-TW.noarch            5.2-9.el5.centos       installed....(中间省略)....Available Packages <==还可以安装的其他软件Cluster_Administration-as-IN.noarch      5.2-1.el5.centos       baseCluster_Administration-bn-IN.noarch      5.2-1.el5.centos       base....(底下省略)....# 上面提供的意义为:『 软件名称   版本   在那个容器内 』范例四:列出目前服务器上可供本机进行升级的软件有哪些?[root@www ~]# yum list updates  <==一定要是 updates 喔!Updated PackagesDeployment_Guide-en-US.noarch            5.2-11.el5.centos      baseDeployment_Guide-zh-CN.noarch            5.2-11.el5.centos      baseDeployment_Guide-zh-TW.noarch            5.2-11.el5.centos      base....(底下省略)....# 上面就列出在那个容器内可以提供升级的软件与版本!范例五:列出提供 passwd 这个文件的软件有哪些[root@www ~]# yum provides passwdpasswd.i386 : The passwd utility for setting/changing passwords using PAMpasswd.i386 : The passwd utility for setting/changing passwords using PAM# 找到啦!就是上面的这个软件提供了 passwd 这个程序!


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

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

[root@www ~]# yum list pam*Installed Packagespam.i386                  0.99.6.2-3.27.el5      installedpam_ccreds.i386           3-5                    installedpam_krb5.i386             2.2.14-1               installedpam_passwdqc.i386         1.0.2-1.2.2            installedpam_pkcs11.i386           0.5.3-23               installedpam_smb.i386              1.1.7-7.2.1            installedAvailable Packages <==底下则是『可升级』的或『未安装』的pam.i386                  0.99.6.2-4.el5         basepam-devel.i386            0.99.6.2-4.el5         basepam_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-develSetting up Install ProcessParsing package install argumentsResolving 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 updatedfilelists.xml.gz          100% |=========================| 1.6 MB    00:05filelists.xml.gz          100% |=========================| 138 kB    00:00-> Finished Dependency ResolutionDependencies Resolved============================================================================= Package                 Arch       Version          Repository        Size=============================================================================Installing: pam-devel               i386       0.99.6.2-4.el5   base              186 kUpdating: pam                     i386       0.99.6.2-4.el5   base              965 kTransaction Summary=============================================================================Install      1 Package(s)  <==结果发现要安装此软件需要升级另一个相依的软件Update       1 Package(s)Remove       0 Package(s)Total download size: 1.1 MIs 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:01Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning Transaction <==开始安装!  Updating  : pam                          ######################### [1/3]  Installing: pam-devel                    ######################### [2/3]  Cleanup   : pam                          ######################### [3/3]Installed: pam-devel.i386 0:0.99.6.2-4.el5Updated: pam.i386 0:0.99.6.2-4.el5Complete!


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

移除功能:yum [remove] 软件

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

[root@www ~]# yum remove pam-develSetting up Remove ProcessResolving Dependencies  <==同样的,先解决属性相依的问题--> Running transaction check---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be erased--> Finished Dependency ResolutionDependencies Resolved============================================================================= Package                 Arch       Version          Repository        Size=============================================================================Removing: pam-devel               i386       0.99.6.2-4.el5   installed         495 kTransaction Summary=============================================================================Install      0 Package(s)Update       0 Package(s)Remove       1 Package(s)  <==还好,并没有属性相依的问题,单纯移除一个软件Is this ok [y/N]: yDownloading Packages:Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning Transaction  Erasing   : pam-devel                    ######################### [1/1]Removed: pam-devel.i386 0:0.99.6.2-4.el5Complete!


连移除也这么简单!看来,似乎不需要 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 - Basemirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/gpgcheck=1gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5


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

范例一:列出目前 yum server 所使用的容器有哪些?[root@www ~]# yum repolist allrepo id         repo name                  statusaddons          CentOS-5 - Addons          enabledbase            CentOS-5 - Base            enabledc5-media        CentOS-5 - Media           disabledcentosplus      CentOS-5 - Plus            disabledextras          CentOS-5 - Extras          enabledupdates         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-mysqlhttpd-2.2.3-22.el5.centospackage httpd-devel is not installed  <==没有安装的软件!php-5.1.6-23.el5package php-devel is not installed    <==没有安装的软件!package php-mysql is not installed    <==没有安装的软件!


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

2.确认网络的可行性:

[root@www ~]# ifconfig eth0eth0      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 -nKernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use Iface192.168.201.0   0.0.0.0         255.255.255.0   U     0      0        0 eth00.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.254PING 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 ms64 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
0 0
原创粉丝点击