【Linux学习笔记十九】软件管理工具yum

一、 Linux系统中安装软件的三种方法
在Linux系统中安装软件有三种方法:源代码安装、RPM包安装、YUM安装。
源码安装 :这种方法虽然古老并且复杂,但仍然有很多人在用。这是由于在Linux系统中使用的绝大多数软件都是开源软件,软件作者在发布软件时直接提供的就是软件的源代码。用户在取得应用软件的源码文件后,可以根据自身需求对软件进行修改或定制,然后在自己的系统上重新编译,即可生成能在该系统上执行的程序文件。通过源码安装,用户可以获得最新的应用程序,可以定制更灵活、丰富的功能,而且使软件可以跨越计算机平台,在所有版本的Linux系统中都能使用。但源码安装方式过于复杂,耗时又长,对用户的软件开发能力要求也比较高。
RPM(RedHat Packet Manager)的软件包管理系统 :RPM是一种已经编译并封装好的软件包,用户可以直接安装使用。通过RPM,用户可以更加轻松方便地管理系统中的所有软件。RPM软件包只能在使用RPM机制的Linux操作系统中使用,如RHEL、Fdeora、Suse等。在Linux世界中,还有另外一种名为DEB的软件包管理机制,可以在Debian、Ubuntu等系统中使用。相比较而言,还是RPM安装包应用更为广泛,基本已成为Linux系统中软件安装包事实上的标准。
YUM(Yellow dog Updater,Modified)安装:RPM软件包之间存在着复杂的依赖关系。在多数情况下,一个软件都是由多个相互依赖的RPM软件包组成的,而大部分的RPM包又有相互之间的依赖关系。例如,安装A软件需要B软件的支持,而安装B软件又需要C软件的支持,那么在安装A软件之前,必须先安装C软件,再安装B软件,最后才能安装A,有时甚至还可能会出现死循环。所以后来又出现了一种更加简单、更加人性化的软件安装方法,这就是YUM安装。是一个基于RPM却胜于RPM的软件管理工具,它的最大优点是可以自动解决RPM软件包间的依赖性问题,从而可以更轻松的管理Linux系统中的软件。从RHEL5开始,Red Hat就推荐用yum作为软件安装的首选方式。
可以同时配置多个资源库(Repository) ,简洁的配置文件(/etc/yum.conf) ,自动解决增                       加或删除rpm包时遇到的倚赖性问题,使用方便,保持与RPM数据库的一致性

二、yum源安装
1.检查是否已经安装yum这个rpm包
[root@RHEL6 /root]$rpm -qa |grep yum
或者
[root@RHEL6 /root]$yum --version
2.安装yum源
1、修改配置文件
2、导入GPG KEY
CentOS安装盘中自带了yum安装包(yum-*.noarch.rpm)
#rpm -ivh yum-*.noarch.rpm
在第一次启用yum之前首先需要导入系统的RPM-GPG-KEY:
#rpm --import /usr/share/doc/centos-release-3(4)/RPM-GPG-KEY-CentOS-3(4)
导入每个reposity的GPG key,um可以使用gpg对包进行校验,确保下载包的完整性,所以我们先要到各个repository站点找到gpg key,一般都会放在首页的醒目位置,一些名字诸如 RPM-GPG-KEY.txt之类的纯文本文件,把它们下载,然后用rpm --import xxx.txt命令将它们导入,最好把发行版自带GPG-KEY也导入。rpm --import /usr/share/doc/redhat-release-*/RPM-GPG-KEY 官方软件升级用的上。
由于 redhat的yum在线更新是收费的,如果没有注册的话不能使用,如果要使用,需将redhat的yum卸载后,重启安装,再配置其他源
Ⅰ.删除redhat原有的yum
rpm -aq|grep yum|xargs rpm -e --nodeps
Ⅱ.下载yum安装文件
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-3.2.27-14.el6.centos.noarch.rpm
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-metadata-parser-1.1.2-14.1.el6.x86_64.rpm
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.26-11.el6.noarch.rpm
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/python-iniparse-0.3.1-2.1.el6.noarch.rpm
Ⅲ.进行安装yum
rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm
rpm -ivh yum-metadata-parser-1.1.2-14.1.el6.x86_64.rpm
rpm -ivh yum-3.2.27-14.el6.centos.noarch.rpm um-plugin-fastestmirror-1.1.26-11.el6.noarch.rpm
注意最后两个包必需同时安装,否则会相互依赖
或者直接通过RPM安装:rpm -ivh yum-2.4.3-4.el4.centos.noarch.rpm
Ⅳ.更新repo文件
设置yum源需要配置定义文件,定义文件必须存放在指定的“/etc/yum.repos.d/”目录中,而且必须以“.repo”作为扩展名。
mv /etc/yum.repos.d/rhel-debuginfo.repo /etc/yum.repos.d/rhel-debuginfo.repo.repo.bak
vi /etc/yum.repos.d/rhel-debuginfo.repo
配置网络上163的yum源

