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


226

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

通过Koji构建服务,我发现有多个版本。

    SS#1

Answers:


310

要查看可以通过哪些特定版本使用,yum可以使用--showduplicates开关。它为您提供了一个列表,例如“ package name.architecture version”:

$ 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

至于安装特定版本?您可以将版本信息附加到软件包的名称中,从而删除体系结构名称,如下所示:

$ sudo yum install <package name>-<version info>

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

$ sudo yum install httpd-2.4.6-6

指定软件包时,还可以包括发行信息。在这种情况下,由于我正在使用Fedora 20(F20),因此发行信息将为“ fc20”,而架构信息也将为。

$ sudo yum install httpd-2.4.6-6.fc20
$ sudo yum install httpd-2.4.6-6.fc20.x86_64

回购查询

如果您不确定要构造正确的参数,也可以参考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

下载与安装

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

$ yum --downloadonly <package>
-or-
$ yumdownloader <package>

然后像这样安装它:

$ sudo yum localinstall <path to rpm>

如果我想下载软件包X所需的所有内容怎么办?

$ yumdownloader --resolve <package>

$ 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

请注意,它正在进行依赖性检查,然后下载缺少的部分。请参阅以下详细说明我的答案:如何从repo下载文件,并在以后不通过Internet连接安装它?

参考文献


1
我认为它不适用于位于最新版本@updates和位于OS初始版本之间的软件包@fedora。例如,如果您尝试安装httpd-2.4.8-1yum则会说软件包不可用。
2014年

@QuestionOverflow-不关注。该版本未在仓库中显示为可用。
slm

1
让我用yum日志中的真实示例再试一次。python-libs-2.7.5-12.fc20.x86_64曾经安装在我的计算机上,但此后已被替换。假设现在我要安装这个特定的包,yumdownloader python-libs-2.7.5-12*会说No Match for argument python-libs-2.7.5-12* Nothing to download。我要说的是,一旦有新软件包到达,旧软件包就不再可以从yum中访问了。您只能安装最新的软件包或初始版本,而不能安装两者之间的版本。
2014年

2
@QuestionOverflow-在这种情况下,我认为您必须使用yum downgrade ...该软件包是否已经安装,并且稍后再尝试使用它。在我的QI中,我试图显示如何手动选择尚未安装的特定版本的软件包。docs.fedoraproject.org/en-US/Fedora/14/html/...
SLM

不,即使升级到特定软件包也不起作用。几天前,我已经进行了全新安装的实验。您只能yum更新到最新的软件包,而不能更新到您想要的任何版本。
2014年

6

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

yum localinstall /path/to/package.rpm

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


是否有一个包含大多数(如果不是所有)rpm文件版本的URL?
2014年

@QuestionOverflow:rpmfind.net
cuonglm 2014年

4
也有yum --downloadonly <package>,其次是yum localinstall <path to package>。您也可以使用该实用程序yumdownloader <package>
slm

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.