9.5. 配置 Yum 和 Yum 存储库
yum 及相关实用程序的配置信息位于 /etc/yum.conf
。此文件包含一个必填 [main]
部分,它允许您设置具有全局效果的 yum 选项,还可包含一个或多个 [repository]
部分,供您设置特定于存储库的选项。但是,建议您在 /etc/yum.repos.d/ 目录中的新或现有.
repo
文件中定义单独的仓库。您在 /etc/yum.conf
文件的单独 [repository] 部分中
定义的值会覆盖 [main]
部分中设置的值。
本节演示了如何:
-
通过编辑
/etc/yum.conf
配置文件的[main]
部分来设置全局 yum 选项; -
通过编辑 /etc/yum
.conf 和 /etc/yum.
repos.d/ 目录中的
为单个仓库设置选项;[repository
部分]
-
使用
/etc/yum.conf 中的
yum 变量以及/etc/yum.repos.d/
目录中的文件,以便正确处理动态版本和体系结构值; - 在命令行中添加、启用和禁用 yum 存储库;和
- 设置您自己的自定义 yum 存储库。
9.5.1. 设置 [main] 选项
/etc/yum.conf
配置文件正好包含一个 [main]
部分,本节中的一些键值对会影响 yum 的运行方式,另一些则影响 yum 如何处理存储库。
您可以在 /etc/yum.conf
中的 [main]
部分标题下添加多个附加选项。
/etc/yum.conf
配置文件示例类似如下:
[main] cachedir=/var/cache/yum/$basearch/$releasever 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]
部分中最常用的选项:
assumeyes
=valueassumeyes
选项确定 yum 是否提示确认关键操作。使用以下之一替换 value :0
(默认)- yum 提示确认其执行的关键操作。1
- 不提示确认重要的yum
操作.如果设置了assumeyes=1
,yum 的行为与命令行选项-y
和--assumeyes
相同。cachedir
=directory使用此选项设置 yum 存储其缓存和数据库文件的目录。使用 目录的绝对路径替换 directory。默认情况下,yum 的缓存目录为
/var/cache/yum/$basearch/$releasever/
。有关
$basearch 和 $
releasever
yum 变量的描述,请参阅 第 9.5.3 节 “使用 Yum 变量”。debuglevel
=value-
这个选项指定 yum 生成的输出调试详情。在这里,值是
1
到10
之间的整数。设置更高的调试级别
值会导致 yum 显示更详细的调试输出。debuglevel=2
是默认值,而debuglevel=0
禁用调试输出。 exactarch
=value使用这个选项时,您可以将 yum 设置为在更新已安装的软件包时考虑正确的架构。将 value 替换为:
0
- 在更新软件包时不考虑确切的架构。1
(默认)- 在更新包时考虑确切的架构。使用这个设置时,yum 不会安装 32 位体系结构的软件包,以更新已在具有 64 位体系结构的系统中安装的软件包。exclude
=package_name more_package_names-
exclude
选项允许您在安装或系统更新期间按关键字排除软件包。通过引用以空格分隔的软件包列表,可实现用于排除的多个软件包列表。允许使用通配符的 shell glob 表达式(如*
和?
)。 gpgcheck
=value使用
gpgcheck
选项指定 yum 是否应对包执行 GPG 签名检查。将 value 替换为:0
- 禁止对所有存储库中的软件包进行 GPG 签名检查,包括本地软件包安装.1
(默认)- 启用检查所有存储库中所有包的 GPG 签名,包括本地包安装.启用gpgcheck
后,将检查所有包的签名。如果在
/etc/yum.conf
文件的[main]
部分中设置了这个选项,它会为所有存储库设置 GPG 检查规则。但是,您也可以为单个存储库设置gpgcheck=值
;即,您可以在一个存储库上启用 GPG 检查,同时禁用另一个存储库。如果/etc/yum.conf
中存在单个存储库,则设置gpgcheck=值
会覆盖
默认值。group_command
=value使用
group_command
选项指定yum group install、yum
group upgrade
和yum group remove
命令如何处理软件包组。在以下位置替换 value :simple
- 安装软件包组的所有成员.仅升级之前安装的软件包,但不要安装在此期间添加到组中的软件包。compat
- 类似于simple
,但yum 升级
也会安装自上一次升级以来添加到组中的软件包。对象
- (默认.)使用这个选项,yum 跟踪之前安装的组,并区分作为组一部分安装的软件包和单独安装的软件包。请查看 例 9.15 “查看 LibreOffice 软件包组的信息”group_package_types
=package_type more_package_types-
您可以在调用
yum
group
install
命令时,指定安装哪些类型的包(可选、默认 或 必需)。默认选择默认 和强制软件包类型。 history_record
=value使用这个选项,您可以将 yum 设置为记录事务历史记录。使用以下之一替换 value :
0
- yum 不应该 记录事务的历史记录条目。1
(默认)- yum 应记录事务的历史记录条目.此操作需要一定数量的磁盘空间,并在事务中额外花费一些时间,但它提供了有关过去操作的许多信息,这些信息可通过yum history
命令显示。
history_record=1
是默认值。有关
yum
history
命令的详情请参考 第 9.4 节 “使用事务历史记录”。注意yum 使用历史记录来检测对 yum 之外已完成的
rpmdb
数据源的修改。在这种情况下,yum 显示警告并自动搜索更改rpmdb
导致的问题。当history_record
关闭后,yum 无法检测到这些更改并且不执行自动检查。installonlypkgs
=空格 分隔 的软件包 列表您可以在此处提供一个以空格分隔的软件包列表,供 yum 安装 ,但不会更新。有关默认仅安装的软件包列表,请参阅
yum.conf
(5)手册页。如果将
installonlypkgs
指令添加到/etc/yum.conf
,请确保列出应仅安装 的所有 包,包括yum.conf
(5)的installonlypkgs
部分下列出的任何包。特别是,请确保内核软件包始终在installonlypkgs
中列出(默认情况下,当它们是一样),并且installonly_limit
始终设置为大于2
的值,以便在默认软件包无法引导时始终可用备份内核。
installonly_limit
=value此选项设置
installonlypkgs
指令中列出的软件包数量,可以同时安装。使用代表installonlypkgs
中列出的任意单个软件包的最大版本数的整数替换 值。installonlypkgs
指令的默认值包含多个不同的内核软件包,因此请注意,更改installonly_limit
的值也会影响单个内核软件包安装版本的最大数量。/etc/yum.conf
中列出的默认值是installonly_limit=3
,最小可能的值为installonly_limit=2
。您无法设置
installonly_limit=1
,因为这会阻止 yum 删除正在运行的内核。如果使用installonly_limit=1
,yum 将失败。使用
installonly_limit=2
可确保一个备份内核可用。但是,建议保留默认设置installonly_limit=3
,以便您有两个备份内核可用。keepcache
=valuekeepcache
选项决定 yum 在安装成功后是否保留标头和软件包的缓存。在这里,值是 :0
(默认)- 在成功安装后,请勿保留标头和软件包的缓存。1
- 在成功安装后保留缓存.logfile
=file_name-
要指定日志输出的位置,请将 file_name 替换为 yum 应在其中写入其日志输出的文件的绝对路径。默认情况下,yum logs to
/var/log/yum.log
。 max_connenctions
=number- 此处的值代表并发连接的最大数量,默认为 5。
multilib_policy
=value如果有多个架构版本可用于软件包安装,则
multilib_policy
选项会设置安装行为。在这里,值代表 :最佳
- 为这个系统安装最佳选择架构.例如:在 AMD64 系统中设置multilib_policy=best
会导致 yum 安装 64 位软件包版本。all
- 始终为每个软件包安装所有可能的架构.例如:当 AMD64 系统中将multilib_policy
设置为all
时,yum 会安装软件包的 i686 和 AMD64 版本(如果两者都可用)。obsoletes
=valueobsoletes
选项在更新过程中启用过时的进程逻辑。When 在其 spec 文件中声明它弃用 了 另一个软件包,在安装了前一个软件包时,前一个软件包会被替换掉。例如,当软件包被重命名时,会声明过时的项。使用以下之一替换 value :0
- 在执行更新时禁用 yum 的过时处理逻辑。1
(默认)- 在执行更新时启用 yum 的过时处理逻辑。plugins
=value这是一个全局交换机来启用或禁用 yum 插件,value 是:
0
- 全局禁用所有 yum 插件.重要不建议禁用所有插件,因为某些插件提供重要的 yum 服务。特别是 product-id 和 subscription-manager 插件,它支持基于证书
的内容交付网络
(CDN)。全局禁用插件作为方便选项,通常仅在诊断 yum 潜在问题时才建议使用。1
(默认)- 全局启用所有 yum 插件.使用plugins=1
时,您仍然可以通过在该插件配置文件中设置enabled=0
来禁用特定的 yum 插件。有关各种 yum 插件的详情请参考 第 9.6 节 “yum 插件”。有关控制插件的详情请参考 第 9.6.1 节 “启用、配置和禁用 Yum 插件”。
reposdir
=directory-
此处,目录 是指向其中
.repo 文件的
目录的绝对路径。all.repo
文件包含存储库信息(类似于/etc/yum.conf
的 [ repository] 部分
)。yum 从.repo
文件和/etc/yum.conf
文件的[repository] 部分
收集所有存储库信息,以创建要用于事务的存储库的主列表。如果没有设置reposdir
,yum 将使用默认目录/etc/yum.repos.d/
。 retries
=value-
此选项设置 yum 在返回错误之前应尝试检索文件的次数。值 是一个整数
0
或更高。将值设为0
时,yum 会永久重试。默认值为10
。
有关可用 [main]
选项的完整列表,请查看 yum.conf(5)手册页中的 [main] OPTIONS
部分。
9.5.2. 设置 [repository] 选项
[repository]
部分,其中 repository 是唯一存储库 ID,如 my_personal_repo
(不允许空间),允许您定义单独的 yum 存储库。为避免冲突,自定义存储库不应使用红帽存储库使用的名称。
以下是 [repository] 部分
采用的形式的最小示例:
[repository] name=repository_name baseurl=repository_url
每个 [repository
] 部分必须包含以下指令:
name
=repository_name- 此处 repository_name 是描述存储库的人类可读字符串。
baseurl
=repository_url使用存储库数据目录所在目录的 URL 替换 repository_url :
-
如果存储库通过 HTTP 提供,请使用:
http://path/to/repo
-
如果仓库可以通过 FTP 获得,请使用:
ftp://path/to/repo
-
如果存储库对机器是本地的,请使用:
file:///path/to/local/repo
如果特定的在线存储库需要基本的 HTTP 身份验证,您可以通过将用户名和密码放在 URL 中作为
用户名 :密码@链接
来指定您的用户名和密码。例如,如果 http://www.example.com/repo/ 上的存储库需要用户名"user"和密码"password",则baseurl
链接可以指定为 http://user:/repo/。这个 URL 通常是一个 HTTP 链接,例如:
baseurl=http://path/to/repo/releases/$releasever/server/$basearch/os/
请注意,yum 总是扩展 URL
中的 $releasever
、$arch
和$basearch
变量。有关 yum 变量的详情请参考 第 9.5.3 节 “使用 Yum 变量”。
-
如果存储库通过 HTTP 提供,请使用:
其他有用的 [repository]
指令包括:
enabled
=value这是告诉 yum 使用或忽略特定库的简单方法,value 是:
0
- 在执行更新和安装时,不要将此存储库作为软件包源包含在内。这是快速打开和关闭存储库的一种简单方法,当您希望从不需要启用更新或安装的仓库中单个软件包时,这很有用。1
- 将此仓库作为包源包含在内.也可以通过将
--enablerepo=repo_name 或
选项传递到--disablerepo=repo_name
yum
,或通过 PackageKit 程序的Add/Remove Software
窗口来执行打开和关闭存储库。async
=value控制存储库软件包的并行下载。在这里,值是 :
auto
(默认)- 如果可能,将使用并行下载,这意味着 yum 会自动为插件创建的存储库禁用它,以避免故障。on
- 为存储库启用并行下载。off
- 禁止并行下载。
还有 [存储库]
选项,其中一部分具有与特定 [main] 选项
相同的形式和功能。有关完整列表,请查看 yum.conf(5)手册页中的 [repository] OPTIONS
部分。
例 9.25. /etc/yum.repos.d/redhat.repo 文件示例
以下是 /etc/yum.repos.d/redhat.repo
文件示例:
# # Red Hat Repositories # Managed by (rhsm) subscription-manager # [red-hat-enterprise-linux-scalable-file-system-for-rhel-6-entitlement-rpms] name = Red Hat Enterprise Linux Scalable File System (for RHEL 6 Entitlement) (RPMs) baseurl = https://cdn.redhat.com/content/dist/rhel/entitlement-6/releases/$releasever/$basearch/scalablefilesystem/os enabled = 1 gpgcheck = 1 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release sslverify = 1 sslcacert = /etc/rhsm/ca/redhat-uep.pem sslclientkey = /etc/pki/entitlement/key.pem sslclientcert = /etc/pki/entitlement/11300387955690106.pem [red-hat-enterprise-linux-scalable-file-system-for-rhel-6-entitlement-source-rpms] name = Red Hat Enterprise Linux Scalable File System (for RHEL 6 Entitlement) (Source RPMs) baseurl = https://cdn.redhat.com/content/dist/rhel/entitlement-6/releases/$releasever/$basearch/scalablefilesystem/source/SRPMS enabled = 0 gpgcheck = 1 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release sslverify = 1 sslcacert = /etc/rhsm/ca/redhat-uep.pem sslclientkey = /etc/pki/entitlement/key.pem sslclientcert = /etc/pki/entitlement/11300387955690106.pem [red-hat-enterprise-linux-scalable-file-system-for-rhel-6-entitlement-debug-rpms] name = Red Hat Enterprise Linux Scalable File System (for RHEL 6 Entitlement) (Debug RPMs) baseurl = https://cdn.redhat.com/content/dist/rhel/entitlement-6/releases/$releasever/$basearch/scalablefilesystem/debug enabled = 0 gpgcheck = 1 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release sslverify = 1 sslcacert = /etc/rhsm/ca/redhat-uep.pem sslclientkey = /etc/pki/entitlement/key.pem sslclientcert = /etc/pki/entitlement/11300387955690106.pem
9.5.3. 使用 Yum 变量
您可以在 yum 命令和所有 yum
配置文件(即 /etc/yum .conf 和 /etc/yum.
目录中的 repos.
d/ all.repo
文件)中使用和引用以下内置变量:
$releasever
-
您可以使用这个变量来引用 Red Hat Enterprise Linux 的发行版本。yum 从
/etc/yum.conf
配置文件中的 distroverpkg=value
行获取$releasever
的值。如果/etc/yum.conf
中没有此类行,那么 yum 会从提供 redhat-release文件的
redhat-release产品
包中获得版本号来推断正确的值。 $arch
-
您可以在调用 Python 的s
os.uname()
功能时,使用此变量指代系统的 CPU 架构。$arch
的有效值包括:i586
、i686
和x86_64
。 $basearch
-
您可以使用
$basearch
来引用系统基本架构。例如,i686 和 i586 机器都具有i386
基本架构,AMD64 和 Intel 64 机器基本架构为x86_64
。 $YUM0-9
-
这些十个变量各自替换为同名任何 shell 环境变量的值。如果其中一个变量被引用(例如在
/etc/yum.conf
中)和一个具有相同名称的 shell 环境变量不存在,则不会替换配置文件变量。
要定义自定义变量或覆盖现有变量的值,请在 /etc/yum/vars/
目录中创建一个名称与变量相同的文件(不含 "$
" 符号),并在第一行中添加所需的值。
例如,存储库描述通常包含操作系统名称。要定义名为 $osname
的新变量,请在第一行中创建一个带有"Red Enterprise Linux"的新文件,并将它保存为 /etc/yum/vars/osname
:
~]# echo "Red Hat Enterprise Linux 7" > /etc/yum/vars/osname
现在,您可以在 .repo
文件中使用以下内容而不是 " Red Hat Enterprise Linux 7":
name=$osname $releasever
9.5.4. 查看当前配置
要显示全局 yum 选项(即 /etc/yum.conf
文件的 [main]
部分指定的选项)的当前值,请使用不带命令行选项的 yum-config-manager
命令执行 yum-config-manager 命令:
yum-config-manager
要列出不同配置部分或部分的内容,请使用以下格式的命令:
yum-config-manager
section…
您还可以使用 glob 表达式显示所有匹配部分的配置:
yum-config-manager glob_expression…
例 9.26. 查看主部分的配置
要列出所有配置选项及其主部分对应的值,在 shell 提示符后输入以下内容:
~]$ yum-config-manager main \* Loaded plugins: langpacks, product-id, subscription-manager ================================== main =================================== [main] alwaysprompt = True assumeyes = False bandwith = 0 bugtracker_url = https://bugzilla.redhat.com/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%206&component=yum cache = 0 [output truncated]
9.5.5. 添加、启用和禁用 Yum 存储库
为了扩展您的专业知识,您可能还对红帽系统管理三(RH254) 培训课程感兴趣。
第 9.5.2 节 “设置 [repository] 选项” 描述用来定义 yum 存储库的各种选项。本节介绍如何使用 yum-config-manager
命令添加、启用和禁用存储库。
使用红帽订阅管理注册到基于证书 的内容交付网络
(CDN)时,Red Hat Subscription Manager 工具 用于管理 /etc/yum.repos.d/redhat.repo
文件中的存储库。
添加 Yum 存储库
要定义新存储库,您可以将 [repository] 部分
添加到 /etc/yum.conf
文件,也可以添加到 /etc/yum.repos.d/ 目录中的 a.
repo
文件。此目录中带有 .repo
文件扩展名的所有文件都由 yum 读取,建议您在此处定义您的程序库,而不是在 /etc/yum.conf
中定义。
从红帽 的内容交付网络
(CDN)之外的不受验证或不受信任的软件来源获取和安装软件包会带来潜在的安全风险,并可能导致安全性、稳定性、兼容性和可维护性问题。
Yum 存储库通常提供自己的 .repo
文件。要在您的系统中添加此类存储库并启用它,以 root
用户身份运行以下命令:
yum-config-manager --add-repo repository_url
… repository_url 是指向 .repo
文件的链接。
例 9.27. 添加 example.repo
要添加位于 http://www.example.com/example.repo 的存储库,在 shell 提示符下输入以下内容:
~]# yum-config-manager --add-repo http://www.example.com/example.repo Loaded plugins: langpacks, product-id, subscription-manager adding repo from: http://www.example.com/example.repo grabbing file http://www.example.com/example.repo to /etc/yum.repos.d/example.repo example.repo | 413 B 00:00 repo saved to /etc/yum.repos.d/example.repo
启用 Yum 存储库
要启用特定的存储库或存储库,以 root
用户身份在 shell 提示符后输入以下内容:
yum-config-manager
--enable
repository…
…其中 repository 是唯一的存储库 ID(使用 yum repolist all
列出可用的存储库 ID)。或者,您可以使用 glob 表达式启用所有匹配的软件仓库:
yum-config-manager --enable glob_expression…
例 9.28. 启用 /etc/yum.conf 的自定义部分中定义的仓库.
要启用 [example]、[example
-debuginfo]
和 [example-source]
部分中定义的软件仓库,请输入:
~]# yum-config-manager --enable example\* Loaded plugins: langpacks, product-id, subscription-manager ============================== repo: example ============================== [example] bandwidth = 0 base_persistdir = /var/lib/yum/repos/x86_64/7Server baseurl = http://www.example.com/repo/7Server/x86_64/ cache = 0 cachedir = /var/cache/yum/x86_64/7Server/example [output truncated]
例 9.29. 启用所有软件仓库
要启用 /etc/yum .conf 文件和 /etc/yum.
repos.d/
目录中定义的所有软件仓库,请输入:
~]# yum-config-manager --enable \* Loaded plugins: langpacks, product-id, subscription-manager ============================== repo: example ============================== [example] bandwidth = 0 base_persistdir = /var/lib/yum/repos/x86_64/7Server baseurl = http://www.example.com/repo/7Server/x86_64/ cache = 0 cachedir = /var/cache/yum/x86_64/7Server/example [output truncated]
成功后,yum-config-manager --enable
命令显示当前的存储库配置。
禁用 Yum 存储库
要禁用 yum 存储库,以 root
用户身份运行以下命令:
yum-config-manager
--disable
repository…
…其中 repository 是唯一的存储库 ID(使用 yum repolist all
列出可用的存储库 ID)。与 yum-config-manager --enable
类似,您可以使用 glob 表达式同时禁用所有匹配的存储库:
yum-config-manager --disable glob_expression…
例 9.30. 禁用所有软件仓库
要禁用在 /etc/yum.conf 文件和 /etc/yum
. repos.d/
目录中定义的所有软件仓库,请输入:
~]# yum-config-manager --disable \* Loaded plugins: langpacks, product-id, subscription-manager ============================== repo: example ============================== [example] bandwidth = 0 base_persistdir = /var/lib/yum/repos/x86_64/7Server baseurl = http://www.example.com/repo/7Server/x86_64/ cache = 0 cachedir = /var/cache/yum/x86_64/7Server/example [output truncated]
成功后,yum-config-manager --disable
命令显示当前配置。
9.5.6. 创建 Yum 存储库
设置 yum 存储库:
安装 createrepo 软件包:
# yum install createrepo
将新存储库的所有软件包复制到一个目录中,如
/tmp/local_repo/
:cp /your/packages/*.rpm /tmp/local_repo/
创建存储库运行:
createrepo /tmp/local_repo/
这会为 yum 存储库创建必要的元数据,并将元数据放置在新创建的子目录
repodata
中。现在,该程序库可以被 yum 使用。此存储库可以通过 HTTP 或 FTP 协议共享,或者直接从本地计算机引用。有关如何配置 yum 软件仓库的详情,请查看 第 9.5.2 节 “设置 [repository] 选项” 部分。
注意在构建存储库的 URL 时,请参考
/mnt/local_repo
,而不是/mnt/local_repo/repodata
,因为此目录仅包含元数据。实际的 yum 软件包位于/mnt/local_repo 中
。
9.5.6.1. 将软件包添加到已创建的 yum 软件仓库
将软件包添加到已创建的 yum 存储库:
将新软件包复制到您的仓库目录中,如
/tmp/local_repo/
:cp /your/packages/*.rpm /tmp/local_repo/
要反映元数据中新添加的软件包,请运行:
createrepo --update /tmp/local_repo/
可选:如果您已经使用任何 yum 命令用于新更新的存储库,请运行:
yum clean expire-cache
9.5.7. 添加 Optional 和 Supplementary 存储库
可选和补充订阅频道为 Red Hat Enterprise Linux 提供了额外的软件包,包括开源许可软件(在可选频道中)和专有许可软件(在 Supplementary 频道中)。
在订阅 Optional 和 Supplementary 频道前,请查看覆盖范围详情。如果您决定从这些频道安装软件包,请按照红帽客户门户网站中名为 How to access Optional 和 Supplementary 频道以及 -devel 软件包(RHSM)中的步骤进行操作。