#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.163.com/centos/6.0/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6

#packages used/produced in the build but not released
#[addons]
#name=CentOS-$releasever - Addons
#baseurl=http://mirrors.163.com/centos/$releasever/addons/$basearch/
#gpgcheck=1
#gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirrors.163.com/centos/6.0/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://mirrors.163.com/centos/6.0/centosplus/$basearch/
gpgcheck=1
enabled=0

Ⅴ.清除缓存
yum clean all

Ⅵ.测试
yum list
          该命令可以列出系统中已经安装的以及yum源中所有的软件包。
配置本地yum源
Ⅰ.挂载光盘:
mount /dev/cdrom /mnt/cdrom
Ⅱ.配置yum源定义文件
[dvd]      
name=Rhel6 dvd
baseurl=file://mnt/cdrom
enabled=1
gpgcheck=1        
gpgkey= file://etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
当第一次使用yum或yum资源库有更新时,yum会自动下载所有所需的headers放置                                      于/var/cache/yum目录下,所需时间可能较长.
三、yum使用
参       数:-y 直接安装,不需要询问
                  -t 忽略已装过的包,不再提示错误
特      点:可以同时配置多个资源库(Repository) ,简洁的配置文件(/etc/yum.conf) ,自动解决增                       加或删除rpm包时遇到的倚赖性问题,使用方便,保持与RPM数据库的一致性,var/cache/yum为yum默认存储下载的rpm包和数据库选项keepcache值为1为保存 0为不保存,默认不保存选项metadata_expire为过期时间
四、配置文件yum.con


[main]
cachedir=/var/cache/yum         yum缓存的目录,yum在此存储下载的rpm包和数据库
debuglevel=2                            除错级别,0-10,默认是2。
logfile=/var/log/yum.log            yum的日志文件,默认是/var/log/yum.log
pkgpolicy=newest                     包的策略。一共有两个选项,newest和last,这个作用是如果你                                                   设置了多个repository,而同一软件在不同的repository中同时存
在,yum应该安装哪一个,如果是newest,则yum会安装最新的个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个服务器上的软件安装。一般都是选newest。
distroverpkg=redhat-release          指定一个软件包,yum会根据这个包判断你的发行版本,默认                                               是redhat-release,也可以是安装的任何针对自己发行版的rpm包。
tolerant=1         也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如                           你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum不会出现错                           误信息。默认是0
exactarch=1         有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为                                 1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级。
retries=1    网络连接发生错误后的重试次数,如果设为0,则会无限重试。

xclude=         排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这                       个对于安装了诸如美化包,中文补丁的朋友特别有用。
gpgchkeck=1    有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认好像                             也是检查的。

[base]
name=Fedora Core $releasever - $basearch - Base
baseurl=http://download.atrpms.net/mirrors/fedoracore/$releasever/$basearch/os
http://rpmfind.net/linux/fedora/cor...er/$basearch/os
http://mirror.clarkson.edu/pub/dist...er/$basearch/os

[updates-released]
name=Fedora Core $releasever - $basearch - Released Updates
baseurl=http://download.atrpms.net/mirrors/fedoracore/updates/$releasever/$basearch
http://redhat.linux.ee/pub/fedora/l...sever/$basearch
http://fr2.rpmfind.net/linux/fedora...sever/$basearch

[Fedora.us]
name=Fedora.us - $basearch - Extras
baseurl=http://fedora.linux.duke.edu/fedorax86_64/fedora.us/$releasever/$basearch/RPMS.stable

[Dag Wieers]
name=Dag RPM Repository for Fedora Core
baseurl=http://apt.sw.be/fedora/$releasever/en/$basearch/dag

[Livna]
Name=Livna RPM, Fedora Core $releasever - $basearch
baseurl=http://rpm.livna.org/fedora/$releasever/$basearch/RPMS.stable

[freshrpms]
name=FreshRPMs
baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms/
http://ftp.us2.freshrpms.net/linux/...arch/freshrpms/

[serverid]            用于区别各个不同的repository,必须有一个独一无二的名称
name=Some name for this server       是对repository的描述,支持像$releasever $basearch这样                                                               的变量
baseurl=url://path/to/repository/        是服务器设置中最重要的部分,只有设置正确,才能从上                                                                面获取软件它的格式是:
    1. baseurl=url://server1/path/to/repository/
                                                            2. url://server2/path/to/repository/
                                                            3. url://server3/path/to/repository/
