Yum
Yum是Red Hat软件包管理器,它能够查询有关可用软件包的信息,从存储库获取软件包,安装和卸载软件包,以及将整个系统更新到最新的可用版本。Yum在更新,安装或删除软件包时执行自动依赖性解析,因此能够自动确定,获取和安装所有可用的依赖软件包。
Yum可以配置新的,额外的存储库或包源,还提供许多增强和扩展其功能的插件。百胜可以执行许多与RPM相同的任务; 此外,许多命令行选项都是类似的。Yum可以在一台计算机或一组计算机上轻松简单地进行包管理。
检查和更新包
通过Yum,可以检查系统是否有等待应用的更新。可以列出需要更新的软件包并将其作为整体进行更新,也可以更新选定的单个软件包。
查询更新
要查看系统上哪些已安装的软件包具有可用更新,请使用以下命令:
yum check-update
yum check-update 的输出类似这样:
更新包
您可以选择一次更新单个包,多个包或所有包。如果您更新的软件包或软件包的任何依赖项本身都有可用的更新,那么它们也会更新。
更新单个包
要更新单个程序包,请运行以下命令root
:
yum update 包名
yum 提供更新信息,然后提示您确认更新; yum默认以交互方式运行。如果您已经知道yum
命令计划执行哪些事务,则可以使用该-y
选项自动回答yes
yum请求的任何问题(在这种情况下,它以非交互方式运行)。但是,您应该始终检查yum计划对系统进行哪些更改,以便您可以轻松解决可能出现的任何问题。您也可以选择下载软件包而无需安装它。为此,请d
在下载提示中选择该选项。这将启动所选包的后台下载。
如果事务失败,您可以使用yum history
所述的命令查看yum事务历史。
无论您是否使用yum update
或yum install
命令,Yum始终会安装新内核。
当使用RPM,而另一方面,它使用是很重要的rpm -i kernel
,其安装一个新的内核,而不是命令rpm -u kernel
其替换当前内核。
同样,可以更新包组。
yum group update 组名
更新所有包及其依赖项
要更新所有包及其依赖项,请使用yum update
不带任何参数的命令:
yum update
更新与安全相关的包
如果程序包具有可用的安全更新,则只能将这些程序包更新为其最新版本。
yum update --security
您还可以仅将包更新到包含最新安全更新的版本。
yum update-minimal --security
例如,假设:
该内核3.10.0-1软件包安装在系统上;
该内核3.10.0-2包发布的安全更新;
该内核3.10.0-3包被发布了作为一个bug修复更新。
然后yum update-minimal --security
将软件包更新到kernel-3.10.0-2,并将yum update --security
软件包更新到kernel-3.10.0-3。
自动化包更新
要刷新包数据库并自动下载更新,您可以使用该yum-cron
服务。
使用ISO和Yum离线升级系统
对于与Internet或Red Hat Network断开连接的系统,使用yum update
带有Red Hat Enterprise Linux安装的命令,ISO映像是将系统升级到最新次要版本的简便快捷方式。以下步骤说明了升级过程:
创建目标目录以装入ISO映像。安装时不会自动创建此目录,因此请在继续下一步之前创建该目录。作为
root
,键入:mkdir mount_dir
将mount_dir替换为mount目录的路径。通常,用户将其创建为目录中的
/media
子目录。将Red Hat Enterprise Linux 7安装ISO映像挂载到先前创建的目标目录。作为
root
,键入:mount -o loop iso_name mount_dir
更换ISO_NAME与路径,以您的ISO映像,并mount_dir与到目标目录的路径。此处,
-o``loop
需要该选项将文件作为块设备安装。将
media.repo
文件从mount目录复制到该/etc/yum.repos.d/
目录。请注意,此目录中的配置文件必须具有.repo扩展名才能正常运行。cp mount_dir/media.repo /etc/yum.repos.d/new.repo
这将为yum存储库创建配置文件。将new.repo替换为文件名,例如rhel7.repo。
编辑新配置文件,使其指向Red Hat Enterprise Linux安装ISO。将以下行添加到文件中:
/etc/yum.repos.d/*new.repo*
baseurl = file:/// mount_dir
将mount_dir替换为安装点的路径。
更新所有yum存储库,包括在先前步骤中创建的。作为,键入:
/etc/yum.repos.d/*new.repo*``root
yum update
这会将您的系统升级到安装的ISO映像提供的版本。
成功升级后,您可以卸载ISO映像。作为
root
,键入:umount mount_dir
其中mount_dir是mount目录的路径。此外,您可以删除在第一步中创建的安装目录。作为
root
,键入:rmdir mount_dir
如果您不将先前创建的配置文件用于其他安装或更新,则可以将其删除。作为
root
,键入:rm /etc/yum.repos.d/new.repo
例:从CentOS7.0升级到7.5
如果需要使用具有较新版本系统的ISO映像升级系统而无法访问Internet,例如CentOS-7-x86_64-Everything-1804.iso
,请创建用于安装的目标目录,例如/media/centos7/
。
〜]# mount -o loop CentOS-7-x86_64-Everything-1804.iso /media/centos7/
要使yum将挂载点识别为存储库,请将以下行添加到/etc/yum.repos.d/centos.repo
:
baseurl=file:///media/centos7/
现在,更新yum存储库会将您的系统升级到由CentOS-7-x86_64-Everything-1804.iso
。提供的版本。
〜]# yum update
系统升级成功后,可以卸载映像,删除目标目录和配置文件:
〜]# umount /media/centos7/〜]# rmdir /media/centos7/〜]# rm /etc/yum.repos.d/centos.repo
使用包
Yum使您能够使用软件包执行一整套操作,包括搜索包,查看有关包,安装和删除的信息。
搜索包
您可以使用以下命令搜索所有RPM包名称,描述和摘要:
yum search xxx
获得更全更详尽的慢搜索:
yum search all xxx
清单包
要列出有关所有已安装和可用软件包的信息,请在shell提示符下键入以下内容:
yum list all
要列出与插入的glob表达式匹配的已安装和可用的包,请使用以下命令:
yum list glob_expression…
要列出系统上安装的所有软件包,请使用installed
关键字。输出中最右边的列列出了从中检索包的存储库。
yum list installed glob_expression ...
例如
yum list available gstreamer\*plugin\*
列出存储库
要列出系统上每个已启用存储库的存储库ID,名称和程序包数,请使用以下命令:
yum repolist
要列出有关这些存储库的更多信息,请添加该-v
选项。启用此选项后,将为每个列出的存储库显示包括文件名,总大小,上次更新日期和基本URL的信息。或者,您可以使用repoinfo
生成相同输出的命令。
yum repoinfo
yum repolist -v
要列出启用和禁用的存储库,请使用以下命令。状态列将添加到输出列表中,以显示启用了哪些存储库。
yum repolist all
通过disabled
作为第一个参数传递,可以将命令输出减少到禁用的存储库。为了进一步说明,您可以将存储库的ID或名称或相关的glob_expressions作为参数传递。请注意,如果存储库ID或名称与插入的参数之间存在完全匹配,则即使未通过启用或禁用的过滤器,也会列出此存储库。
显示包信息
要显示有关一个或多个包的信息,请使用以下命令(glob表达式在此处也有效):
yum info package_name ...
例如显示nginx的包信息
[root@localhost ~]# yum info nginxLoaded plugins: fastestmirror, langpacks, product-id, search-disabled-repos, subscription-managerThis system is not registered with an entitlement server. You can use subscription-manager to register.Loading mirror speeds from cached hostfile * base: mirrors.tuna.tsinghua.edu.cn * epel: mirrors.tuna.tsinghua.edu.cn * extras: mirrors.tuna.tsinghua.edu.cn * updates: mirrors.tuna.tsinghua.edu.cnInstalled PackagesName : nginxArch : x86_64Epoch : 1Version : 1.12.2Release : 2.el7Size : 1.5 MRepo : installedFrom repo : epelSummary : A high performance web server and reverse proxy serverURL : http://nginx.org/License : BSDDescription : Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and : IMAP protocols, with a strong focus on high concurrency, performance and low : memory usage.
rpm -q --info package_name
同样可以查看包信息
使用yumdb
还可以使用以下命令在yum数据库中查询有关包的替代和有用信息:
此命令提供有关包的其他信息,包括包的校验和(以及用于生成它的算法,如SHA-256),在命令行上给出的用于安装包的命令(如果有)以及在系统上安装软件包的原因(user
表示它是由用户安装的,并且dep
表示它是作为依赖项引入的)。
安装包
要安装单个程序包及其所有未安装的依赖项
yum install package_name
还可以通过将其名称作为参数附加来同时安装多个软件包。
yum install package_name package_name ...
模糊匹配
yum install audacious-plugins-\*
yum install
还可以提供文件名。如果您知道要安装的二进制文件的名称,而不知道其软件包名称,则可以指定yum install
路径名称。
yum install /usr/sbin/named
正如您在上面的示例中所看到的,yum install
命令不需要严格定义的参数。它可以处理各种格式的包名称和glob表达式,这使得用户的安装更加容易。另一方面,yum需要一些时间才能正确解析输入,特别是如果指定了大量的包。要优化程序包搜索,可以使用以下命令显式定义如何解析参数:
使用install-n
,yum将name解释为包的确切名称。install-na
命令告诉yum后续参数包含包名称和体系结构除以点字符。有了install-nevra
,yum会期望以name-epoch:version-release.architecture的形式出现一个参数。同样,您可以在搜索要删除的包时使用yum remove-n
,yum remove-na
和yum remove-nevra
。
yum install-n package_nameyum install-na name.architectureyum install-nevra name-epoch:version-release.architecture
如果您知道要安装包含named
二进制文件的软件包,但您不知道文件安装在哪个目录bin/
或sbin/
目录中,请使用yum provides
带有glob表达式的命令:
[root@localhost ~]# yum provides "*bin/mysql"Loaded plugins: fastestmirror, langpacks, product-id, search-disabled-repos, subscription-managerThis system is not registered with an entitlement server. You can use subscription-manager to register.Loading mirror speeds from cached hostfile * base: mirrors.nwsuaf.edu.cn * epel: mirrors.tuna.tsinghua.edu.cn * extras: mirrors.tuna.tsinghua.edu.cn * updates: mirrors.163.com1:mariadb-5.5.56-2.el7.x86_64 : A community developed branch of MySQLRepo : baseMatched from:Filename : /usr/bin/mysql1:mariadb-5.5.60-1.el7_5.x86_64 : A community developed branch of MySQLRepo : updatesMatched from:Filename : /usr/bin/mysql1:mariadb-5.5.56-2.el7.x86_64 : A community developed branch of MySQLRepo : @baseMatched from:Filename : /usr/bin/mysql
安装过程
以下示例提供了使用yum进行安装的概述。要下载并安装最新版本的httpd软件包,
~]# yum install httpdLoaded plugins: langpacks, product-id, subscription-managerResolving Dependencies--> Running transaction check---> Package httpd.x86_64 0:2.4.6-12.el7 will be updated---> Package httpd.x86_64 0:2.4.6-13.el7 will be an update--> Processing Dependency: 2.4.6-13.el7 for package: httpd-2.4.6-13.el7.x86_64--> Running transaction check---> Package httpd-tools.x86_64 0:2.4.6-12.el7 will be updated---> Package httpd-tools.x86_64 0:2.4.6-13.el7 will be an update--> Finished Dependency ResolutionDependencies Resolved
执行上述命令后,yum加载必要的插件并运行事务检查。在这种情况下,httpd已经安装。由于安装的软件包比最新的当前可用版本旧,因此将进行更新。这同样适用于httpd所依赖的httpd-tools包。然后,显示事务摘要:
================================================================================ Package Arch Version Repository Size================================================================================Updating: httpd x86_64 2.4.6-13.el7 rhel-x86_64-server-7 1.2 MUpdating for dependencies: httpd-tools x86_64 2.4.6-13.el7 rhel-x86_64-server-7 77 kTransaction Summary================================================================================Upgrade 1 Package (+1 Dependent package)Total size: 1.2 MIs this ok [y/d/N]:
在此步骤中,yum会提示您确认安装。除y
(是)和N
(否)选项外,您可以选择d
(仅下载)下载软件包,但不能直接安装它们。如果选择y
,安装将继续以下消息,直到成功完成。
要从系统上的本地目录安装以前下载的软件包,请使用以下命令:
yum localinstall path
将path替换为要安装的程序包的路径。
下载包
在某个安装过程中,系统会提示您使用以下消息确认安装:
使用d
选项,yum下载包而不立即安装它们。您可以稍后使用yum localinstall
命令脱机安装这些软件包,也可以使用其他设备共享它们。默认情况下,下载的包保存在缓存目录的一个子目录中/var/cache/yum/$basearch/$releasever/packages/
。下载以后台模式进行,以便您可以并行使用yum进行其他操作。
删除包
与软件包安装类似,yum允许您卸载它们。要卸载特定软件包以及依赖于它的任何软件包:
yum remove package_name…
使用包组
包组是一组用于通用目的的包,例如System Tools或Sound and Video。安装软件包组会提取一组依赖软件包,从而大大节省了时间。yum groups
命令是一个顶级命令,它涵盖了yum中对包组进行操作的所有操作。
列出包组
summary
选项用于查看已安装组,可用组,可用环境组以及已安装和可用语言组的数量:
yum groups summary
要列出yum存储库中的所有软件包组,请添加该list
选项。您可以按组名称过滤命令输出。
yum group list glob_expression ...
安装包组
每个包组都有一个名称和一个组ID(groupid)。要列出括号中显示的所有包组的名称及其组ID,请键入:
yum group list ids
查找包组的名称和groupid
要查找程序包组的名称或ID,例如与KDE桌面环境相关的组,
~]$ yum group list ids kde\*Available environment groups: KDE Plasma Workspaces (kde-desktop-environment)Done
某些组被配置的存储库中的设置隐藏。例如,在服务器上,也可以使用hidden
命令选项列出隐藏的组:
~]$ yum group list hidden ids kde\*Loaded plugins: product-id, subscription-managerAvailable Groups: KDE (kde-desktop)Done
您可以通过将其完整组名称(不带groupid部分)传递给group install
命令来安装程序包组。
yum group install "group name"
您也可以通过groupid安装。
yum group install groupid
可以将groupid或带引号的组名称传递给该命令,yum
表示您要执行该命令group install
yum install @group
安装KDE桌面组的四种等效方法
可以使用四种替代但等效的方法来安装软件包组。对于KDE Desktop,命令如下所示:
~]# yum group install "KDE Desktop"~]# yum group install kde-desktop~]# yum install @"KDE Desktop"~]# yum install @kde-desktop
删除包组
可以使用类似于install
语法的语法删除包组,并使用包组的名称或其ID
yum group remove group_nameyum group remove groupid
此外,remove
如果您使用@ -symbol 前面的命令,可以将groupid或带引号的名称传递给该命令,命令告诉yum您要执行该命令group remove
。
yum remove @group
将group替换为groupid或带引号的组名。同样,您可以替换环境组:
yum remove @^group
删除KDE Desktop组的四种等效方法
与安装类似,您可以使用四种替代但等效的方法来删除软件包组。对于KDE Desktop,命令如下所示:
~]# yum group remove "KDE Desktop"~]# yum group remove kde-desktop~]# yum remove @"KDE Desktop"~]# yum remove @kde-desktop
yum 历史记录
yum history
命令使用户能够查看有关yum事务的时间线, 它们发生的日期和时间,受影响的包的数量,这些事务是成功还是中止以及RPM数据库是否在事务之间更改的信息。此外,此命令可用于撤消或重做某些事务. 所有历史数据都存储在目录/var/lib/yum/history/
中的历史DB中
事务列表
To display a list of the twenty most recent transactions, as root
, either run yum history
with no additional arguments, or type the following at a shell prompt:
yum history list
要显示所有事务,请添加all
关键字
yum history list all
要仅显示给定范围内的事务,请使用以下格式的命令:
yum history list start_id..end_id
您还可以仅列出有关特定包或包的事务。为此,请使用包名称或glob表达式的命令:
yum history list glob_expression…
列出五个最旧的事务
在yum history list
输出中,最近的事务显示在列表的顶部。要显示有关历史数据库中存储的五个最旧事务的信息,请键入:
~]# yum history list 1..5Loaded plugins: langpacks, product-id, subscription-managerID | Login user | Date and time | Action(s) | Altered------------------------------------------------------------------------------- 5 | User| 2013-07-29 15:33 | Install | 1 4 | User | 2013-07-21 15:10 | Install | 1 3 | User | 2013-07-16 15:27 | I, U | 73 2 | System | 2013-07-16 15:19 | Update | 1 1 | System | 2013-07-16 14:38 | Install | 1106history list
所有形式的yum history list
命令都会生成表格输出,每行包含以下列:
ID
— 标识特定事务的整数值.Login user
— 登录会话用于启动事务的用户的名称。Date and time
— 事务发生的日期和时间。Action(s)
— 事务期间执行的操作列表。Altered
— 受事务影响的软件包数量。
Action(s)字段的可能值
Action | Abbreviation | Description |
---|---|---|
Downgrade | D | 至少有一个软件包已降级为旧版本。 |
Erase | E | 至少有一个包已被删除。 |
Install | I | 至少安装了一个新软件包。 |
Obsoleting | O | 至少有一个包被标记为已过时。 |
Reinstall | R | 至少已重新安装一个软件包。 |
Update | U | 至少有一个软件包已更新为更新版本。 |
Altered 字段的可能值
Symbol | Description |
---|---|
< | 在事务完成之前,rpmdb 数据库在yum之外被更改。 |
> | 事务完成后,rpmdb 数据库在yum之外更改。 |
* | 交易未能完成。 |
# | 事务成功完成,但yum返回非零退出代码。 |
E | 事务成功完成,但显示错误或警告。 |
P | 事务已成功完成,但rpmdb 数据库中已存在问题。 |
s | 事务成功完成,但使用了--skip-broken 命令行选项并跳过了某些包。 |
同步的rpmdb
或yumdb
为任何已安装的包与当前使用的数据库的内容rpmdb
或yumdb
数据库,键入以下内容:
yum history sync
要显示有关当前使用的历史数据库的一些统计信息,请使用以下命令:
yum history stats
yum历史统计信息的示例输出
~]# yum history statsLoaded plugins: langpacks, product-id, subscription-manager File : //var/lib/yum/history/history-2012-08-15.sqliteSize : 2,766,848Transactions: 41Begin time : Wed Aug 15 16:18:25 2012End time : Wed Feb 27 14:52:30 2013Counts : NEVRAC : 2,204 NEVRA : 2,204 NA : 1,759 NEVR : 2,204 rpm DB : 2,204 yum DB : 2,204history stats
yum还允许您显示所有过去交易的摘要
yum history summary
要仅显示给定范围内的事务,请键入
yum history summary start_id..end_id
与yum history list
命令类似,您还可以通过提供包名称或glob表达式来显示有关某个包或某些包的事务摘要:
yum history summary glob_expression…
五项最新事务摘要
~]# yum history summary 1..5Loaded plugins: langpacks, product-id, subscription-managerLogin user | Time | Action(s) | Altered -------------------------------------------------------------------------------Jaromir ...| Last day | Install | 1Jaromir ... | Last week | Install | 1Jaromir ... | Last 2 weeks | I, U | 73System | Last 2 weeks | I, U | 1107history summary
有形式的yum history summary
命令都产生类似于输出的简化表格输出yum history list
。
从包的角度列出事务
yum history package-list glob_expression…
追踪包的历史
要跟踪订阅管理器和相关包的历史记录,请在shell提示符下键入以下内容:
~]# yum history package-list subscription-manager\*Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-managerID | Action(s) | Package------------------------------------------------------------------------------- 2 | Updated | subscription-manager-1.13.22-1.el7.x86_64 EE 2 | Update | 1.15.9-15.el7.x86_64 EE 2 | Obsoleted | subscription-manager-firstboot-1.13.22-1.el7.x86_64 EE 2 | Updated | subscription-manager-gui-1.13.22-1.el7.x86_64 EE 2 | Update | 1.15.9-15.el7.x86_64 EE 2 | Obsoleting | subscription-manager-initial-setup-addon-1.15.9-15.el7.x86_64 EE 1 | Install | subscription-manager-1.13.22-1.el7.x86_64 1 | Install | subscription-manager-firstboot-1.13.22-1.el7.x86_64 1 | Install | subscription-manager-gui-1.13.22-1.el7.x86_64history package-list
在此示例中,在初始系统安装期间安装了三个软件包:subscription-manager,subscription-manager-firstboot和subscription-manager-gui。在第三个事务中,所有这些包都从版本1.10.11更新到版本1.10.17。
检查事务
要显示单个事务的摘要,请使用yum history summary
以下格式的命令:
yum history summary id
这里,id代表事务的ID。
要更详细地检查特定事务或事务,请运行以下命令
yum history info id…
ID参数是可选的,当你忽略它,yum会自动使用最后一个事务。请注意,在指定多个事务时,您还可以使用范围:
yum history info start_id..end_id
yum历史信息的示例输出
以下是两个事务的示例输出,每个事务安装一个新包:
~]# yum history info 4..5Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-managerTransaction ID : 4..5Begin time : Mon Dec 7 16:51:07 2015Begin rpmdb : 1252:d2b62b7b5768e855723954852fd7e55f641fbad9End time : 17:18:49 2015 (27 minutes)End rpmdb : 1253:cf8449dc4c53fc0cbc0a4c48e496a6c50f3d43c5User : Maxim SvistunovReturn-Code : SuccessCommand Line : install tigervnc-server.x86_64Command Line : reinstall tigervnc-serverTransaction performed with: Installed rpm-4.11.3-17.el7.x86_64 @rhel-7-server-rpms Installed subscription-manager-1.15.9-15.el7.x86_64 @rhel-7-server-rpms Installed yum-3.4.3-132.el7.noarch @rhel-7-server-rpmsPackages Altered: Reinstall tigervnc-server-1.3.1-3.el7.x86_64 @rhel-7-server-rpmshistory info
您还可以查看其他信息,例如在事务处理时使用的配置选项,或者从哪个存储库以及安装某些软件包的原因。要确定某个特定事务可用的附加信息,在shell提示符下键入以下内容
yum history addon-info id
与此类似yum history info
,当没有提供id时,yum会自动使用最新的事务。引用最新事务的另一种方法是使用last
关键字:
yum history addon-info last
示例输出yum history addon-info
对于历史记录中的第四个事务,该yum history addon-info
命令提供以下输出:
~]# yum history addon-info 4Loaded plugins: langpacks, product-id, subscription-managerTransaction ID: 4Available additional history information: config-main config-repos saved_txhistory addon-info
恢复和重复事务
除了查看事务历史之外,该yum history
命令还提供了还原或重复所选事务的方法。要还原事务,请在shell提示符下键入以下内容
yum history undo id
要重复特定事务
yum history redo id
这两个命令还接受last
关键字来撤消或重复最新的事务。
请注意,两者yum history undo
和yum history redo
命令仅还原或重复事务期间执行的步骤。如果事务安装了一个新包,该yum history undo
命令将卸载它,如果事务卸载了一个包,该命令将再次安装它。如果这些旧软件包仍然可用,此命令还会尝试将所有更新的软件包降级到其先前的版本。
在管理多个相同的系统时,yum还允许您在其中一个系统上执行事务,将事务详细信息存储在文件中,经过一段时间的测试后,在其余系统上重复相同的事务。要将事务详细信息存储到文件,请在shell提示符下键入以下内容
yum -q history addon-info id saved_tx > file_name
Once you copy this file to the target system, you can repeat the transaction by using the following command as root
:
yum load-transaction file_name
您可以配置load-transaction
为忽略缺少的软件包或rpmdb版本。有关这些配置选项的更多信息,请参见yum.conf
(5)手册页。
启动新的事务记录
Yum将事务历史记录存储在单个SQLite数据库文件中。要启动新的事务历史记录,请运行以下命令
yum history new
这将在/var/lib/yum/history/
目录中创建一个新的空数据库文件。旧的事务历史记录将保留,但只要目录中存在较新的数据库文件,就无法访问。
配置YUM和YUM存储库
yum和相关实用程序的配置信息位于 /etc/yum.conf
. 此文件包含一个必需的[main]
部分, 使您可以设置具有全局效果的yum选项,还可以包含一个或多个 [*repository*]
部分, 这些部分允许您设置特定于存储库的选项. 但是,建议在目录中的新文件或现有文件中定义单个存储库 .repo
文件在 /etc/yum.repos.d/
目录中. 在文件的各个部分定义[repository]部分覆盖
/etc/yum.conf文件中
[main]` 部分设置的值.
设置[main]选项
/etc/yum.conf
配置文件只包含一个 [main]
部分, 本节中的一些键值对会影响yum的运行方式,但其他键值会影响yum对待存储库的方式. 您可以在 /etc/yum.conf
下[main]
部分添加许多其他选项 .
/etc/yum.conf
配置文件可能如下所示:
[main]cachedir=/var/cache/yum/$basearch/$releaseverkeepcache=0debuglevel=2logfile=/var/log/yum.logexactarch=1obsoletes=1gpgcheck=1plugins=1installonly_limit=5bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yumdistroverpkg=centos-release# This is the default, if you make this bigger yum won't see if the metadata# is newer on the remote and so you'll "gain" the bandwidth of not having to# download the new metadata and "pay" for it by yum not having correct# information.# It is esp. important, to have correct metadata, for distributions like# Fedora which don't keep old packages around. If you don't like this checking# interupting your command line usage, it's much better to have something# manually check the metadata once an hour (yum-updatesd will do this).# metadata_expire=90m# PUT YOUR REPOS HERE OR IN separate files named file.repo# in /etc/yum.repos.d
[main]
部分最常用的选项:
assumeyes
=valueassumeyes
选项确定yum是否提示确认关键操作。用以下之一替换value:0
(default) — 提示确认其执行的关键操作。1
— 不要提示确认关键yum
行为。如果assumeyes=1
设置,yum的行为以同样的方式作为命令行选项-y
和--assumeyes
cachedir
=directory使用此选项可设置yum存储其缓存和数据库文件的目录。将目录替换为目录的绝对路径。默认情况下,yum的缓存目录是
/var/cache/yum/$basearch/$releasever/
。debuglevel
=value此选项指定yum生成的调试输出的详细信息。这里,value是
1
和之间的整数10
。设置更高的debuglevel
值会导致yum显示更详细的调试输出。debuglevel=2
是默认值,同时debuglevel=0
禁用调试输出。exactarch
=value使用此选项,您可以将yum设置为在更新已安装的软件包时考虑确切的体系结构。替换值:
0
- 更新包时不要考虑确切的体系结构。1
(默认) - 在更新包时考虑确切的体系结构。使用此设置,yum不会安装32位体系结构的软件包来更新已安装在具有64位体系结构的系统上的软件包。exclude
=package_name [more_package_names]exclude
选项使您可以在安装或系统更新期间按关键字排除包。列出多个要排除的包可以通过引用以空格分隔的包列表来完成。允许使用通配符(例如,*
和?
)的Shell glob表达式。gpgcheck
=value使用该
gpgcheck
选项指定yum是否应对包执行GPG签名检查。替换value:0
— 禁用所有存储库中软件包的GPG签名检查,包括本地软件包安装。1
(default) — 启用检查所有存储库中所有软件包的GPG签名,包括本地软件包安装。与gpgcheck
启用,所有包的签名进行检查。group_command
=value使用
group_command
选项指定如何yum group install
,yum group upgrade
和yum group remove
命令处理程序包组。用以下内容替换值:simple
- 安装软件包组的所有成员。仅升级以前安装的软件包,但不要同时安装已添加到组中的软件包。compat
- 类似于simple
但yum upgrade
也安装自上次升级以来添加到组中的软件包。objects
- (默认值。)使用此选项,yum会跟踪以前安装的组,并区分作为组的一部分安装的软件包和单独安装的软件包。group_package_types
=package_type [more_package_types]您可以在此处指定调用
yum
group
install
命令时安装的软件包类型 (optional, default or mandatory) is installed when the . 默认和强制封装类型是默认选择的.history_record
=value使用此选项,您可以设置yum以记录交易历史记录。用以下之一替换value
0
— yum应该没有记录的交易历史记录条目。1
(default) — yum应记录事务的历史记录条目。此操作占用一定数量的磁盘空间,并在事务中占用一些额外时间,但它提供了有关过去操作的大量信息,可以使用该yum
history
命令显示。history_record=1
是默认值。installonlypkgs
= space separated list of packages在这里,您可以提供以空格分隔的软件包列表,yum可以安装这些软件包,但永远不会更新。请参阅
yum.conf
(5)手册页以获取默认情况下仅安装的软件包列表。如果您将
installonlypkgs
指令添加到/etc/yum.conf
,则应确保列出所有应仅安装的软件包,包括(5)installonlypkgs
部分中列出的任何软件包yum.conf
。特别是,应始终列出内核包installonlypkgs
(默认情况下),并且installonly_limit
应始终将其设置为大于某个值,2
以便在默认启动无法启动时始终可以使用备份内核。-
installonly_limit
= value此选项设置
installonlypkgs
可以同时安装指令中列出的包数。将value替换为一个整数,该整数表示可以同时为其中列出的任何单个程序包安装的最大版本数installonlypkgs
。installonlypkgs
指令的默认值包括几个不同的内核包,因此请注意,更改值installonly_limit
也会影响任何单个内核包的最大安装版本数。在列出的默认值/etc/yum.conf
是installonly_limit=3
,并且不建议减小该值,特别是低于2
。keepcache
= valuekeepcache
选项确定yum在成功安装后是否保留标头和包的缓存。在这里,value是以下之一:0
(默认) - 成功安装后,不要保留标头和包的缓存。1
- 成功安装后保留缓存。logfile
= file_name要指定日志记录输出的位置,请将file_name替换为yum应写入其日志记录输出的文件的绝对路径。默认情况下,yum会记录到
/var/log/yum.log
。max_connenctions
= number此处value表示最大并发连接数,默认值为5。
multilib_policy
= valuemultilib_policy
如果有多个体系结构版本可用于程序包安装,则 该选项会设置安装行为。这里,value代表:best
- 为此系统安装最佳选择架构。例如,multilib_policy=best
在AMD64系统上进行设置会导致yum安装所有软件包的64位版本。all
- 始终为每个包安装每个可能的架构。例如,如果multilib_policy
设置为all
AMD64系统,yum将同时安装i686和AMD64版本的软件包(如果两者都可用)。obsoletes
= valueobsoletes
选项在更新期间启用过时的进程逻辑。当一个包在其spec文件中声明它废弃了另一个包时,后一个包在安装前一个包时被前一个包替换。例如,在重命名包时声明过时。用以下之一替换value:0
- 执行更新时禁用yum的过时处理逻辑。1
(默认) - 执行更新时启用yum的过时处理逻辑。plugins
= 值这是一个启用或禁用yum插件的全局开关,value是以下之一:
0
- 全局禁用所有yum插件。1
(default) — 全局启用所有yum插件。使用plugins=1
,您仍然可以通过设置enabled=0
该插件的配置文件来禁用特定的yum插件。reposdir
= directory这里,directory是
.repo
文件所在目录的绝对路径。所有.repo
文件都包含存储库信息(类似于部分)。Yum从.repo文件和/etc/yum.conf文件[repository]部分收集所有存储库信息,以创建用于事务的存储库主列表。如果reposdir
未设置,则yum使用默认目录/etc/yum.repos.d/
。retries
= value此选项设置yum在返回错误之前应尝试检索文件的次数。value是整数
0
或更大。设置值0
使yum永远重试。默认值为10
。
设置[repository]选项
[repository]
部分, repository 是一个唯一的存储库ID如 my_personal_repo
(不允许空格), 为避免冲突,自定义存储库不应使用Red Hat存储库使用的名称
以下是一个 [*repository*]
部分的最小例子
[repository]name=repository_namebaseurl=repository_url
每个 [*repository*]
部分必须包含以下指令:
name
=repository_name
这里,repository_name是描述存储库的可读字符串。
baseurl
=repository_url
将repository_url替换为存储库的repodata目录所在目录的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” 则可将链接指定为
http://user:password@www.example.com/repo/
.
通常此URL是HTTP链接,例如:
baseurl=http://path/to/repo/releases/$releasever/server/$basearch/os/
其他可用于 [repository]
部分的选项:
enabled
=value这是告诉yum使用或忽略特定存储库的简单方法,value是以下值之一:
0
- 执行更新和安装时,请勿将此存储库包含为包源。这是一种快速打开和关闭存储库的简单方法,当您需要来自存储库的单个包时,这是非常有用的,您不希望为更新或安装启用。1
- 将此存储库包含为包源。async
=value控制存储库包的并行下载,value为以下之一:
auto
(默认) - 如果可能,使用并行下载,这意味着yum会自动为插件创建的存储库禁用它,以避免出现故障。on
- 为存储库启用了并行下载。off
- 为存储库禁用并行下载。
使用Yum变量
您可以在yum
命令和所有yum配置文件(即目录中的/etc/yum.conf
所有.repo
文件)中使用和引用以下内置变量/etc/yum.repos.d/
:
$releasever
您可以使用此变量来引用Red Hat Enterprise Linux的发行版本.
$releasever
从配置文件/etc/yum.conf
中distroverpkg=value
行获取值. 如果没有这样的行,那么yum通过从提供文件的包中获取版本号来推断出正确的值$arch
您可以使用此变量来引用在调用Python
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 Hat Enterprise Linux ”的新文件,并将其另存为/etc/yum/vars/osname
:
~]# echo "Red Hat Enterprise Linux 7" > /etc/yum/vars/osname
您现在可以在文件中使用以下内容, 而不是“ Red Hat Enterprise Linux 7”.repo
:
name=$osname $releasever
查看当前配置
要显示全局yum选项的当前值(即文件[main]
部分中指定的选项/etc/yum.conf
),请执行yum-config-manager
不带命令行选项的命令:
yum-config-manager
要列出不同配置节的内容,请使用以下格式的命令:
yum-config-manager section…
You can also use a glob expression to display the configuration of all matching sections:
yum-config-manager glob_expression…
查看主要部分的配置
要列出主要部分的所有配置选项及其对应值,请在shell提示符下键入以下内容:
~]$ yum-config-manager main \*Loaded plugins: langpacks, product-id, subscription-manager================================== main ===================================[main]alwaysprompt = Trueassumeyes = Falsebandwith = 0bugtracker_url = https://bugzilla.redhat.com/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%206&component=yumcache = 0[output truncated]
添加,启用和禁用Yum存储库
添加Yum存储库
要定义新存储库,可以在文件中添加一个[repository]
部分,也可以在/etc/yum.repos.d/
目录中添加一个.repo
文件。yum读取此目录中具有文件扩展名的所有文件,建议您在此处而不是在/etc/yum.conf
中定义存储库。
yum-config-manager --add-repo repository_url
...其中repository_url是.repo
文件的链接。
添加example.repo
要添加位于http://www.example.com/example.repo的存储库,请在shell提示符下键入以下内容:
~]# yum-config-manager --add-repo http://www.example.com/example.repoLoaded plugins: langpacks, product-id, subscription-manageradding repo from: http://www.example.com/example.repograbbing file http://www.example.com/example.repo to /etc/yum.repos.d/example.repoexample.repo | 413 B 00:00repo saved to /etc/yum.repos.d/example.repo
启用Yum存储库
要启用特定存储库或存储库,请在shell提示符下键入以下内容
yum-config-manager --enable repository…
...其中repository是唯一的存储库ID(用于yum repolist all
列出可用的存储库ID)。或者,您可以使用glob表达式来启用所有匹配的存储库:
yum-config-manager --enable glob_expression…
启用在/etc/yum.conf的自定义部分中定义的存储库。
启用定义的[example]
, [example-debuginfo]
, 和 [example-source]
部分:
~]# yum-config-manager --enable example\*Loaded plugins: langpacks, product-id, subscription-manager============================== repo: example ==============================[example]bandwidth = 0base_persistdir = /var/lib/yum/repos/x86_64/7Serverbaseurl = http://www.example.com/repo/7Server/x86_64/cache = 0cachedir = /var/cache/yum/x86_64/7Server/example[output truncated]
启用所有存储库
要启用/etc/yum.conf
文件和/etc/yum.repos.d/
目录中定义的所有存储库,请键入:
~]# yum-config-manager --enable \*Loaded plugins: langpacks, product-id, subscription-manager============================== repo: example ==============================[example]bandwidth = 0base_persistdir = /var/lib/yum/repos/x86_64/7Serverbaseurl = http://www.example.com/repo/7Server/x86_64/cache = 0cachedir = /var/cache/yum/x86_64/7Server/example[output truncated]
成功后,该yum-config-manager --enable
命令将显示当前存储库配置。
禁用Yum存储库
要禁用yum存储库,请运行以下命令:
yum-config-manager --disable repository…
...其中repository是唯一的存储库ID(用于yum repolist all
列出可用的存储库ID)。与之类似yum-config-manager --enable
,您可以使用glob表达式同时禁用所有匹配的存储库:
yum-config-manager --disable glob_expression…
禁用所有存储库
要禁用/etc/yum.conf
文件和/etc/yum.repos.d/
目录中定义的所有存储库,请键入:
~]# yum-config-manager --disable \*Loaded plugins: langpacks, product-id, subscription-manager============================== repo: example ==============================[example]bandwidth = 0base_persistdir = /var/lib/yum/repos/x86_64/7Serverbaseurl = http://www.example.com/repo/7Server/x86_64/cache = 0cachedir = /var/cache/yum/x86_64/7Server/example[output truncated]
成功后,该yum-config-manager --disable
命令将显示当前配置。
创建Yum存储库
要设置yum存储库:
安装createrepo包:
# yum install createrepo
将新存储库的所有包复制到一个目录中,例如
/tmp/local_repo/
:cp /your/packages/*.rpm /tmp/local_repo/
执行创建存储库:
createrepo /tmp/local_repo/
这将为yum存储库创建必要的元数据,并将元数据放在新创建的子目录中
repodata
。
将包添加到已创建的yum存储库
要将包添加到已创建的yum存储库:
将新包复制到存储库目录,例如
/tmp/local_repo/
:cp /your/packages/*.rpm /tmp/local_repo/
要反映元数据中新添加的包,请运行:
createrepo --update /tmp/local_repo/
Optional:如果您已使用任何yum命令和新更新的存储库,请运行:
yum clean expire-cache
YUM 插件
Yum提供扩展和增强其操作的插件。默认情况下会安装某些插件。当您调用任何yum
命令时,yum总会通知您哪些插件(如果有)已加载并处于活动状态。例如:
[root@localhost repodata]# yum info yumLoaded plugins: fastestmirror, langpacks, product-id, search-disabled-repos, subscription-managerThis system is not registered with an entitlement server. You can use subscription-manager to register.
使用 --disableplugin=plugin_name
选项来选择哪个yum插件被禁用
启用,配置和禁用Yum插件
要启用yum插件。请确认在/etc/yum.conf
文件的[main]
部分plugin=1:
plugins=1
您可以通过将此行更改为plugins=0
禁用所有插件。
每个已安装的插件在/etc/yum/pluginconf.d/
目录中都有自己的配置文件。您可以在这些文件中设置插件特定选项。例如,以下是别名插件的aliases.conf
配置文件
[main] enabled = 1
与/etc/yum.conf
文件类似,插件配置文件始终包含一个[main]
部分,其中该enabled=
选项控制在运行yum
命令时是否启用插件。如果缺少此选项,则可以手动将其添加到文件中。
如果您通过设置/etc/yum.conf
中enabled=0
中禁用所有插件,那么所有的插件,无论他们在各个配置文件是否启用禁用。
如果您只想为单个yum
命令禁用所有yum插件,请使用--noplugins
选项。
如果要为单个yum
命令禁用一个或多个yum插件,请将该选项添加到该命令。例如,要在更新系统时禁用别名插件,请键入: --disableplugin=plugin_name
〜]# yum update --disableplugin=aliases
为该--disableplugin=
选项提供的插件名称Loaded plugins
与任何yum
命令输出中的行后面列出的名称相同。您可以通过用逗号分隔名称来禁用多个插件。此外,您可以使用glob表达式匹配多个插件名称或缩短长插件名称:
〜]# yum update --disableplugin=aliases,lang*
安装其他Yum插件
Yum插件通常遵循包命名约定,但并非总是如此:例如,提供kabi插件的包被命名。您可以像安装其他软件包一样安装yum插件。例如,要安装yum-aliases插件,请在shell提示符下键入以下内容:
〜]# yum install yum-plugin-aliases
使用Yum插件
以下列表提供了几个有用的yum插件的说明和使用说明。插件按名称列出,括号包含包的名称。
search-disabled-repos
search-disabled-repos插件可以让你暂时或永久启用已禁用的存储库,以帮助解决依赖关系。启用此插件后,当Yum由于依赖项解析失败而无法安装软件包时,它会暂时启用已禁用的存储库并重试。如果安装成功,Yum还提供永久启用使用的存储库。请注意,该插件仅适用于由subscription-manager管理的存储库,而不适用于自定义存储库。
To configure the search-disabled-repos plug-in, edit the configuration file located in /etc/yum/pluginconf.d/search-disabled-repos.conf
. For the list of directives you can use in the [main]
section, see the table below.
Table 9.3. Supported search-disabled-repos.conf directives
Directive | Description |
---|---|
enabled =value | Allows you to enable or disable the plug-in. The value must be either 1 (enabled), or 0 (disabled). The plug-in is enabled by default. |
notify_only =value | Allows you to restrict the behavior of the plug-in to notifications only. The value must be either 1 (notify only without modifying the behavior of Yum), or 0 (modify the behavior of Yum). By default the plug-in only notifies the user. |
ignored_repos =repositories | Allows you to specify the repositories that will not be enabled by the plug-in. |
kabi (kabi-yum-plugins)
The kabi plug-in checks whether a driver update package conforms with the official Red Hat kernel Application Binary Interface (kABI). With this plug-in enabled, when a user attempts to install a package that uses kernel symbols which are not on a whitelist, a warning message is written to the system log. Additionally, configuring the plug-in to run in enforcing mode prevents such packages from being installed at all.
To configure the kabi plug-in, edit the configuration file located in /etc/yum/pluginconf.d/kabi.conf
. A list of directives that can be used in the [main]
section is shown in the table below.
Table 9.4. Supported kabi.conf directives
Directive | Description |
---|---|
enabled =value | Allows you to enable or disable the plug-in. The value must be either 1 (enabled), or 0 (disabled). When installed, the plug-in is enabled by default. |
whitelists =directory | Allows you to specify the directory in which the files with supported kernel symbols are located. By default, the kabi plug-in uses files provided by the kernel-abi-whitelists package (that is, the /usr/lib/modules/kabi-rhel70/ directory). |
enforce =value | Allows you to enable or disable enforcing mode. The value must be either 1 (enabled), or 0 (disabled). By default, this option is commented out and the kabi plug-in only displays a warning message. |
product-id (subscription-manager)
The product-id plug-in manages product identity certificates for products installed from the Content Delivery Network. The product-id plug-in is installed by default.
langpacks (yum-langpacks)
The langpacks plug-in is used to search for locale packages of a selected language for every package that is installed. The langpacks plug-in is installed by default.
aliases (yum-plugin-aliases)
The aliases plug-in adds the alias
command-line option which enables configuring and using aliases for yum
commands.
yum-changelog (yum-plugin-changelog)
The yum-changelog plug-in adds the --changelog
command-line option that enables viewing package change logs before and after updating.
yum-tmprepo (yum-plugin-tmprepo)
The yum-tmprepo plug-in adds the --tmprepo
command-line option that takes the URL of a repository file, downloads and enables it for only one transaction. This plug-in tries to ensure the safe temporary usage of repositories. By default, it does not allow to disable the gpg check.
yum-verify (yum-plugin-verify)
The yum-verify plug-in adds the verify
, verify-rpm
, and verify-all
command-line options for viewing verification data on the system.
yum-versionlock (yum-plugin-versionlock)
The yum-versionlock plug-in excludes other versions of selected packages, which enables protecting packages from being updated by newer versions. With the versionlock
command-line option, you can view and edit the list of locked packages.
自动刷新包数据库并使用YUM-CRON下载更新
该yum-cron
服务自动检查和下载包更新。yum-cron
安装yum-cron软件包后,服务提供的cron作业立即生效。该yum-cron
服务还可以自动安装下载的更新。
使用默认设置,yum-cron
服务:
- 每小时更新yum缓存中的元数据一次。
- 每天下载一次对yum缓存的包更新。如果存储库中有新包,则会发送电子邮件。
该yum-cron
服务有两个配置文件:
/etc/yum/yum-cron.conf
对于日常任务。
/etc/yum/yum-cron-hourly.conf
每小时任务。
启用自动安装更新
要启用下载更新的自动安装,请通过设置以下apply_updates
选项编辑每日安装的每日配置文件或每小时安装的每小时配置文件:
apply_updates = yes
设置可选的电子邮件通知
默认情况下,该yum-cron
服务用于cron
发送包含已执行命令输出的电子邮件。此电子邮件根据cron
配置发送,通常发送给本地超级用户并存储在/var/spool/mail/root
文件中。
您可以使用与影响所有cron
作业的设置不同的特定电子邮件配置。但是,此电子邮件配置不支持TLS,整体电子邮件内置逻辑非常基本。
要启用yum-cron
内置电子邮件通知:
打开选定的
yum-cron
配置文件:/etc/yum/yum-cron.conf
对于日常任务。
/etc/yum/yum-cron-hourly.conf
每小时任务。
在该
[emitters]
部分中,设置以下选项:emit_via = email
设置
email_from
,email_to
,email_host
因为所需的选项
启用或禁用特定存储库
在yum-cron
不支持存储库的具体配置。至于启用或禁用特定仓库的解决方法,yum-cron
而不是yum
一般的请执行下列步骤:
在系统的任何位置创建一个空的存储库配置目录。
将所有配置文件从
/etc/yum.repos.d/
目录复制到此新创建的目录。在其中的相应
.repo
配置文件中/etc/yum.repos.d/
,设置enabled
选项如下:enabled = 1
要启用存储库。
enabled = 0
要禁用存储库。
在所选
yum-cron
配置文件的末尾添加以下选项,该选项指向新创建的存储库目录:reposdir=/path/to/new/reposdir
测试Yum-cron设置
要在yum-cron
不等待下一个计划yum-cron
任务的情况下测试设置:
打开选定的
yum-cron
配置文件:/etc/yum/yum-cron.conf
对于日常任务。
/etc/yum/yum-cron-hourly.conf
每小时任务。
random_sleep
在所选配置文件中 设置选项,如下所示:random_sleep = 0
运行配置文件:
#yum -cron /etc/yum/yum-cron.conf#yum-cron/etc/yum/yum-cron-hourly.conf
禁用Yum-cron消息
yum-cron
消息不能完全禁用,但可被限制为仅具有临界优先级的消息。限制消息:
打开选定的
yum-cron
配置文件:/etc/yum/yum-cron.conf
对于日常任务。
/etc/yum/yum-cron-hourly.conf
每小时任务。
[base] 在配置文件 的部分中设置以下选项:
debuglevel = -4
自动清洁包
yum-cron
服务不支持任何用于删除与yum clean all
命令类似的包的配置选项。要自动清理包,可以将cron作业创建为可执行shell脚本:
在
/etc/cron.daily/
包含以下内容的目录中创建shell脚本:#!/bin/sh yum clean all
使脚本可执行:
#chmod + x /etc/cron.daily/ script-name.sh