程序包管理之yum
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序包管理之yum相关的知识,希望对你有一定的参考价值。
软件的升级是对软件功能的改进和安全性的升级,与windows系统类似,linux操作系统下也需要对软件进行定期的更新升级,保持软件始终处于最新状态。Linux操作系统的升级可以分为自动升级和手动升级两种方式:自动升级一般是在有授权的linux发行版或者免费linux发行版下进行的,只要输入升级命令,系统会自动完成升级工作,无需人工干预。yum是yellowdog updater modified 的缩写,yellow dog(黄狗)也是一个 Linux 的 发行版本,只不过Redhat公司是将这种升级技术利用到自己的发行版上就形成了现在的 yum。 yum是进行linux自动升级常用的一个工具,通过yum工具配合互联网即可实现自动升级系统。例如一台经过授权的Redhat Linux操作系统,或者一台Centos Linux系统,只要你的系统能连接互联网,输入yum update 即可实现系统的自动升级。通过yum进行系统升级实质是yum命令去下载指定的远程互联网 主机上的RPM软件包,然后自动进行安装,同时解决各个软件之间的依赖关系。
手动升级是有针对性的进行某个系统软件的升级,例如升级系统的ssh登录工具、gcc编译工具等等。手动升级其实就是通过RPM包工具实现软件更新的,因此在升级软件时可能会遇到软件之间的依赖关系,升级相对比较麻烦。
下面具体讲述在Centos Linux4.4下如何设置yum工具,进行系统自动升级。
1.yum的安装与配置
(1)yum的安装
检查yum是否已经安装:
[root@localhost ~]# rpm -qa|grep yum
如果没有任何显示,表示系统中还没有安装yum工具,yum安装包在centos系统光盘中可以找到,执行如下指令进行安装:
[root@localhost ~]# rpm -ivh yum-*.noarch.rpm
安装yum需要python-elementtree、python-sqlite、urlgrabber、yumconf等软件包的支持,这些软件包在Centos Linux系统安装光盘均可找到,如果在安装yum过程中出现软件包之间的依赖性,只需按照依赖提示寻找相应软件包安装即可,直到yum包安装成功。
下面是某个环境的安装示例:
[root@localhost ~]# rpm -ivh yum-2.4.3-1.c4.noarch.rpm
warning: yum-2.4.3-1.c4.noarch.rpm: V3 DSA signature: NOKEY, key ID 443e1821
error: Failed dependencies:
python-elementtree is needed by yum-2.4.3-1.c4.noarch
python-sqlite is needed by yum-2.4.3-1.c4.noarch
urlgrabber is needed by yum-2.4.3-1.c4.noarch
yumconf is needed by yum-2.4.3-1.c4.noarch
[root@localhost ~]# rpm -ivh python-elementtree-1.2.6-4.2.1.i386.rpm
warning: python-elementtree-1.2.6-4.2.1.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821
Preparing... ########################################### [100%]
1:python-elementtree ########################################### [100%]
root@localhost ~]# rpm -ivh sqlite-3.3.3-1.2.i386.rpm
warning: sqlite-3.3.3-1.2.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821
Preparing... ########################################### [100%]
1:sqlite ########################################### [100%]
[root@localhost ~]# rpm -ivh python-sqlite-1.1.7-1.2.i386.rpm
warning: python-sqlite-1.1.7-1.2.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821
Preparing... ########################################### [100%]
1:python-sqlite ########################################### [100%]
[root@localhost ~]# rpm -ivh python-urlgrabber-2.9.8-2.noarch.rpm
warning: python-urlgrabber-2.9.8-2.noarch.rpm: V3 DSA signature: NOKEY, key ID 443e1821
Preparing... ########################################### [100%]
1:python-urlgrabber ########################################### [100%]
root@localhost ~]# rpm -ivh centos-yumconf-4-4.5.noarch.rpm
warning: centos-yumconf-4-4.5.noarch.rpm: V3 DSA signature: NOKEY, key ID 443e1821
Preparing... ########################################### [100%]
1:centos-yumconf ########################################### [100%]
[root@localhost ~]# rpm -ivh yum-2.4.3-1.c4.noarch.rpm
warning: yum-2.4.3-1.c4.noarch.rpm: V3 DSA signature: NOKEY, key ID 443e1821
Preparing... ########################################### [100%]
1:yum ########################################### [100%]
(2)yum的配置
yum工具安装完毕,接下来的工作是进行yum的配置,yum的配置文件有主配置文件/etc/yum.conf、资源库配置目录/etc/yum.repos.d,yum安装后,默认的一些资源库配置可能无法使用,因此需要进行 修改,下面是/etc/yum.repos.d/CentOS-Base.repo资源库配置文件各项的详细含义:
[root@localhost ~]#/etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-4 - Base
#name 就是发行版的名称,其格式表示“操作系统名和释出版本”,“base”是表明此段寻找的是base包信息。
baseurl=http://mirror.centos.org/centos/4/os/$basearch/
#baseurl”表示yum在互联网上查找升级文件的URL地址。其中“$basearch”代表了系统的硬件构架如“i386”、“x86-64等,同时,yum在资源更新时,会检查baseurl/repodata/repomd.xml文件。 “repomd.xml”是一个索引文件,它的作用是提供了更新rpm包文件的下载信息和SHA校验值。 “repomd.xml”包括了3个文件,分别为“other.xml.gz”、”filelists.xml.gz”和”primary.xml.gz”,表示的含义依次是“其它更新包列表”、“更新文件集中列表”和“主要更新包列表”。
gpgcheck=1
#gpgcheck表示是否启用gpg检查,1表示启用,0表示不启用校验,如果启用,就是需要在配置文件里注明GPG-RPM-KEY的位置,可以看到下面gpgkey字段,指定了GPG-RPM-KEY验证文件的位置。
#released updates
[update]
#本段是updates更新模块要用到的部分配置。
name=CentOS-4 - Updates
baseurl=http://mirror.centos.org/centos/4/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
#gpgkey指定GPG密钥的地址
#packages used/produced in the build but not released
#本段指定的是尚未发布的软件包部分(addons)配置
[addons]
name=CentOS-4 - Addons
baseurl=http://mirror.centos.org/centos/4/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
#additional packages that may be useful
#本段指定的是有用的额外软件包部分(extras)配置
[extras]
name=CentOS-4 - Extras
baseurl=http://mirror.centos.org/centos/4/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
#additional packages that extend functionality of existing packages
#本段指定的是扩展的额外软件包部分(centosplus)配置
[centosplus]
name=CentOS-4 - Plus
baseurl=http://mirror.centos.org/centos/4/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
#contrib - packages by Centos Users
#这里是contrib部分
[contrib]
name=CentOS-4 - Contrib
baseurl=http://mirror.centos.org/centos/4/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
2.yum的特点
? 安装方便,自动解决增加或删除rpm包时遇到的依赖 性问题。
? 可以同时配置多个资源库(Repository)
? 配置文件简单明了(/etc/yum.conf、/etc/yum.repos.d/CentOS-Base.repo)
? 保持与RPM数据库的一致性
注意:yum会自动下载所有所需的升级资源包并默认放置在/var/cache/yum目录下, 当第一次使用yum或yum资源库更新 时,软件升级所需的时间可能较长。
3.yum的日常用法
(1)通过yum安装和删除RPM包
? 安装rpm包,如dhcp
[root@localhost ~]#yum install dhcp
? 删除rpm包,包括与该包有依赖 性的包
[root@localhost ~]#yum remove licq
注意:同时会提示删除licq-gnome,licq-qt,licq-text
(2)通过yum工具更新软件包
? 检查可更新的rpm包:
[root@localhost ~]#yum check-update
? 更新所有的rpm包:
[root@localhost ~]#yum update
? 更新指定的rpm包,如更新kernel和kernel source:
[root@localhost ~]#yum update kernel kernel-source
? 大规模的版本升级, 与yum update不同的是, 陈旧的淘汰的包也会升级:
[root@localhost ~]#yum upgrade
(3)通过yum查询RPM包信息
? 列出资源库中所有可以安装或更新的rpm包的信息:
[root@localhost ~]#yum info
? 列出资源库中特定的可以安装或更新以及已经安装的rpm包的信息:
[root@localhost ~]#yum info vsftpd
[root@localhost ~]#yum info perl
注意:可以在rpm包名中使用匹配符, 如上面例子是列出所有以perl开头的rpm包的信息。
? 列出资源库中所有可以更新的rpm包的信息:
[root@localhost ~]#yum info updates
? 列出已经安装的所有的rpm包的信息:
[root@localhost ~]#yum info installed
? 列出已经安装的但是不包含在资源库中的rpm包的信息:
[root@localhost ~]#yum info extras
注:也就是 通过其它网站下载安装的rpm包的信息。
? 列出资源库中所有可以更新的rpm包:
[root@localhost ~]#yum list updates
? 列出已经安装的所有rpm包:
[root@localhost ~]#yum list installed
? 列出已经安装的但不包含在资源库中的rpm包:
[root@localhost ~]#yum list extras
注:也就是通过其它网站下载安装的rpm包。
? 列出资源库中所有可以安装或更新的rpm包:
[root@localhost ~]#yum list
? 列出资源库中特定的可以安装或更新以及已经安装的rpm包:
[root@localhost ~]#yum list sendmail
[root@localhost ~]#yum list gcc
注意:可以在rpm包名中使用匹配符, 如上面例子是列出所有以gcc开头的rpm包。
? 搜索匹配特定字符的rpm包的详细信息:
[root@localhost ~]#yum search wget
注意:可以通过“search”在rpm包名, 包描述中进行搜索。
? 搜索包含特定文件名的rpm包:
[root@localhost ~]#yum provides realplay
(4)通过yum操作暂存信息(/var/cache/yum)
? 清除暂存的rpm包文件:
[root@localhost ~]#yum clean packages
? 清除暂存的rpm头文件:
[root@localhost ~]#yum clean headers
? 清除暂存中旧的rpm头文件:
[root@localhost ~]#yum clean oldheaders
? 清除暂存中旧的rpm头文件和包文件:
[root@localhost ~]#yum clean 或
[root@localhost ~]#yum clean all
注意: 上面的两条命令相当于yum clean packages + yum clean oldheaders。
4.Redhat Linux下用yum升级系统
yum也可以升级Redhat Linux系统,在Redhat Linux系统安装盘中默认没有yum的安装包,由于Redhat Linux与Centos Linux基本一致,因此可以用同版本同内核的Centos Linux的yum包在Redhat Linux上进行安装。安装过程在上面章节已经讲述,这里不在多说。
由于使用的是Centos Linux的yum包在Redhat Linux下进行的安装,因此在Redhat Linux下需要增加资源库,定义yum的非官方库文件,让一些必需的软件包通过yum也能够安装。
首先建立dag.repo,定义非官方库:
[root@localhost ~]# vi /etc/yum.repos.d/dag.repo
[dag]
name=Dag RPM Repository for RHEL4
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el4/en/$basearch/dag/
enabled=1
gpgcheck=1
接着导入非官方库的GPG:
[root@localhost ~]# rpm --import \
http://ftp.riken.jp/Linux/caos/centos/RPM-GPG-KEY-centos4
注意:此步骤很重要,如果没有导入授权的RPM-GPG-KEY,在使用yum升级安装软件时就会提示软件不合法,结合上下文可以看出,在Centos下进行yum配置的时候,并没有涉及到导入RPM-GPG-KEY,那是因为连接的资源库为Centos官方的库,而升级的系统也是Centos,当然无需授权,而这里我们升级的系统是Redhat Linux,而用的资源文件是Centos的,所以必须导入Centos的RPM-GPG-KEY,系统才认为升级的包是合法的。
最后,就可以使用非官方定义的rpm包升级系统:
[root@localhost ~]#yum update
以上是关于程序包管理之yum的主要内容,如果未能解决你的问题,请参考以下文章