其中url支持的协议有 http:// ftp:// file://三种。baseurl后可以跟多个url,你可以自己改为速度比较快的镜像站,但baseurl只能有一个,也就是说不能像如下格式:

1. baseurl=url://server1/path/to/repository/
2. baseurl=url://server2/path/to/repository/
3. baseurl=url://server3/path/to/repository/

其中url指向的目录必须是这个repository header目录的上一级,它也支持$releasever $basearch这样的变量。
url之后可以加上多个选项,如gpgcheck、exclude、failovermethod等,比如:

1. [updates-released]
2. name=Fedora Core $releasever - $basearch - Released Updates
3. baseurl=http://download.atrpms.net/mirrors/fedoracore/updates/$releasever/$basearch
4. http://redhat.linux.ee/pub/fedora/linux/core/updates/$releasever/$basearch
5. http://fr2.rpmfind.net/linux/fedora/core/updates/$releasever/$basearch
6. gpgcheck=1
7. exclude=gaim
8. failovermethod=priority

其中gpgcheck,exclude的含义和[main]部分相同,但只对此服务器起作用,failovermethode 有两个选项roundrobin和priority,意思分别是有多个url可供选择时,yum选择的次序,roundrobin是随机选择,如果连接失 败则使用下一个,依次循环,priority则根据url的次序从第一个开始。如果不指明,默认是roundrobin。
几个变量
$releasever,发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。
$arch,cpu体系,如i686,athlon等
$basearch,cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。



五、软件安装与卸载
范例:安装telent-server的软件
# yum install telnet-server

yum会自动检查软件包之间的依赖关系,可以发现要安装telnet-server,还必须要安装一个依赖包xinetd。系统询问是否确认安装这两款软件,输入“y”,按下回车键,就可以开始安装了。软件如果正确安装,在最后将出现“Complete!”的提示。
卸载telent-server的软件
按“y”确认之后,就可以将软件卸载掉了。
六、常用命令组合
#yum check-update             检查可更新包
# yum update
更新所有包
                  # yum update kernel 更新指定包:kernel
                   #yum install httpd 安装指定软件
                   #yum -y install httpd
#yum remove httpd
删除软件apache
#yum info packagename   获取软件包信息
#yum provides  packagename 列出软件包包含的文件

yum暂存(/var/cache/yum/)的相关参数
#yum clean packages  清除暂存中rpm包文件
#yum clearn headers  清除暂存中rpm头文件
#yum clean oldheaders  清除暂存中旧的rpm头文件
#yum clearn 或#yum clearn all  清除暂存中旧的rpm头文件和包文件
注:相当于yum clean packages + yum clean oldheaders
包列表
#yum list 列出资源库中所有可以安装或更新的rpm包
#yum list mozilla#yum list mozilla* 列出资源库中特定的可以安装或更新以及已经安装的               rpm包
注:可以在rpm包名中使用匹配符,如列出所有以mozilla开头的rpm包
#yum list updates 列出资源库中所有可以更新的rpm包
#yum list installed 列出已经安装的所有的rpm包
#yum list extras 列出已经安装的但是不包含在资源库中的rpm包
注:通过其它网站下载安装的rpm包

rpm包信息显示(info参数同list)
#yum info 列出资源库中所有可以安装或更新的rpm包的信息
#yum info mozilla#yum info mozilla* 列出资源库中特定的可以安装或更新以及已经安装的rpm包的信息
注:可以在rpm包名中使用匹配符,如列出所有以mozilla开头的rpm包的信息
#yum info updates 列出资源库中所有可以更新的rpm包的信息
#yum info installed 列出已经安装的所有的rpm包的信息
#yum info extras 列出已经安装的但是不包含在资源库中的rpm包的信息
注:通过其它网站下载安装的rpm包的信息

搜索rpm包
#yum search mozilla 搜索匹配特定字符的rpm包
注:在rpm包名,包描述等中搜索
#yum provides realplay 搜索有包含特定文件名的rpm包
七、yum常用问题解决
1、如果网速慢的话可以通过增加yum的超时时间,这样就不会总是因为超时而退出。
#vi /etc/yum.conf
#加上这么一句
timeout=120
2、yum Existing lock错误的解决办法
如果系统启动的时候, yum出现Existing lock /var/run/yum.pid: another copy is running as pid 3380. Aborting.可以用下面的办法解决:
方法一
etc/init.d/yum-updatesd stop
方法二
#rm -f /var/run/yum.pid
主要原因就是yum在自动更新,只要关掉它就可以了。

补充:加速yum更新速度
安装yum的fast mirror插件,可以加快 CentOS/RHEL yum的速度和提高稳定性,效果显著。
centos5
#yum -y install yum-fastestmirror
centos4
yum -y install yum-plugin-fastestmirror


你可能感兴趣的:(yum)