如何指示 yum 安装特定版本的软件包 X?

slm*_*slm 290 yum package-management

如果 YUM 存储库中有两个(或更多)版本的给定 RPM 可用,我如何指示yum安装我想要的版本?

查看 Koji 构建服务,我注意到有几个版本。

    党卫军#1

slm*_*slm 405

要查看yum您可以使用哪些特定版本,您可以使用--showduplicatesswitch 。它为您提供了一个类似于“包名称.架构版本”的列表:

$ yum --showduplicates list httpd | expand
Loaded plugins: fastestmirror, langpacks, refresh-packagekit
Loading mirror speeds from cached hostfile
 * fedora: mirror.steadfast.net

Available Packages
httpd.x86_64                        2.4.6-6.fc20                         fedora 
httpd.x86_64                        2.4.10-1.fc20                        updates
Run Code Online (Sandbox Code Playgroud)

至于安装特定版本?您可以将版本信息附加到包的名称,删除架构名称,如下所示:

$ sudo yum install <package name>-<version info>
Run Code Online (Sandbox Code Playgroud)

例如,在这种情况下,如果我想安装旧版本 2.4.6-6,我会执行以下操作:

$ sudo yum install httpd-2.4.6-6
Run Code Online (Sandbox Code Playgroud)

您还可以在指定包时包含发布信息。在这种情况下,由于我正在处理 Fedora 20 (F20),因此发布信息将是“fc20”,架构信息也是如此。

$ sudo yum install httpd-2.4.6-6.fc20
$ sudo yum install httpd-2.4.6-6.fc20.x86_64
Run Code Online (Sandbox Code Playgroud)

重新查询

如果您不确定自己构建的论点是否正确,也可以咨询repoquery

$ sudo yum install yum-utils  # (to get `repoquery`)
$ repoquery --show-duplicates httpd-2.4*
httpd-0:2.4.6-6.fc20.x86_64
httpd-0:2.4.10-1.fc20.x86_64
Run Code Online (Sandbox Code Playgroud)

下载安装

您还可以使用以下选项之一从 Web 下载特定的 RPM,然后使用yum它进行安装。

$ yum --downloadonly <package>
-or-
$ yumdownloader <package>
Run Code Online (Sandbox Code Playgroud)

然后像这样安装它:

$ sudo yum localinstall <path to rpm>
Run Code Online (Sandbox Code Playgroud)

如果我想下载包 X 需要的所有东西怎么办?

$ yumdownloader --resolve <package>
Run Code Online (Sandbox Code Playgroud)

例子

$ yumdownloader --resolve vim-X11
Loaded plugins: langpacks, presto, refresh-packagekit
Adding en_US to language list
--> Running transaction check
---> Package vim-X11.x86_64 2:7.3.315-1.fc14 set to be reinstalled
--> Finished Dependency Resolution
vim-X11-7.3.315-1.fc14.x86_64.rpm                              | 1.1 MB     00:01
Run Code Online (Sandbox Code Playgroud)

请注意,它正在执行依赖性检查,然后下载丢失的部分。请在此处查看我的答案,其中详细介绍了它:如何从存储库下载文件,然后在没有 Internet 连接的情况下安装它?.

参考

  • 我认为它不适用于位于“@updates”的最新版本和位于“@fedora”的操作系统的初始版本之间的软件包。例如,如果您尝试安装“httpd-2.4.8-1”,“yum”会说软件包不可用。 (2认同)
  • @QuestionOverflow - 在那种情况下,我认为你必须使用 `yum downgrade ...` 如果已经安装了软件包并且你稍后再尝试返回它。在我的 QI 中试图展示如何手动选择尚未安装的软件包的特定版本。http://docs.fedoraproject.org/en-US/Fedora/14/html/Software_Management_Guide/ch05s06s03.html (2认同)

cuo*_*glm 12

另一种选择,您可以下载rpm文件然后指示yum执行以下操作localinstall

yum localinstall /path/to/package.rpm
Run Code Online (Sandbox Code Playgroud)

获取所需软件包的好地方是 rpmfind.com 并搜索软件包名称。

  • 还有`yum --downloadonly &lt;package&gt;`,然后是`yum localinstall &lt;path to package&gt;`。您也可以使用实用程序 `yumdownloader &lt;package&gt;`。 (4认同)