Yum 使用教程

原文链接:http://lugir.com/book/export/html/121

你必须具备超级管理员权限,才可以使用 yum 安装、升级和移除软件包。本章节中的所有示例均假设你已经通过 su 或 sudo 命令取得了超级管理员权限。有关如何使用 sudo 命令可参考《使用 sudo 命令,以根用户身份执行命令

通过使用 yum check-update 命令,能够查看到系统中的哪些软件包存在可以升级的新版本。

~]# yum check-update

Loaded plugins: presto, refresh-packagekit, security

PackageKit.x86_64 0.5.3-0.1.20090915git.fc12 fedora

PackageKit-glib.x86_64 0.5.3-0.1.20090915git.fc12 fedora

PackageKit-yum.x86_64 0.5.3-0.1.20090915git.fc12 fedora

PackageKit-yum-plugin.x86_64 0.5.3-0.1.20090915git.fc12 fedora

glibc.x86_64 2.10.90-22 fedora

glibc-common.x86_64 2.10.90-22 fedora

kernel.x86_64 2.6.31-14.fc12 fedora

kernel-firmware.noarch 2.6.31-14.fc12 fedora

rpm.x86_64 4.7.1-5.fc12 fedora

rpm-libs.x86_64 4.7.1-5.fc12 fedora

rpm-python.x86_64 4.7.1-5.fc12 fedora

yum.noarch 3.2.24-4.fc12 fedora

以上输出结果列出了可以升级的软件包的信息。以列表中的第一个软件包 PackageKit 为例,输出结果中包含了以下信息:

PackageKit ── 软件包的名称

x86_64 ── 软件包针对的 CPU 平台

0.5.3-0.1.20090915git.fc12 ── 将被升级到的软件包的版本号

fedora ── 取得该软件包的软件仓库

上例中,除了 PackageKit 软件包,能够升级的软件包还包括 Kernel (内核) 、Yum 和 RPM,以及它们所依赖的软件包。

使用 Yum 升级软件包

使用Yum时,你可以升级一个软件包,或者多个软件包,甚至可以将整个系统中所有的软件包一次性全部升级。如果被升级的软件包所依赖的其它软件包也能够升级,这些依赖性软件包也将被升级。

要升级单个软件包,只需输入 yum update <package_name> 命令即可,以下以 glibc 软件包为例:

~]# yum update glibc

Loaded plugins: presto, refresh-packagekit, security

Setting up Install Process

Resolving Dependencies

--> Running transaction check

--> Processing Dependency: glibc = 2.10.90-21 for package: glibc-common-2.10.90-21.x86_64

--> Package glibc.x86_64 0:2.10.90-22 set to be updated

--> Running transaction check

--> Package glibc-common.x86_64 0:2.10.90-22 set to be updated

--> Finished Dependency Resolution

Dependencies Resolved

======================================================================

 Package             Arch        Version          Repository      Size

======================================================================

Updating:

 glibc               x86_64      2.10.90-22       fedora        2.7 M

Updating for dependencies:

 glibc-common       x86_64       2.10.90-22       fedora       6.0 M

Transaction Summary

======================================================================

Install       0 Package(s)

Upgrade       2 Package(s)

Total download size: 8.7 M

Is this ok [y/N]:

从以上输出信息中,你需要了解这些信息:

1. Loaded plugins: presto, refresh-packagekit, security  ── 这是 yum 加载已经安装的插件的名称,yum 总会在运行时显示这些 yum 插件信息。在这个例子中,yum 使用的插件有 presto, refresh-packagekit 和 security。

有关 yum 插件的信息请参考 《Yum 插件》,有关这些插件的描述请参考《常用 Yum 插件功能介绍》

2. glibc.x86_64 ── 你能够使用 yum 安全下载并安装的新软件

3. yum 显示出升级信息,并提示你是否 ([y/N]) 希望执行升级操作。

默认情况下,yum 使用交互式操作,如果你对于 yum 执行过程已经十分了解,可以使用 -y 选项为 yum 所提出的交互式操作给予 yes 回复 (即取消交互式操作)。但我们建议你使用默认的非交互模式,读取 yum 的输出信息,对你了解 yum 的行为以及以后排错都有相当大的帮助。

 升级所有软件包 (以及相关依赖性软件包)

