使用 yum
管理软件
Stuart Ellis
版权 © 2005 Stuart Ellis
版权 © 2005 bbbush (bbbush.yuan@gmail.com)
本文档是使用 yum
的参考。您可以选择阅读或全文阅读,取决于您的需求和掌握程度。如果您对系统还很陌生,可以在第一次使用 yum
之前先阅读 第 2 节 “软件管理概念”。有经验的 Linux 用户可以从 第 4 节 “使用 yum
管理软件” 开始。
过去版本的 Fedora | |
---|---|
本文档描述的 |
本文档中大多数范例使用了软件包 tsclient
,它包含在 Fedora Core 里面。tsclient
软件包提供了一个用于远程桌面连接的应用程序。如果您成功安装了它,可以选择菜单 Applications → Internet → Terminal Server Client 来运行它。要应用这些例子,只要把 tsclient
替换为相关的软件包名称。Fedora 软件组的操作范例使用了 MySQL Database
组。
避免以 root 帐号登录 | |
---|---|
您不需要以 |
本文档没有介绍 yum
工具的某些特性和选项。阅读 man
手册页的 yum(8)
和 yum.conf(5)
来学习它们,只要这样:
man yum
man yum.conf
互联网上其他有用的 yum
资源还有:
请先查阅 Bugzilla | |
---|---|
如果您的某个操作总是产生错误,请查阅 http://bugzilla.redhat.com/ 并参考相关软件包的错误报告。某个软件包出错可能导致依赖于这个软件包的所有 |
2. 软件管理概念
Fedora 的软件和文档以一种称为 RPM 软件包 的文件方式提供。每个软件包是一个压缩的文档,包含了内容信息,应用程序文件,图标,文档和用作管理的脚本。管理程序利用这些内容来安全地定位、安装和卸载软件。例如,Fedora 安装过程使用随 Fedora Core 附带的软件包来构建或升级符合您需要的系统。
软件包也包含一个数字签名,以验证它们的来源。软件管理工具通过 GPG 公钥 来验证这个签名。yum
和 rpm
工具共享同一个 keyring,它保存了所有有保障的软件包来源的公钥。系统管理员可以选择添加这些有保障的软件包来源。
Fedora 的所有软件包都是开源软件 | |
---|---|
Fedora Project 提供的所有软件都是开源软件。您可以下载 Fedora 的软件包并安装到任意多的系统中。 |
仓库 是一个预备好的目录,或是一个网站,包含了软件包和索引文件。软件管理工具,类似 yum
,可以在仓库中自动地定位并获取正确的 RPM 软件包。这样,您就不必手动搜索和安装新应用程序和升级补丁了。只用一个命令,您就可以更新系统中所有软件,也可以根据指定搜索目标来查找安装新软件。
有一系列的服务器,为每个版本的 Fedora 分别提供了一些仓库。Fedora Core 中的软件管理工具已经预先配置为使用下列三个仓库:
-
Base
-
构成 Fedora Core 的软件包,和光盘上内容相同
Updates
-
Base 仓库中软件包的更新版本
Extras
-
一大批附加的软件包
过去版本的 Fedora | |
---|---|
Fedora 4 自动地支持这三个仓库。如果是 Fedora 3 系统,您必须手动调整才能使用 Fedora Extras,可以按照 第 7 节 “使用其他软件仓库” 来做。 |
Fedora 开发仓库 | |
---|---|
Fedora Core 也包含了几个可选的仓库设置。它们提供测试的软件包,可以取代一个或多个标准的仓库。只有当您打算测试和开发 Fedora 软件时,才应当启用它们: |
第三方软件开发者通常也使用仓库,来提供自己软件的 Fedora 版本。要学习如何配置自己的 Fedora 系统来使用第三方仓库,可以阅读 第 7 节 “使用其他软件仓库”。
您可以用 Fedora 仓库提供的 软件组 来管理相关的软件包集合。第三方仓库可以向这些组中添加软件包,也可以将自己的软件包放在新的组中。
现有的软件组 | |
---|---|
要查看您的 Fedora 系统中现有可用的软件组,运行命令 |
使用仓库来保证您总是用着软件的最新版。如果仓库中提供了某个软件包的多个版本,管理工具会自动选择最新的那个。
安装软件,但不使用仓库 | |
---|---|
如果您确信,没有任何一个仓库提供了您需要的某个软件,那么再尝试手动安装它。您可能需要手动地管理这个软件包,无法应用 Fedora 软件包管理工具。 本文档中的 |
Fedora 发行版中安装的某些文件属于 库,它为多个应用程序提供功能。如果一个应用程序需要某个特定的库,那么这个库就是一个 依赖。要正常地安装一个软件包,Fedora 必须首先满足它的依赖关系。一个 RPM 软件包的依赖信息储存在这个 RPM 文件中。
yum
工具使用软件包依赖关系数据来保证一个应用程序在安装前,所有的要求都已满足。它自动地安装依赖的软件包,如果系统中没有的话。如果某个新的应用程序的要求与现有的软件冲突,yum
会放弃,不对系统做任何修改。
每个软件包文件都有一个很长的名字,包含了几个最重要的信息。例如,这就是 Fedora Core 中 tsclient
软件包的全名:
tsclient-0.132-6.i386.rpm
管理工具处理软件包时,通常使用如下三种格式之一:
-
软件包名称:
tsclient
-
带有版本号和发行版本的软件包名称:
tsclient-0.132-6
-
带有硬件架构的软件包名称:
tsclient.i386
为了清楚明白,yum
以 名称.架构
的格式来列出软件包。仓库通常也将软件包存储在以架构区分的目录中。每次为软件包指定架构的时候,实际指定的是此软件对机器架构的 最低 要求。
-
i386
-
适于任何现有的 Intel 兼容计算机
noarch
-
适于所有架构
ppc
-
适于 PowerPC 系统,例如 Apple Power Macintosh
x86_64
-
适于 64 位 Intel 处理器,例如 Opterons
一些软件会为特殊类型的 Intel 处理器优化,为 i386
, i586
, i686
和 x86_64
计算机提供不同的软件包。如果机器中有 Intel 奔腾,VIA C3 或其他兼容的处理器,那么可以使用 i586
软件包。如果机器中有 Intel 高能奔腾或更强劲的处理器,或是有时兴的 AMD 处理器,那么可以使用 i686
软件包。
在 yum
的命令行中,应当使用软件包的短名称。yum
会自动在符合您的机器架构的仓库中,选择版本最新的软件包。
用其他命名格式指定软件包,可以避免默认行为,强制 yum
使用指定版本或架构的软件包。只有当您知道默认选择有问题,不适宜安装时才应当这样做。
软件包名称 | |
---|---|
您可以在 |
3. Fedora Core 中的软件管理工具
yum
工具是一个完整的软件管理系统。Fedora Core 也包含其他几个应用程序,作为 yum
的补充。
您的桌面上有一个 Alert Icon,当软件包有更新时它会通知您。如果您的系统不是最新的,这个图标就显示为带有闪烁的感叹号的红色圆圈。警告图标是 up2date 的一部分,它让您可以简单地更新系统。
Fedora Core 也包含了一个 system-config-packages 工具。要在图形界面运行这个应用程序,从菜单中选择 Desktop → System Settings → Add/Remove Applications。与 up2date 和 yum
不同,system-config-packages 只能利用 Fedora Core 安装光盘中安装软件,无法使用仓库。这个应用程序用于系统还没有网络连接的时候。
命令行工具 rpm
有很多功能,主要是操作单独的 RPM 软件包。您可以利用它来手动地为系统安装和移除软件包。如果使用 rpm
工具安装软件,您必须手动地检测和安装任何依赖关系。因为这个原因,yum
是安装软件的首选方式。
当前软件包版本 | |
---|---|
up2date 和 |
4. 使用 yum
管理软件
使用 yum
工具改变系统中的软件配置,有四种选择:
-
从仓库安装新软件
-
从单独的软件包文件安装新软件
-
更新您的系统中现有的软件
-
从您的系统中移除不需要的软件
从一个软件包文件安装软件 | |
---|---|
本文档中的 |
使用 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 或 Enter(回车),yum
不会下载或改变任何软件。
软件包版本 | |
---|---|
|
yum
工具支持导入仓库公钥,如果它没有预装在 rpm
钥匙环中的话。
这是公钥导入的一个例子:
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 或 Enter(回车),yum
停止,不安装任何软件包。
为保证下载到的软件包是真实的,yum
用提供者的公钥校验每个软件包的数字签名。当事务需要的所有软件包都已成功下载并校验后,yum
将它们应用到您的系统中。
每个完成的事务会在日志文件 /var/log/yum.log
中记录受影响的软件包。您只能以 root
权限读取它。
下载被缓存 | |
---|---|
|
要安装软件 tsclient
,输入命令:
su -c 'yum install
tsclient
'
当提示时,输入 root
帐号的密码。
要安装软件组 MySQL Database
,输入命令:
su -c 'yum groupinstall "
MySQL Database
"'
当提示时,输入 root
帐号的密码。
新的服务需要激活 | |
---|---|
当您安装一项服务的时候,Fedora 不会激活或启动它。要配置一项新服务随系统启动而运行,选择菜单中的 Desktop → System Settings → Server Settings → Services,或者使用命令行工具 |
要更新 tsclient
软件为最新版本,输入:
su -c 'yum update
tsclient
'
当提示时,输入 root
帐号的密码。
新版本软件需要重新载入 | |
---|---|
如果您更新某个软件时,它正在被使用,那么旧版本仍然有效,直到您重新启动应用程序或服务。内核的更新必须到您重新启动系统时才可生效。 |
要更新软件组 MySQL Database
中的所有软件,输入命令:
su -c 'yum groupupdate "
MySQL Database
"'
当提示时,输入 root
帐号的密码。
更新整个系统 | |
---|---|
要更新您的 Fedora 系统中的所有软件,使用 第 6 节 “使用 |
要移除软件,yum
在您的系统中检测指定被移除的软件,以及任何依赖于它的软件。移除软件的事务将移除这一软件及所有依赖于它的软件。
要移除 tsclient
软件,使用命令:
su -c 'yum remove
tsclient
'
当提示时,输入 root
帐号的密码。
要移除软件组 MySQL Database
中的所有软件,使用命令:
su -c 'yum groupremove "
MySQL Database
"'
当提示时,输入 root
帐号的密码。
数据和配置文件的保留情况 | |
---|---|
移除过程会保留用户数据,但是在某些时候会移除配置文件。如果某个软件的移除不包括配置文件,而您在后面又重安装了这一软件,那么它可能会重用旧的配置文件。 |
5. 使用 yum
搜索软件
使用 yum
的搜索功能来查找已配置的仓库中可用的软件,或系统中已安装的软件。搜索自动包含这两类软件。
结果的格式依赖于所用的选项。如果查询没有给出结果,说明没有满足要求的软件。
要通过名称搜索,使用 list
功能。要搜索软件 tsclient
,使用命令:
su -c 'yum list
tsclient
'
当提示时,输入 root
帐号的密码。
要使搜索更精确,可以指定包含属性的名称,例如版本或硬件架构。要搜索 tsclient
的 0.132 版,使用命令:
su -c 'yum list
tsclient-0.132
'
有效的软件属性 | |
---|---|
参见 第 2.4 节 “理解软件包名称”,其中有软件包命名格式以及其中包含的属性等信息。 |
如果您不知道软件的名称,使用 search
或 provides
功能。另外,可以在任何 yum
搜索选项中使用通配符和正则表达式,来扩大搜索范围。
search
功能检测所有可用的软件的名称、描述、概述和已列出的维护者,查找匹配的值。例如,要从所有软件包中搜索与 PalmPilots 相关的内容,输入:
su -c 'yum search
PalmPilot
'
当提示时,输入 root
帐号的密码。
provides
功能检测软件包中包含的文件以及软件提供的功能。与 search
相比,这个选项要求 yum
下载并读取一个很大的索引文件。
要搜索所有包含文件 libneon
的软件包,输入:
su -c 'yum provides
libneon
'
要搜索所有提供了 MTA (Mail Transport Agent, 邮件传输代理) 服务,或名称中包含了 mta
的软件包:
su -c 'yum provides
MTA
'
对每个命令,应在提示时输入 root
帐号的密码。
使用标准的通配符搭配词或名称的片段来搜索:?
代表任意单个字符,*
代表 0 或多个字符。在通配符前应当使用转义字符 (/
)。
要 list
列出名称以 tsc
开始的软件,输入:
su -c 'yum list
tsc/*
'
正则表达式 | |
---|---|
使用 Perl 或 Python 正则表达式来进行更复杂的查询。 |
6. 使用 yum
更新您的系统
使用 update
功能来更新您的 Fedora 系统中所有软件为最新版,只要一个操作。
要进行整个系统的更新,输入命令:
su -c 'yum update'
在提示时,输入 root
的密码。
7. 使用其他软件仓库
Fedora 系统自动使用 Fedora Project 的仓库。其中包括 Fedora Extras,默认没有包含在 Fedora Core 中的软件包。
适于旧版本 Fedora Core 的 Fedora Extras 仓库 | |
---|---|
您必须手动配置 Fedora 3 系统使用 Fedora Extras,按照 http://fedora.redhat.com/projects/extras/ 的步骤做。对于 Fedora 1 和 Fedora 2 的附加软件包,请查看 http://www.fedora.us/。 |
如果 Fedora Project 没有包含某个软件,软件的作者可能提供了一个单独的仓库。一些社区的成员也维护了适于 Fedora 的软件仓库。例如,http://www.jpackage.org/ 将流行的 Java 软件打包发布。
要另外添加一个仓库,必须在您的系统中 /etc/yum.repos.d/
目录下新建一个描述文件。仓库维护者一般会在网站上公布自己的仓库的描述文件。
文件扩展名约定 | |
---|---|
仓库描述文件的名称以 |
您必须有 root
权限才能向这个目录添加文件。要复制描述文件 example.repo
,输入命令:
su -c 'cp example.repo /etc/yum.repos.d/'
在提示时,输入 root
帐号的密码。
每个仓库的描述文件应当包含一个 gpgkey
配置项。这一配置项指定了为验证这一仓库的软件包所用的公钥的地址。这个公钥在第一次安装这个仓库中的软件时会自动导入。如果配置文件中没有包含这个配置项,请参见 第 7.2 节 “手动认证软件来源”。
仓库和 up2date 频道 | |
---|---|
从 Fedora 4 开始, |
要手动向 rpm
钥匙环中添加公钥,使用 rpm
的 import
功能。要导入文件 GPG-PUB-KEY.asc
,输入命令:
su -c 'rpm --import
GPG-PUB-KEY.asc
'
在提示时,输入 root
帐号的密码。
您可以直接从一个网站上导入公钥。例如,要导入网站 www.therepository.com 上的文件 GPG-PUB-KEY.asc
,使用命令:
su -c 'rpm --import
http://www.therepository.com/GPG-PUB-KEY.asc
'
在提示时,输入 root
的密码。
在 Fedora 3 中导入 Fedora 公钥 | |
---|---|
要在 Fedora 3 系统中向 |
Fedora Extras 仓库提供了按照与 Fedora Core 相同的标准构建的软件。第三方软件总是会与 Fedora Project 软件包相容,如果不是,提供者会给出特别的说明。
在您将一个仓库添加为软件来源之前,一定要阅读仓库所属的网站上有关软件相容性的信息。不同的仓库提供者可能提供同一个软件的不同的不相容的版本。第三方仓库也可能提供 Fedora 仓库中软件的替代软件包。
替代软件包可能是软件的不同版本,功能与 Fedora Project 仓库中的版本不同。在将 Fedora Project 版本的软件包替换掉前,仔细考虑其中的好处和可能的不相容情况。
不相容的仓库 | |
---|---|
如果您配置您的系统使用了不相容的仓库, |
为一个版本的 Fedora 构建的软件包通常与另一个版本的 Fedora 不相容。提供者的网站总是会特别地说明所支持的 Fedora 版本。
旧版本的 yum 和当前的仓库 | |
---|---|
在 |
8. 从一个单独的软件包文件安装软件
使用仓库和标准的 yum
命令来定位并安装新软件,除非软件无法从任何一个仓库中找到。这种情况下,只能用 localinstall
功能来从软件包安装软件了。
必须有公钥 | |
---|---|
确保在安装没有仓库的软件之前,已经导入了软件来源的公钥。参见 第 7.2 节 “手动认证软件来源”。 |
要安装软件包 tsclient-0.132-4.i386.rpm
,输入命令:
su -c 'yum localinstall
tsclient-0.132-4.i386.rpm
'
在提示时,输入 root
的密码。
过去安装的软件将被更新 | |
---|---|
如果软件提供了已安装软件的新版本, |
如果软件包需要系统中未安装的软件,yum
会尝试利用已配置的仓库来满足依赖关系。您可能需要手动下载并安装额外的软件来满足所有的依赖关系。
手动维护已安装的软件 | |
---|---|
如果您安装了并非来自仓库的软件,当它有新版时, |
9. 调整 yum
yum
不需要任何日常的维护。为保证 yum
操作的速度,您应当禁用或删除那些不再需要的仓库。您还可以删除 yum
缓存中的文件,从而节省硬盘空间。
10. 有代理服务器时使用 yum
默认情况下,yum
通过 HTTP 连接到网络上的仓库。所有 yum
HTTP 操作都使用 HTTP/1.1,与支持这一标准的 web 代理服务器兼容。您也可以连接到 FTP 仓库,并配置 yum
使用 FTP 代理服务器。squid
软件包同时提供了 HTTP/1.1 和 FTP 连接的代理服务。
为网络兼容性调整 yum | |
---|---|
请参考 |
要设置所有 yum
操作都使用代理服务器,可以在 /etc/yum.conf
中设置代理服务器的信息。proxy
配置项必须设定为完整的代理服务器的 URL,包含 TCP 端口号在内。如果您的代理服务器要求用户名和密码,可以用 proxy_username
和 proxy_password
配置项来指定它们。
这一配置使得 yum
使用代理服务器 mycache.mydomain.com
,连接端口号 3128,用户名 yum-user
,密码 qwerty
。
# 代理服务器 - proxy server:port number
proxy=http://mycache.mydomain.com:3128
# 用于 yum 连接的帐户细节
proxy_username=yum-user
proxy_password=qwerty
例 3. 配置文件设定,以使用代理服务器
全局设置 | |
---|---|
如果您在 |
要为一个特定的用户启用代理访问,只要将实例框中的文本行加入这个用户的 shell 配置中。对于默认的 bash
shell,配置是在 ~/.bash_profile
中。这一设置使得 yum
使用代理服务器 mycache.mydomain.com
,连接端口号 3128。
如果代理服务器需要用户名和密码,只要将它们加入 URL。要包含用户名 yum-user
,密码 qwerty
,添加设定:
# 这个帐号使用的代理服务器和用户名/密码
http_proxy="http://yum-user:qwerty@mycache.mydomain.com:3128"
export http_proxy
例 5. 配置设定,针对安全的代理服务器
环境变量 http_proxy | |
---|---|
环境变量 |
11. 感谢
Paul Frields 编辑了本文档。Timothy Murphy 检视了 BETA 发布。
davelv收集整理