YUM安装特定版本的软件包

时间:2020-02-23 14:40:43  来源:igfitidea点击:

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 &lt;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 &lt;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 &lt;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-commonrpm的特定版本。

[root@rhel-8 ~]# yum --disablerepo=* --enablerepo=rhel-8-for-x86_64-appstream-rpms -y install vim-common-8.0.1763-13.el8