要升级系统中所有的软件包以及相关的依赖性软件包,只需简单地输入 yum update 即可

~]# yum update

...

更新与安全相关的软件包

找出哪些软件包存在安全性的更新,并对简单迅速地完成这些更新对于系统的安全性是至关重要的。Yum为实现这个目标提供了security插件,该插件为yum扩展了许多以安全为中心的实用命令、子命令和选项。有关 security 插件的更多信息可参考《Yum 常用插件功能介绍》

保护已更改的配置文件

在使用 Fedora (或其它任何) 操作系统时,你总会不可避免地改动程序的配置文件。yum 在升级软件包时,使用 RPM 实现对系统的更改,而 RPM 对于应用程序的配置文件提供了相当有效的保持机制。有关 RPM 在升级软件包的过程,如何做好配置文件管理的详细情况,可参考《使用 RPM 升级软件包》

使用 Yum 搜索、罗列和显示软件包信息

使用 yum search <term> [more_terms] 命令,能够在已启用的软件包仓库中,对所有软件包的名称、描述和概述中进行搜索,最后,yum 会以显示符合合条件的搜索结果列表。

[lugir@hope ~]$ yum search totem

已加载插件:presto, refresh-packagekit, security

================================ Matched: totem ================================

gnome-python2-totem.i686 : 用于和 totem 交流的 python 绑定

oggconvert.noarch : Convert media files to Free formats

totem.i686 : Movie player for GNOME

totem-devel.i686 : Plugin writer's documentation for %{package}

totem-jamendo.i686 : Jamendo plugin for Totem

totem-lirc.i686 : LIRC (Infrared remote) plugin for Totem

totem-mozplugin.i686 : Mozilla plugin for Totem

totem-mythtv.i686 : MythTV plugin for Totem

totem-nautilus.i686 : Video and Audio Properties tab for Nautilus

totem-pl-parser.i686 : Totem Playlist Parser library

totem-pl-parser-devel.i686 : Development files for totem-pl-parser

totem-publish.i686 : Share your playlist with other Totems on the local network

totem-upnp.i686 : UPNP/DLNA plugin for Totem

totem-youtube.i686 : YouTube plugin for Totem

如果你不记得软件包的确切名称,但了解软件包的某些相关名词时,yum search 命令能够有效地帮助你找到想要的软件包。

软件包列表

yum list 以及相关的一些命令则能够为你提供有关软件包、软件包集和软件仓库的信息。

所有的 yum list 命令都能够使用 glob 表达式作为参数,对输出结果进行过滤。在 glob 表达式中,你可以使用 * 代表任何数量个字符,使用 ? 代表任何一个字符。通过后面的示例,你可以对 glob 表达式有些简单的认识。

yum list <glob_expr> [more_glob_exprs] ── 列出所有符合 glob 表达式的软件包

yum list all ── 列出所有已安装的和可用的软件包

yum list installed ── 列出所有已经安装在系统中的软件包。输出结果的最右边一列是取得该软件包的软件仓库。标识为 installed 的软件包则说明它是做为系统基本组件而预安装的。

yum list available ── 列出所有启用的软件仓库中可用的软件包

yum grouplist ── 列出所有软件包组

yum repolist ── 列出所有启用的软件仓库的 ID,名称 及其包含的软件包的数量

查看软件包信息

使用 yum info <package_name> [more_names] 命令可查看一个或多个软件包的信息 (此处同样可以应用 glob 表达式)。

[lugir@hope ~]$ yum info totem

已加载插件:presto, refresh-packagekit, security

已安装的软件包

名称       : totem

架构          : i686

版本          : 2.28.5

次要版本          : 1.fc12

大小          : 7.9 M

仓库          : installed

From repo  : updates

摘要          : Movie player for GNOME

URL        : http://projects.gnome.org/totem/

授权方式        : GPLv2+ with exceptions

