YUM安装特定版本的软件包
YUM是与Red Hat,CentOS和许多其他发行版一起使用的软件包管理器。
现在世界正朝着DNF前进,与YUM相比,DNF具有更多功能
我们将在本文中介绍以下主题:
YUM搜索包
YUM显示已安装的软件包
YUM列表包
YUM安装特定版本的rpm
从特定存储库安装YUM
在本文中,尽管我将使用YUM安装特定版本的rpm,但在后端,YUM在我的RHEL 8环境中使用DNF
[root@rhel-8 ~]# ls -l /usr/bin/yum lrwxrwxrwx. 1 root root 5 Sep 3 2019 /usr/bin/yum -> dnf-3 [root@rhel-8 ~]# ls -l /usr/bin/dnf lrwxrwxrwx. 1 root root 5 Sep 3 2019 /usr/bin/dnf -> dnf-3
尽管实际上仅是安装rpm特定版本的一步,但是有一些准备工作对于新手来说可能是个好方法。
如果我们知道自己在做什么,则可以直接跳到本章中的YUM安装特定版本的rpm。
YUM列表存储库
要使用yum,必须正确配置存储库。
我们可以使用
yum repolist
列出可用的存储库我们应该从此命令获得可用的有效列表或者存储库并启用该存储库:
[root@rhel-8 ~]# yum repolist Updating Subscription Management repositories. Last metadata expiration check: 0:34:45 ago on Sat 16 Jan 2017 03:35:19 PM IST. repo id repo name status *epel Extra Packages for Enterprise Linux 8 - x86_64 5,546 *epel-modular Extra Packages for Enterprise Linux Modular 8 - x86_64 0 rhel-8-for-x86_64-appstream-rpms Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) 10,638 rhel-8-for-x86_64-baseos-rpms Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs) 4,777
如果我们在输出yum repolist
时遇到任何错误,则应根据环境检查以下文章之一
如何解决"另一个应用当前正在保存Yum锁"的错误
如何在Linux中为yum存储库设置代理?
修复"没有启用的存储库"并在RHEL 7和8中创建本地存储库
使用订阅管理器(带或者不带代理)将RHEL 7主机注册到RHN
YUM搜索包
我们知道我们打算安装的rpm的名称吗?
很多时候,我们实际上并不知道rpm名称,并尝试在存储库中找不到运气,
要使用yum search包,可以使用
yum search <rpm_name>
,它将使用所有rpms及其描述与提供的名称相匹配的内容搜索启用的存储库。现在我想安装
vim-common
,但是让我仅使用vim
进行搜索
[root@rhel-8 ~]# yum search vim Updating Subscription Management repositories. Last metadata expiration check: 0:05:47 ago on Sat 16 Jan 2017 03:35:19 PM IST. ========================================= Name & Summary Matched: vim ========================================== vim-gv.noarch : Git commit browser in Vim vim-filesystem.noarch : VIM filesystem layout geany-plugins-vimode.x86_64 : Vim-mode plugin for Geany vim-minimal.x86_64 : A minimal version of the VIM editor vim-common.x86_64 : The common files needed by any version of the VIM editor vim-enhanced.x86_64 : A version of the VIM editor which includes recent enhancements ============================================== Name Matched: vim =============================================== vim-pathogen.noarch : Manage your runtimepath vim-gitgutter.noarch : Shows a git diff in the gutter and stages/undoes hunks and partial hunks vim-nerdtree-git-plugin.noarch : Plugin of NERDTree showing git status ============================================= Summary Matched: vim ============================================= kakoune.x86_64 : Code editor heavily inspired by Vim
现在我有了一个与vim
字符串匹配的仓库中的rpm的完整列表,所以我可以在搜索包中找到我打算安装的rpm名称。
YUM显示已安装的软件包
在我们安装特定版本的rpm之前,我们可以使用yum list <rpm_name> --installed
来YUM显示已安装的软件包列表。
[root@rhel-8 ~]# yum list vim-common --installed Updating Subscription Management repositories. Installed Packages vim-common.x86_64 2:8.0.1763-10.el8 @rhel-8-for-x86_64-appstream-rpms
或者我们也可以将rpm命令与查询输出一起使用
[root@rhel-8 ~]# rpm -qa | grep vim-common vim-common-8.0.1763-10.el8.x86_64
YUM列表包
现在,使用yum list软件包,我们知道已经安装了
vim-common
,但是对于yum安装特定版本,我需要可用的rpm列表及其版本详细信息。我们将使用
yum list <rpm_name>
,它将显示已安装的软件包信息以及是否有较新的软件包版本。在此示例中,我的存储库中提供了比" 8.0.1763-10.el8"更新的" 8.0.1763-13.el8"。
[root@rhel-8 ~]# yum list vim-common
如果没有可用的更新,那么我们将不会获得"可用软件包"部分,因为我们可以在此处进行检查:
[root@rhel-8 ~]# yum list bash Updating Subscription Management repositories. Last metadata expiration check: 0:03:37 ago on Sat 16 Jan 2017 03:35:19 PM IST. Installed Packages bash.x86_64 4.4.19-10.el8 @anaconda
YUM显示重复的软件包
由于
yum list <rpm_name>
显示只有一个较新的rpm版本可用于安装,因此我们没有更多的软件包来进行更新吗?我们可以使用--showduplicates来显示存储库中已安装的软件包以及带有不同版本的重复rpm。
这甚至会列出我们存储库中具有不同版本的重复rpm。
[root@rhel-8 ~]# yum list vim-common --showduplicates
我们看到,我们的存储库中有vim-common
的两个不同版本。
YUM安装特定版本的rpm
现在,由于有了rpm名称和版本详细信息,我们只需要将它们以格式合并即可
<rpm_name>-<version>
因此,在这种情况下,我们为vim-common
提供了两个rpm版本。
vim-common-8.0.1763-11.el8_0 vim-common-8.0.1763-13.el8
使用yum install <rpm_name-version>
安装特定版本的Yum,例如:
[root@rhel-8 ~]# yum install vim-common-8.0.1763-11.el8_0 -y
由于vim-enmonced与vim-enhanced
之间存在依赖关系,因此两者都将使用yum
自动下载并安装。
从特定存储库安装YUM
在我们的例子中,我们有多个版本的
vim-common
,但是所有这些rpm都来自同一个存储库rhel-8-for-x86_64-appstream-rpms
。但是,在情况下,可能有多个存储库,其中包含同一rpm的不同版本
因此,要从特定存储库进行yum安装,我们可以仅启用存储库以安装rpm并禁用所有其他存储库,分别使用
--enablerepo
和--disablerepo
这将仅为提供的命令(
runtime
)启用和禁用存储库,这些存储库的现有状态将与之前的状态相同。
例如,要从特定存储库安装yum,我禁用了所有其他存储库,并且仅使用rhel-8-for-x86_64-appstream-rpms
来安装vim-common
rpm的特定版本。
[root@rhel-8 ~]# yum --disablerepo=* --enablerepo=rhel-8-for-x86_64-appstream-rpms -y install vim-common-8.0.1763-13.el8