用yum管理软件
Stuart Ellis
Copyright (c) 2005 Stuart Ellis
法律事项
修订记录
--------------------------------------------------------------------------------
1. 简介
1.1. 文档目的
1.2. 阅读对象
1.3. 使用本文档
1.4. 附加资源
2. 软件管理概念
2.1. 关于软件包(Packages)
2.2. 关于软件仓库(Repositories)
2.3. 关于依赖(Dependencies)
2.4. 理解软件包名
3. Fedora Core中的软件管理工具
4. 用yum管理软件
4.1. 用yum安装新软件
4.2. 用yum升级软件
4.3. 用yum删除软件
5. 用yum搜索软件包
5.1. 通过软件包名和属性搜索
5.2. 高级搜索
5.3. 理解匹配
6. 用yum升级你的系统
6.1. 自动升级你的系统
7. 使用其他软件仓库
7.1. 添加仓库作为软件包源(Package Source)
7.2. 手动许可软件包源
7.3. 理解软件仓库兼容
8. 维护yum
8.1. 禁用或删除软件包源
8.2. 清除yum缓存
9. 手动安装软件
10. 通过代理服务器使用yum
11. 鸣谢
====================================================================
1. 简介
1.1. 文档目的
本文档介绍Foedora系统软件管理的基本概念,简述yum的主要功能,Fedora中推荐使用的软件管理工具。
1.2. 阅读对象
本访文档供Fedora各种经验层次的用户使用。
1.3. 使用本文档
本文档为使用yum作参考。你可以根据你的需要和经验层次阅读其中的部分或全部章节。如果你是一个新用户,在第一次使用yum之前请阅读第2节“软件管理概念”。有经验的Linux用户可以从第4节“用yum管理软件”开始。
Fedora前版
本文档描述的是在Fedora 4系统中yum的配置。要在Fedora 3中应用yum,你必须完成第7.2节的附加步骤“手动许可软件包源”。
本文档中的大多数例子使用软件包tsclien,该软件包已经包含在Fedora Core中。tsclient是个提供远程桌面访问的应用程序。如果你已经成功安装,你可以通过选择 应用程序(Applications)->互联网(Internet)->终端服务器客户端(Terminal Server Client)来启动它。例程命令中所用的Fedora软件包组(package groups)选择了MySQL数据库组。
避免用root帐号登录
你并不需要使用root帐号进行登录来管理Fedora系统。本指南提到的那些需要root帐号的所有命令,会提示你输入root密码,只要在命令前加上su -c,非常方便。
1.4. 附加资源
yum程序的功能和选项并不是本文档讨论的范围。使用下列命令来阅读man页,可以学习到更多yum(8)和yum.conf(5)的知识:
man yum
man yum.conf
在Internet上其它有用的yum资源包括:
项目(Project)web站
http://linux.duke.edu/projects/yum/
用户邮件列表
https://lists.dulug.duke.edu/mailman/listinfo/yum/
开发邮件列表
https://lists.dulug.duke.edu/pipermail/yum-devel/
==============================
2. 软件管理的概念
2.1. 关于软件包(Packages)
Fedora软件和文档是以一种叫RPM包的形式进行提供。每一个这种包都是包含了软件信息、程序文件、图标、文档和管理脚本等的压缩文件。管理程序使用通过这些文件来安全地定位、安装、升级和删除软件。例如,Fedora安装程序就是根据你的需求用这种软件包来进行Fedora Cora系统的构建或升级的。
软件包内包含了一个数字签名用来验证它们的源。软件管理程序通过使用GPG公共密钥对该数字签名进行校验。yum和rpm程序共享的公共keyring(common keyring)为经过许可的所有软件包源存储公共密钥,并由系统管理员设定这些经过许可的软件包源。
2.2. 关于软件仓库(Repositories)
软件仓库是一种特别的目录或web站,它包含软件包及其索引文件。象yum之类的软件管理程序从这些软件仓库自动定位和获取正确的RPM包。这种方法免去了你必须手动寻找、安装新软件或升级它们。你可以使用一个简单的命令来升级所有系统软件或通过指定规则进行新软件的搜索。
Fedora Core软件包管理程序已经配置好使用网络服务器来提供三种软件仓库:
· 象发行盘这种由Fedora Core整理打包的软件包。
· Fedora Core软件的升级版。
· 著名的Fedora Extras,里面精选了大量的附加软件。
Fedora的以前版
Fedora 4自动支持上述所有三种仓库。但在Fedora 3系统你必须手动配置才能使用Fedora Extras,请参看第7节“使用其他软件仓库”。
所有的Fedora软件包都是开源软件
通过Fedora项目(Fedoa Project)提供的所有软件都是开源软件。你可以在很多系统从Fedora项目网络仓库中下载和安装你想要的软件。
第三方(Third-party)软件开发者也会为他们制作的兼容Fedora的软件包提供仓库。要学习如何配置你的Fedora系统来使用第三方软件仓库,请参看第7节“使用其他软件仓库”。
你也可以通过使用Fedora软件仓库提供的软件包组(package groups)来管理相关的软件包套件。一些第三方软件仓库会添加软件包到这些组中,或以附加组(additional groups)的提供他们的软件包。
有效的软件包组(Package Groups)
要在你的Fedora系统浏览所有可用的软件包组列表,运行命令su -c 'yum grouplist'。
使用软件仓库可以确保你接收的总是软件当前的版本。如果同样的软件包有几种有效版本,你的管理程序会自动选择最新的版本。
不从软件仓库安装软件
当确信你所需要的软件没有在软件仓库中提供,你可以使用手动的方式来安装软件。你也可能需要采取手动方式管理软件,而取代用Fedora软件管理程序。
本文档所述的yum命令主要使用软件仓库作为软件包的源。你可以参看第9节“手动安装软件”以更详细了解如何使用yum来从一个包文件进行软件安装。
2.3. 关于依赖(Dependencies)
安装在Fedora中的一些库文件可以提供多种应用的功能。当一个应用程序需要一个特别的库时,包含这些库的软件包会被依赖。要完整地安装软件包,Fedora必须首先满足它的依赖。RPM包的依赖信息存储在RPM文件内。
yum程序使用软件包依赖数据来确定在安装程序时遇到的所有需求,它会为任何未出现在系统中的依赖自动安装软件包。如果一个新应用程序的需求与现存的软件相冲突,yum会中止而不会改变你的系统。
2.4. 理解软件包名(Package Names)
每个软件包文件都用一个长文件名来表征几个关键的信息。这是Fedora Core提供的tsclient包的完整名:
tsclient-0.132-6.i386.rpm
管理程序一般用以下三种格式之一来查阅软件包:
· 软件包名:tsclient
· 带有版本和释放号的软件包名: tsclient-0.132-6
· 带有硬件体系的软件包名:tsclinet.i386
为了明显起见,yum大都以“name.architecture”为格式列出软件包,软件仓库中也普遍保存软件包在以硬件体系(architecture)名分开的目录中。硬件体系指定了使用这些软件包所需要的最小机器类型。
i386
适用于任何当前Intel兼容机
noarch
兼容所有的计算机体系
ppc
适用于PowerPC系统,如Apple Power Macintish。
x86_64
适用于64位Intel兼容处理器,如Opterons。
一些软件可能对Intel兼容的机器类型进行过特别优化,分别提供给i386、i586、i686和x86_64体系的计算机使用的不同软件包,最小为Intel的奔腾(Pentium)、威盛(VIA)的 C3或兼容的CPU可以使用i586的包,对Intel的Pentium Pro及其以上或AMD芯片的当前模式,可以使用i686的包。
yum命令中使用软件的短名称,将使yum自动在仓库中选择与你的系统相匹配的硬件体系的最新软件包。
而在操作过程中用其它命名格式指定软件包名,则会不顾缺省而强制yum使用指定匹配版本或硬件体系的软件包。只有在你已知缺省软件包选择存在Bug或其他问题而导致不稳定时,才使用强制方式进行安装。
软件包名(Package Names)
你可以在使用yum操作时用下列任何格式来指定一个在软件包:名(name)、名.硬件体系(name.architecture)、名-版本(name- version)、名-版本-释放号(name-version-release)、名-版本-释放号.硬件体系(name-version-release.architecture)和epoch:名-版本号-释放号.硬件体系(epoch:name-version- release.architecture)。
==============================
3. Fedora Core的软件管理工具
yum是一个完整的软件管理系统。Fedora core也包含其他几个程序为yum作补充。
在你的桌面有一个“警告图标(Alert Icon)”来为你保持有关软件包升级的信息,直到你的系统被升级图标显示为闪着感叹号标志红圈。警告图标是up2date程序的一部分,让你更容易进行系统升级。
Fedora Core也包含了system-config-packages。要从图形界面运行这个程序,运行“桌面(Desktop)->系统设置(Sysmte Settings)->添加/删除程序(Add/Remove Applications)”。与up2date和yum不同的是,system-config-packages只从你的Fedora Core安装光盘安装软件包,而不能使用软件仓库,它主要用于你的系统无法连接网络时。
rpm命令行程序为使用单独的RPM包提供了很多功能,你可以使用它来手动从你的系统安装和删除软件包。如果你用rpm程序来安装软件,你必须手动检查和安装所有的文件依赖。为此,建议你采用yum安装方式。
当前软件包版本
up2date和yum程序可以确保你有最新的软件包版本,而其他方法不能保证包是当前最新的。
==============================
4. 用yum管理软件
有四个方面需要用yum程序来改变系统中的软件:
· 从软件包仓库安装新软件
· 从一个独立的包文件安装新软件
· 在你的系统中升级已有软件
· 从你的系统中删除多余的软件
从一个软件包文件安装软件
本节介绍使用软件包源仓库的yum命令。使用yum从单独的软件包文件安装软件的详细资料,请参见第9节“手动安装软件”。
要使用yum,要指定一个函数和一个或更多的软件包或软件包组。以下每节给出了一些例子。
对于每一次操作,yum会从已配置的软件仓库下载最后的软件包信息。如果你的系统使用较慢的网络连接,yum可能需要用几秒钟为每个软件包下载仓库索引和头文件。
yum程序搜索这些数据文件来决定最好的取得软件需求结果的动作集,同时显示处理过程让你选择。处理过程中可能会为了解决软件依赖而包括安装、升级或删除额外的附加软件包。
这是一个安装tsclient的处理过程:
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
tsclient i386 0.132-6 base 247 k
Installing for dependencies:
rdesktop i386 1.4.0-2 base 107 k
Transaction Summary
=============================================================================
Install 2 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size 355 k
Is this ok [y/N]:
例1.yum处理报告格式
查看改变的列表,并按y键同意和开始处理。如果你按N键或回车,yum不会下载和改变任何软件包。
软件包版本
除非指定了一个旧版,否则yum程序只显示和使用每个软件包的最新版。
如果还没有安装rpm keyring,yum程序也会导入软件仓库的公共密钥。
这是一个公共密钥导入的例子:
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
public key not available for tsclient-0.132-6.i386.rpm
Retrieving GPG key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
Importing GPG key 0x4F2A6FD2 "Fedora Project (fedora@redhat.com)"
Is this ok [y/N]:
例2.yum公共密钥输入格式
检测公共密钥,然后按y键来导入该密钥并使它有效。如果你按N键或回车,yum不会安装任何软件包而停止。
要确定所下载软件包的真实性,yum通过公共密钥校验每一个软件包的数字签名。一旦所有需要的软件包都成功下载和校验,yum将在你的系统中应用它们。
下载缓存
yum程序会保持已下载的数据文件和软件包以获得重用。你可以从软件仓库缓存目录(/var/cache/yum/)下复制软件包,并在你希望的其它地方使用它们。
4.1. 用yum安装新软件
要安装tsclient包,输入这个命令:
su -c 'yum install tsclient'
出现提示后输入root帐号密码。
要安装MySQL数据库软件包组(package group),输入这个命令:
su -c 'yum groupinstall "MySQL Database"'
出现提示后输入root帐号密码。
激活新服务的需求
当你安装一个服务程序,Fedora不会自动激活或启动它。要配置一个新服务在启动时运行,选择桌面(Desktop)->系统设置(System Settings)->服务设置(Server Settings)->服务(Services),或使用chkconfig和service命令行程序。
4.2. 用yum升级软件
要升级tsclient软件包到最新的版本,健入:
su -c 'yum update tsclient'
出现提示后输入root帐号密码。
新版本软件需要重新装入
当升级软件时如果它的一部分正被使用,旧版的活动部分会被留下而未更新直到程序或服务被重新启动。升级后的内核需要重启系统才会生效。
要升级软件包组MySQL数据库中的所有软件包,输入这个命令:
su -c 'yum groupupdate "MySQL Database"'
出现提示后输入root帐号密码。
升级整个系统
要升级你的Fedora系统的所有软件包,使用在第6节“使用yum升级你的系统”所描述的命令。
4.3. 用yum删除软件
要删除软件,yum会检查你系统中的指定软件和任何与该软件有关的依赖,之后才进行删除软件和依赖的处理。
要从你的系统中删除tsclient软件包,使用这个命令:
su -c 'yum remove tsclient'
出现提示后输入root帐号密码。
要删除MySQL数据库软件包组中的所有软件包,输入这个命令:
su -c 'yum groupremove "MySQL Database"'
出现提示后输入root帐号密码。
数据和配置文件的保留
删除处理会移去它包含的用户数据,但可能在某些情况下不会删除配置文件。如果一个软件包的删除未包含配置文件,在你稍后重新安装这个软件包时,旧的配置文件可能重新发生作用。
==============================
5.用yum搜索软件包
使用yum的搜索功能从已配置或已经安装的软件仓库中查找搜索软件是非常有效的。搜索自动包括已安装和有效的软件包。
结果的格式依赖于选项。如果所查询的软件没有信息,说明没有软件包与规则匹配。
5.1. 通过软件包名和属性搜索
要通过名称来搜索一个指定的软件包,可使用列表(list)功能。如要搜索软件包tsclient,使用这个命令:
su -c 'yum list tsclient'
出现提示后输入root帐号密码。
要使你的查询更精确,用包含其他属性的名称来指定软件包,如版本或硬件体系。如要搜索版本为0.132的tsclient程序,使用命令:
su -c 'yum list tsclient-0.132'
有效的软件包属性
参考第2.4节“理解软件包名”来了解软件包名格式和他们所包含的属性。
5.2. 高级搜索
如果你不知道用来搜索或提供选项的软件包名称,可在yum的搜索选项中使用通配符(wild cards)或正则表达式(regular expressions)之一来放宽搜索范围。
搜索选项从所有有效软件包中检查名称、描述、摘要和列出软件包的维护者,来查找相匹配的。例如,要搜索涉及PalmPilots的所有软件包,键入:
su -c 'yum search PalmPilot'
出现提示后输入root帐号密码。
提供检测软件包中所包含的文件和函数的功能,这个选项需要yum下载读取大量索引文件来对比搜索选项。
要搜索包含叫libneon文件的的所有软件包,输入:
su -c 'yum provides libneon'
要搜索提供MTA(邮件传输代理)服务、或在文件名中包含mta的软件包:
su -c 'yum provides MTA'
每个命令,都会提示输入root帐号的密码。
使用标准的通配符和部分单词或名称来运行搜索选项:?表示任何一个字符,*代表0或更多的字符。在通配符前总要添加转义符(\)。
列出所有以tsc开头的软件包,输入:
su -c 'yum list tsc\*'
正则表达式
使用Perl或Python正则表达式来完成更多的复杂查询。
5.3. 理解匹配
用yum搜索显示与你给出的标准相匹配的软件包,包必然与你所要搜索的条件精确匹配,除非你使用通配符或正则表达式。
例如,搜索查询shadowutils或shadow-util,就不会提供包shadow-utils。如果查询shadow-util\?或shadow\*,则这个包会匹配并显示。
==============================
6. 升级你的系统
**** 本内容跟帖回复才可浏览 *****
==============================
11. 鸣谢
保罗·弗里尔兹(Paul Frields)编辑了本文档。蒂莫西·墨菲(Timothy Murphy)校对beta版。
--------------------------------------------------------------------------------
中文翻译:月下刀客 于2005年11月12日第一版
原文出版: http://fedora.redhat.com/docs/yum/