描述          : Totem is simple movie player for the GNOME desktop. It features

              : a simple playlist, a full-screen mode, seek and volume controls,

              : as well as a pretty complete keyboard navigation.

              : 

              : Totem is extensible through a plugin system.

yum info <package_name> 与 rpm -q --info <package_name> 命令十分相似, 不过 yum 还能够提供软件包的软件仓库来源信息 (即输出结果中的 From repo 行)。

使用 Yum 安装软件包和软件包集

使用 Yum 安装软件包十分简单,只需要在 install 选项后面加上要安装的软件包的名称即可,就像yum install <package_name>,然后Yum就会帮你完成指定软件包以及相关的依赖性软件包的安装。

~]# yum install totem

通过增加软件包的名称,能够同时安装多个软件包 yum install <package_name> [more_names]

如果在 AMD64 或 Intel64 这类多运行库 (multilib) 的系统上安装软件包,可以在软件包名称后面加上平台类型 (.arch) ,选择特定平台的软件包。常用的软件包平台包括 i386, x86_68, i586, i686, 以及不区分平台的 .noarch,以下以 i686 平台的 totem 软件包为例:

~]# yum install totem.i686

如果要安装多个名称相似的软件包,可以使用 glob 表达式来简化安装命令,如:

~]# yum install audacious-plugin-*

除了通过提供软件包的名称进行软件包的安装,还能够通过提供文件名给 yum install 来实现包的安装。比如你知道某个软件包所包含的文件路径,但不知道它的软件包名称,可以使用 yum install <file_path> 进行安装

~]# yum install /etc/samba/smb.conf

上面这种安装方式的原理很简单,由 yum 去搜索所有的软件包列表,寻找包含 /etc/samba/smb.conf 文件的软件包,然后返回查询结果。

如果你只知道文件的名称,如 named,但不知它的具体位置。这时,可以使用 yum provides 命令,并结合 glob 表达式进行查询,例如使用以下命令查询所有包含 named 文件的软件包

~]# yum provides "*/named"

在输出结果中找到合适的软件包后,就可以通过软件包名称,使用 yum install 进行安装了

yum provides 与 yum whatprovides 的效果相同,但我们当然愿意使用更简单的命令 :D

安装软件包(组)集

软件包集实际上就是一些功能相同或相近的软件包集合。软件包集有名称和组标识,使用 yum grouplist -v 命令能够列出所有可用的软件包集的名称和组标识 (组标识位于右则括号中,就像本例中的 kde-desktop 和 kde-software-development)

~]# yum -v grouplist kde-*

...

有效的组:

   KDE 软件开发 (kde-software-development)

   KDE (K 桌面环境) (kde-desktop)

使用 yum groupinstall 命令,就能够通过名称或者组标识对安装软件包集如

~]# yum groupinstall kde-desktop

使用 Yum 移除软件包和软件包集

移除软件包和安装软件包同样简单,只需要使用 yum remove <package_name> 命令就可以移除指定的软件包,以及所有依赖于这个软件包的其它软件包。

移除软件包和安装软件包同样简单,只需要使用 yum remove <package_name> 命令就可以移除指定的软件包,以及所有依赖于这个软件包的其它软件包。通过在命令后面增加软件包的名称,能够一次性卸载多个软件包,如

~]# yum remove foo foo1 foo2

如同 install 选项一样,remove 也能够使用参数、软件包名称、 glob 表达式对软件包进行移除,具体用法可参考《使用 Yum 安装软件包和软件包集》

移除软件包集

移除软件组的命令与安装软件组相似,以下三种方式都能够实现软件组的卸载。

~]# yum groupremove "KDE (K Desktop Environment)"

~]# yum groupremove kde-desktop

~]# yum remove @kde-desktop

配置 Yum 和 Yum 软件包仓库

/etc/yum.conf 文件中包含的 [mian] 片段,使用户能够设置 yum 选项。[main] 片段中设置的值,对 yum 有全局影响,但可以被单独的 [repository] 片段中的值覆盖。

本部分内容包含

通过编辑 /etc/yum.conf 文件中的 [main] 片段,更改  yum 全局全局全局选项。

通过编辑 /etc/yum.conf 文件和 /etc/yum.repos.d/ 目录下的 .repo 文件中的 [repository] 片段,更改单独软件仓库的配置

