您的位置主页 > 系统管理

CentOS下的软件包管理--yum篇

CentOS下的软件包管理--yum篇

YUM介绍
在CentOS和Fedora Core得发行版中,采用了一种叫做yum得软件包综合管理工具,它的全称是Yellowdog Updater,Modified,这个工具并不是CentOS开发的,而是由Yellow Dog Linux开发的软件包综合管理工具。作为软件包综合管理工具除了yum外,还有DebianGNU/Linux所采用的APT和Red Hat Enterprise Linux等所采用的up2date(在RHEL5开始采用了YUM的软件包管理)。
它们的共同特点是:
・通过网络安装和升级软件包
・自动解决软件包间的依存关系
※这里请注意,Yum的软件包升级的软件包并非是最新的软件,它是基于RPM软件包形式的软件,是CentOS(RHEL)确认的安全稳定包。要安装最新的软件,最好采用编译安装的方式。


★Yum利用准备
在使用yum之前,最基本的事情就是要先导入GPG公开key,更改还有就是软件包下载的网站(yum配置文件中定义的软件包下载地址)。

※GPG公开key
RPM软件包都有电子签名,用这个电子签名来判断软件包有没有被篡改,数据有无破损是否完整,正因为这样才要导入开发组织配布的GPG公开key。那这个GPG公开key可以从软件包发布站和CD-ROM/DVD-ROM获得,在系统下被默认安装在/usr/share/doc/centos-release-4/RPM-GPG-KEY下,这里还有一个一模一样的文件/usr/share/doc/centos-release-4/RPM-GPG-KEY-centos4。倘若你只是利用centos.org的镜像站点的话,那么这个公开key是默认被导入了的,在我们的网站上面你可以看到,非官方库利用的时候,我们也导入了这个GPG公开key,参照[url=http://www.centospub.com/make/newenv.html][color=#0000ff]http://www.centospub.com/make/newenv.html[/color][/url]下的定义非官方库的操作。
★导入GPG的公开key的方法:
#rpm –import GPGkey的路径或网络文件(注意空格)
★更新软件包下载镜像地址的设定
Cent0S的镜像下在网站分布在世界的很多地方,默认的设定是centos.org,中国镜像分布在中国的上海,香港还有福建。修改软件包下载镜像站点是为了提高软件包下载速度。(也可以通过文章下面提到的“自动选择镜像”的方法)
Yum的设定文件是/etc/yum.repos.d/CentOS-Base.repo。关于站点更改的内容请参照本站问题解答版主Chao的“CentOS终于有了中国镜像!”的文章。
※在这里提醒更改文件设置的用户,一定要将原文件作备份后再修改。或者将原来的文件内容注释掉,而不是删除或覆盖原设置。并在文件中加以注释,比如什么时间更改的,由谁更改的,更改的内容等信息,这对系统的管理维护有好处。(任何修改都必须是可还原的,并且是通过运行测试的)
在本站的问题解答区块中,就出现过几次类似的,谁能给我这个文件,那个文件的情况。原因就是未做好备份工作,没有良好的系统管理意识(不是习惯)。

★使用yum更新软件包
在本站的配置祥解中,大家多次看到我们采用了yum安装软件的内容。
关于使用yum的详细信息,大家可以参照fedore.clinux.org的使用yum管理软件的文档。
英文好些的人可以直接在系统下#man yum,查看帮助信息。`

★常用的yum参数选项・使用方法
升级:复制内容到剪贴板代码:#yum check-update
#yum update 软件包(单个软件包升级)
#yum -y update 软件包(升级所有的可升级的软件包)
※(功能同上,-y表示同意所有,比在一次次的确认,因为软件包友依赖关系,删除是有可能删除很多的软件包,不用一次次确认。体会一下)

删除:复制内容到剪贴板代码:#yum remove 软件包名
#yum -y remove 软件包
安装:复制内容到剪贴板代码: #yum install 软件包名
#yum -y install 软件包
软件包组件确认:复制内容到剪贴板代码: #yum grouplist (确认软件包组,安装过的软件包,为安装的软件包)
#yum groupinstall "软件包组" (安装可安装的软件包组群)
例: #yum -y groupinstall "X Window System" (安装基本的窗口系统)
其他:


★yum 应用
安装新的软件仓库(Repository)
功能:

基本的软件仓库(CentOS软件包库?)虽然有丰富的软件,但是有些是没有的。
我们通过安装其它的软件仓库来解决基本软件仓库中未包括的,实际存在的软件包问题。
CentOS4:
复制内容到剪贴板代码:# wget [url=http://dag.wieers.com/packages/r][color=#0000ff]http://dag.wieers.com/packages/r[/color][/url] ... 6-1.el4.rf.i386.rpm
#rpm -Uhv rpmforge-release-0.3.6-1.el4.rf.i386.rpm

CentOS5:
复制内容到剪贴板代码:
# wget [url=http://dag.wieers.com/packages/r][color=#0000ff]http://dag.wieers.com/packages/r[/color][/url] ... 6-1.el5.rf.i386.rpm
# rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.i386.rpm

如果有问题的对策(仅供参考):
复制内容到剪贴板代码:
# vi /etc/yum.repos.d/rpmforge.repo

enabled = 1

enabled = 0 ← 变更为0,为了避免和基本的软件仓库的竞争

使用法:
复制内容到剪贴板代码: # yum -y --enablerepo=rpmforge install 软件包 ← 软件包安装(在基本软件仓库中没有的软件包安装)

★fastestmirror插件安装
功能:


让软件包在线下载时自动选择最合适的镜像站点。(不知道中国管不管用,未测试)
复制内容到剪贴板代码: # yum -y install yum-fastestmirror

★代理服务器设置:复制内容到剪贴板代码:# vi /etc/yum.conf
proxy=http:// 服务器IP:端口 ← 最后一行添加

★停止更新通知進程


理由:

占用大量的内存,一个小时更新确认一次......

※不建议启动自动更新,而采用手动更新的方式。并且建议设定更新运行确认服务器(test用)。
复制内容到剪贴板代码:
# /etc/rc.d/init.d/yum-updatesd stop 
# chkconfig yum-updatesd off

★通过yum更新软件包的例外设置

如果系统存在的一些软件包有版本的依存问题,那么我们不能够,也不会轻易的升级它们(除非你做过完善的测试工作)。我们可以告诉yum在更新时不更新谁。
复制内容到剪贴板代码:
[root@centos ~]# vi /etc/yum.conf ←编辑yum设置文件
# 在文件的最后追加
exclude=openssh* ←这里是不更新openssh相关的设置
exclude=httpd  ←不更新httpd