42

希望是问题的简短版本:如果我在安装了特定软件包的机器上,是否有一个 yum 命令可以告诉我提供该软件包的哪些配置存储库?(或者,什么存储库将提供尚未安装的软件包。)

需要一些上下文的背景:我们有一个迷宫般的 yum 存储库,我们从中提取。我有一台安装了特定 rpm 软件包的机器,以及另一台配置了明显不足的存储库迷宫的机器,因此我无法将我想要的软件包安装到那台机器上。我需要将最少的必要存储库添加到新机器。我不能只是将存储库从一台机器枪杀到另一台机器。只是出去并抓住 rpm 不是一种选择,因为我需要它是可重现的。

4

7 回答 7

45
yum list packagename

这将在输出的第三列中显示包来自哪个存储库。

对于已安装的软件包,这将不起作用,因为第三列仅显示“已安装”。在这种情况下,您可以执行例如“rpm -qi packagename”,通常 Vendor、Packer 和 Build Host 标签将指示包属于哪个存储库。此外,将一些 repo 符号附加到包版本号也是很常见的。

于 2009-03-11T19:03:49.023 回答
30
repoquery -i {packagename} 

这将为您提供实际的 repo 名称与 yum 返回的无用的“已安装”名称。repoquery 由 yum-utils 提供。

于 2012-01-06T15:40:27.520 回答
15

您可以使用yum -v search它向您显示软件包以及它所在的 repo。如果您还添加--showduplicates,您将看到该软件包的所有版本。

归功于:http ://www.spinics.net/linux/fedora/yum/msg11975.html

于 2013-08-29T16:18:15.623 回答
3

对于单个包,您可以使用

PACKAGE=ruby-enterprise
repoquery --qf "%{repoid}" $PACKAGE

$PACKAGE替换为您关心的包的名称。

您可以找到来自特定存储库的所有包

REPO=ruby-enterprise-opt
repoquery --repoid=$REPO -a --qf "%{name}" | sort > repo_packages
rpm -qa --qf "%{name}\n" | sort > installed_packages
comm -1 -2 repo_packages installed_packages

$REPO替换为您关心的存储库的 id;您可以使用 . 查看所有已启用存储库的 ID yum repolist

于 2012-04-11T04:16:08.870 回答
1

以下是发现给定已安装包的存储库的一些方法:

rpm -qi {packagename}

或者

repoquery -i {packagename}

参考:

于 2017-09-10T16:43:54.767 回答
0
yum reinstall [package_name]

然后当要求确认时,您可以选择 N 不更改您的系统:

centos 上的示例输出:

Resolving Dependencies
--> Running transaction check
---> Package mc.x86_64 1:4.6.1a-35.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================================================
 Package                      Arch                             Version                                   Repository                      Size
==============================================================================================================================================
Reinstalling:
 mc                           x86_64                           1:4.6.1a-35.el5                           base                           2.1 M

Transaction Summary
==============================================================================================================================================
Remove        0 Package(s)
Reinstall     1 Package(s)
Downgrade     0 Package(s)

Total download size: 2.1 M
Is this ok [y/N]:
于 2014-10-24T06:48:15.233 回答
0

EL7

这应该等效于yum list installed,但具有机器可读的输出:

repoquery --installed '*' --queryformat='%{name} %{evr} %{ui_from_repo}' | column -t

显然,制作一个列出可能字段的手册页太麻烦了;但是您可以查看https://github.com/rpm-software-management/yum/blob/master/yum/packages.py并使用您要列出的对象类的任何属性。

例如,如果您要列出已安装的包,则可以使用 的字段YumInstalledPackage,因此可以使用其基类YumHeaderPackageYumAvailablePackagePackageObject的字段RpmBase

这是一个例子:

$ repoquery --installed '*' --qf='%{name} %{evr} %{ui_from_repo}' | head -n 10 | column -t
GeoIP                         1.5.0-14.el7    @rhos-13.0-rhel-7-signed
MySQL-python                  1.2.5-1.el7     @rhos-13.0-rhel-7-signed
NetworkManager                1:1.18.0-5.el7  @anaconda/7.7
NetworkManager-config-server  1:1.18.0-5.el7  @anaconda/7.7
NetworkManager-libnm          1:1.18.0-5.el7  @anaconda/7.7
NetworkManager-team           1:1.18.0-5.el7  @anaconda/7.7
NetworkManager-tui            1:1.18.0-5.el7  @anaconda/7.7
OpenIPMI                      2.0.27-1.el7    @rhos-13.0-rhel-7-signed
OpenIPMI-libs                 2.0.27-1.el7    @rhos-13.0-rhel-7-signed
OpenIPMI-modalias             2.0.27-1.el7    @rhos-13.0-rhel-7-signed

值得阅读记录属性的注释,ui_from_repo以了解该字段的可能格式。

EL8

我发现添加--installed导致 的值ui_from_repo变为@System. 但是有一个from_repo领域似乎有效。

(事实证明可以使用 输出有效字段dnf repoquery --querytags)。

$ dnf repoquery --installed '*' --qf='%{name} %{evr} %{from_repo}' | head -n 10 | column -t
389-ds-base              1.4.3.16-19.module+el8.4.0+11894+f5bb5c43  rhel-8-for-x86_64-appstream-rpms                                 
389-ds-base-libs         1.4.3.16-19.module+el8.4.0+11894+f5bb5c43  rhel-8-for-x86_64-appstream-rpms                                 
NetworkManager           1:1.30.0-10.el8_4                          rhel-8-for-x86_64-baseos-rpms                                    
NetworkManager-libnm     1:1.30.0-10.el8_4                          rhel-8-for-x86_64-baseos-rpms                                    
NetworkManager-team      1:1.30.0-10.el8_4                          rhel-8-for-x86_64-baseos-rpms                                    
NetworkManager-tui       1:1.30.0-10.el8_4                          rhel-8-for-x86_64-baseos-rpms                                    
PackageKit               1.1.12-6.el8                               rhel-8-for-x86_64-appstream-rpms                                 
PackageKit-glib          1.1.12-6.el8                               rhel-8-for-x86_64-appstream-rpms                                 
abattis-cantarell-fonts  0.0.25-6.el8                               rhel-8-for-x86_64-appstream-rpms                                 
于 2021-01-26T10:38:04.303 回答