通过 /etc/yum.conf 文件和 /etc/yum.repos.d/ 目录中的文件使用变量,正确处理软件包的版本和平台值

设置自定义软件包

/etc/yum.conf 文件中包含的 [mian] 片段,使用户能够设置 yum 选项。[main] 片段中设置的值,对 yum 有全局影响,但可以被单独的 [repository] 片段中的值覆盖。尽管可以在 /etc/yum.conf 文件中添加 [repository] 片段,但最好的方式还是在 /etc/yum.repos.d/ 目录中,创建新的或编辑已经存在的 .repo 文件。如果需要添加或编辑指定的软件仓库信息,情参考《设置 [repository] 选项》

Yum 配置文件 - [main] 选项的设置

/etc/yum.conf 配置文件中只包含一个 [main] 片段,用户可以向其中添加许多附加选项。其中一些选择的值影响 yum 的操作方式,一些影响 yum 对待软件仓库的方式。

了解有关 yum.conf 文件中的各个选项的值和说明信息,最好的方法是参考 yum.conf 的 man 文件,查看的命令为 man yum.conf

以下是 /etc/yum.conf 配置文件的示例:

[main]

cachedir=/var/cache/yum

keepcache=0

debuglevel=2

logfile=/var/log/yum.log

exactarch=1

obsoletes=1

gpgcheck=1

plugins=1

installonly_limit=3

[comments abridged]

# PUT YOUR REPOS HERE OR IN separate files named file.repo

# in /etc/yum.repos.d

 

有关 [main] 片段中常用的选项及说明

cachedir=/var/cache/yum 

选项指定 yum 存储 (软件包) 缓存和数据库文件的默认位置。其默认值为 /var/cache/yum

keepcache=[1 or 0]

设置 keepcache=1,yum 在成功安装软件包之后保留缓存的头文件 (headers) 和软件包。默认值为 keepcache=0

reposdir=[包含 .repo 文件的目录的绝对路径]

该选项用户指定 .repo 文件的绝对路径。.repo 文件包含软件仓库的信息 (作用与 /etc/yum.conf 文件中的 [repository] 片段相同)。

yum 从所有 .repo 文件以及 /etc/yum.conf 文件的 [repository] 片段中收集软件仓库的信息,并依此创建一个主仓库列表,用于请求传输软件包。

有关 .repo 文件和 [repository] 片段中能用到的选项的信息,请参考《配置 Yum 配置文件中的 [repository] 选项》

gpgcheck=[1 or 0];

该选项为所有软件仓库中 (及本地) 的软件包启用或禁用 GPG 签名验证。默认值为1,即启用 GPG 签名检测。

用户可以在不同的软件仓库配置中设置这个选项,并且单独的软件仓库配置中的值会覆盖 /etc/yum.conf 中的值。有关 GPG 签名检测的更多信息请参考《使用 RPM 验证软件包签名》

assumeyes=[1 or 0]

    该选项决定 yum 对于危险操作时是否给出提示。默认值为0,即不提示。当 assumeyes=1 时,在不应用 -y 选项时,yum 会给出提示。

exclude="[package_name] [more_names]"

选项允许用户在安装/升级的过程中,排除指定的软件包。排除多个软件包时应该使用引号("")包起来。这里同样允许使用 glob 表达式。

retries=[number_of_retries]

该选项设置返回错误消息前,yum 重试的次数。0 表示一直重试,默认值为 6。

Yum 配置文件 - [repository] 选项的设置

可以通过向 /etc/yum.conf 文件中添加 [repository] 片段 (其中 repository 为软件仓库标识,如 fedora),或者通过向 /etc/yum.repos.d/ 目录中添加 .repo 文件,实现单独软件仓库的定义。

/etc/yum.repos.d/ 中的所有 .repo 文件都会在 yum 下次运行时被读取。

最简单的 .repo 文件样式如下

[repository_ID]

name=A Repository Name

baseurl=http://path/to/repo

 

每个 [repository] 片段必须包含以下几部分

[软件包仓库标识]

软件包仓库标识是被方括号包围的单个单词(没有空格,没有下划线),并且不能与其它软件包仓库重名。

name=[软件包仓库名]

设置软件仓库的描述性信息

baseusrl=http://path/to/repo, ftp://path/to/repo, file://path/to/local/repo

设置软件仓库的 URL 目录,该目录包含软件仓库的仓库数据(repodata)目录,这个 URL 通常是 HTTP 链接,如 baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/

Yum 能够自动转换 URL 链接中的 $releasever, $arch 和 $basearch 变量,有关 yum 变量的说明,请参考《使用 Yum 变量》

如果软件包仓库使用 FTP 地址,使用 ftp://path/to/repo

如果软件包仓库使用本地地址,使用 file://path/to/local/repo

如果软件包仓库使用基本的 HTTP 验证,可以在 baseurl 前扩展用户名和密码进行身份验证,如 baseurl=http://user:password@www.example.com/repo/

可选配置选项

enabled=[1 or 0]

当某个软件仓库被配置成 enabled=0 时,yum 在安装或升级软件包时不会将该仓库做为软件包提供源。使用这个选项,可以启用或禁用软件仓库。

通过 yum 的 --enablerepo=[repo_name] 和 --disablerepo=[repo_name] 选项,或者通过 PackageKit 的"添加/删除软件"工具,也能够方便地启用和禁用指定的软件仓库。参考《刷新 PackageKit 软件源 (Yum 软件仓库)》

使用 Yum 变量

在《Yum 配置文件 - [repository] 选项的设置》中,提到 yum 命令和 yum 配置文件中需要使用到的一些变量,如 $releasever, $arch 和 $basearch,本节主要说明这些变量的来源及作用。

yum 配置文件是指 /etc/yum.conf 和 /etc/yum.repos.d/ 目录下的所有 .repo 配置文件

$releasever

此变量表示 Fedora 的发行版,yum 通过 /etc/yum.conf 文件,从 distrooverpky=<value> 行取得 $releasever 的值。如果 /etc/yum.conf 文件中没有这一行,yum 则从 redhat-release (应该是 fedora-release) 软件包中推算出正确的值.

$arch

此变量用于标识系统所用的 CPU 平台,变量的值通过 uname 命令得出,$arch 的有效值为 i586, i686 和 x86_64

$basearch

此变量用于参照系统的基本平台,例如,i686 和 i586 机器的基本平台是 i 386,AMD64 和 Intel64 机器的基本平台是 x86_64

$YUM0-9

$YUM0 ~ $YUM9 这十个变量分别被 shell 环境中的同名变量的值所替代。如果 /etc/yum.conf 文件中设置了这些变量,而 shell 环境中没有同名变量,它的值则不被代替。

创建 Yum 软件包仓库

按照以下步骤,即可以完成创建 Yum 软件包仓库的操作。这些命令会为你创建 Yum 软件包仓库必须的元数据,以及用于加速 yum 操作的 sqlite 数据库

按照以下步骤,即可以完成创建 Yum 软件包仓库的操作

1.安装 createrepo 软件包

~]# yum install createrepo

2.将所有软件包复制到某个目录下,如 /mnt/local_repo/

3.将第2步中使用的目录作为 createrepo --database 参数,执行命令

~]# createrepo --database /mnt/local_repo

以上命令会为你创建 Yum 软件包仓库必须的元数据,以及用于加速 yum 操作的 sqlite 数据库

启用、配置及禁用 Yum 插件

通过安装 Yum 插件,能够扩展及加强 Yum 的功能。当你使用 yum 命令的时候,yum 总是会向你显示已启用的插件信息。

[lugir@hope ~]$ yum info yum

已加载插件:presto, refresh-packagekit, security

...

注意:跟在 “已加载插件”(Loaded plugins) 后面的就是插件名称,你可以通过使用 

--disableplugins=<plugin_name> 禁用指定的插件。

要启用 yum 插件,确认 /etc/yum.conf 配置文件的 [main] 片段中存在以 plugins=1 的选项

plugins=1

将 plugins 的值设置为 0 即可禁用 yum 插件。

每个已安装的 yum 插件都有自己的配置文件,文件位于 /etc/yum/pluginconf.d/ 目录下,你可以在这些配置文件中设置与插件相关的选项,例如以下是 security 插件的配置文件 security.conf 文件中的内容

[main]

enabled=1

与 yum.conf 相同,插件配置文件总是包含一个 [main] 片段,其中包含 enable=<value> 选项,这个选项的值决定插件是否被启用。

如果 /etc/yum.conf 文件中配置了 enable=0,只有当插件在单独的配置文件中设置了启用,运行 yum 命令时,插件才会被使用。

如果你只是想在某个 yum 命令执行时禁用所有插件,可使用 --noplugins 选项。

如果你只是想在某个 yum 命令执行时禁用某个插件,可以使用 --disableplugin=<plugin_name>

~]# yum update --disableplugin=presto

如果禁用多个插件,插件名称之间用逗号分隔。使用插件名称时也支持 glob 表达式

~]# yum update --disableplugin=presto,refresh-pack*

常用 Yum 插件介绍

一般而言,Yum 插件软件包的名称都遵寻 yum-plugin-<plugin_name> 这样的格式,但也并非所有的插件都是如此,例如 presto 插件的软件包名称是 yum-presto。

在对常用的 Yum 插件进行介绍之前,还是先向你说明如何安装 Yum 插件。实际上,安装 Yum 插件十分简单,就和安装其它软件一样,例如要安装 yum-plugin-security 插件,只需执行以下命令即可。

~]# yum install yum-plugin-security

如果你对如何使用 Yum 安装软件包有疑问,可以参考《使用 Yum 安装软件包和软件包集》

常用 Yum 插件介绍

presto (yum-presto)

presto 插件让 yum 在升级时能够下载差异 RPM 软件包(delta RPM packages) 。差异软件包仅包含了已安装软件包与升级软件包两者之间不同的内容,通过下载差异软件包,能够大大降低下载时间、加快下载速度。

不过使用差异软件包需要对已经安装的软件包进行重建 (rebuild),即将不同中的内容应用到已经安装的软件包中,这需要一定的时间。

因此,使用 presto 插件是在下载时间和安装时间中做出选择,对于网络较慢机器较快的情况,presto 插件能够迅速下载差异软件包并安装。另一方面,网速快而机器慢,则可以禁用 presto 下载完整软件包并安装 (安装完整软件包比应用差异软件包所需时间较少)。 presto 插件默认安装并启用。

protect-packages (yum-plugin-protect-packages)

protect-packages 插件用于避免 yum 软件包或其它 yum 所依赖的软件包被移除,它也能避免许多系统运行所必要的软件包被移除。另外,你可以编辑 /etc/sysconfig/protected-packages 配置文件 (如果不存在可以自己创建) ,向其中添加的软件包都将受保护不被移除,添加时每行一个。

也可以在 /etc/sysconfig/protected-packages.d/ 目录中创建 .list 文件,每行添加一个软件包,所有 .list 文件中的软件包也将同样受到保护不被移除。

如果要临时取消软件包保护,执行 yum 命令时加上 --override-protection 选项

refresh-packagekit (PackageKit-yum-plugin)

当 yum 运行时,这个插件为 PackageKit 更新元数据,该插件默认安装并被启用。

security (yum-plugin-security)

对于系统管理员而言,方便且经常发现安全更新信息十分重要。出于这个目的,yum 提供了 security 插件,它为 yum 扩展了一系列以安全为中心的实用命令、子命令和选项。

~]# yum check-update --security

Loaded plugins: presto, refresh-packagekit, security

Limiting package lists to security relevant ones

Needed 3 of 7 packages, for security

elinks.x86_64                   0.12-0.13.pre3.fc11       fedora

kernel.x86_64                   2.6.30.8-64.fc11          fedora

kernel-headers.x86_64           2.6.30.8-64.fc11          fedora

You can then update the system using only the security-related updates (and

 excluding all others, such as bug fix updates) with the command:

~]# yum update --security

通过运行 man yum-security 可以查看 security 插件为 yum 增加的新功能及它们的详细用法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值