如何使用yum列出给定仓库中已安装的软件包

66

我想使用yum列出系统中从特定仓库安装的所有软件包。通常情况下,我使用 yum list installed | grep "something" 来实现。但是现在我面临一个问题,我感兴趣的仓库没有“something”可以供我进行grep。该仓库中的软件包没有任何独特的特征。我该如何列出它们呢?

我查看了yum手册,但没有找到相关信息。我想知道是否有其他命令可用。


6
这应该迁移到Unix和Linux系统,这是一个不错的问题。 - fedvasu
2
Unix交换已经有一个非常相似的问题了,如果不是同一个的话。@fedvasu 我同意;只是错误的论坛,但是好问题,尽管答案简单 :D - ILMostro_7
2个回答

67

尝试在服务器上查找已安装的内容:

yum list installed | grep reponame

在我的一个服务器上,以下软件包已被安装:

ImageMagick2.x86_64                       6.6.5.10-1.el5.remi          已安装
memcache.x86_64                          1.4.5-2.el5.remi             已安装
mysql.x86_64                              5.1.54-1.el5.remi            已安装
mysql-devel.x86_64                        5.1.54-1.el5.remi            已安装
mysql-libs.x86_64                         5.1.54-1.el5.remi            已安装
mysql-server.x86_64                       5.1.54-1.el5.remi            已安装
mysqlclient15.x86_64                      5.0.67-1.el5.remi            已安装
php.x86_64                                5.3.5-1.el5.remi             已安装
php-cli.x86_64                            5.3.5-1.el5.remi             已安装
php-common.x86_64                         5.3.5-1.el5.remi             已安装
php-domxml-php4-php5.noarch               1.21.2-1.el5.remi            已安装
php-fpm.x86_64                            5.3.5-1.el5.remi             已安装
php-gd.x86_64                             5.3.5-1.el5.remi             已安装
php-mbstring.x86_64                       5.3.5-1.el5.remi             已安装
php-mcrypt.x86_64                         5.3.5-1.el5.remi             已安装
php-mysql.x86_64                          5.3.5-1.el5.remi             已安装
php-pdo.x86_64                            5.3.5-1.el5.remi             已安装
php-pear.noarch                           1:1.9.1-6.el5.remi           已安装
php-pecl-apc.x86_64                       3.1.6-1.el5.remi             已安装
php-pecl-imagick.x86_64 3.0.1-1.el5.remi.1 已安装 php-pecl-memcache.x86_64 3.0.5-1.el5.remi 已安装 php-pecl-xdebug.x86_64 2.1.0-1.el5.remi 已安装 php-soap.x86_64 5.3.5-1.el5.remi 已安装 php-xml.x86_64 5.3.5-1.el5.remi 已安装 remi-release.noarch 5-8.el5.remi 已安装

它有效。


7
不幸的是,这只适用于在结尾处放置像“remi”之类的内容的存储库。rpmforge可行(他们使用"rf"),但 atrpms 没有在结尾处放置任何内容 :/ - Hamish Downer
4
重新阅读问题后,他说他通常这样做,但在这种情况下无法这样做。 - Hamish Downer
3
另一个问题:如果软件包的名称/版本字符串太长(例如来自Cloudera的Solr),那么"@origin-repo"部分会被推到新的一行,导致出现一行是"[空格]@origin-repo"。 - IBBoard
2
@IBBoard 关于 "export COLUMNS=999 yum..." 怎么样? - Massimo
1
@Massimo,太遗憾了,我没有早些看到问题的第二个评论,它指向了另一个答案。最好的答案实际上是 yum repo-pkgs repo-id list installed,它适用于 RHEL7.7,并且比 grepping 更可靠。正确答案的链接:https://unix.stackexchange.com/a/233966/14907 - akostadinov
显示剩余3条评论

42

在较新的yum版本中,安装软件包时此信息会存储在“yumdb”中。这是获得信息唯一100%准确的方法,您可以使用以下命令:

yumdb search from_repo repoid

您可以使用repoquery和grep来搜索,但不要搜索yum的输出。然而,在一段时间内,“find-repos-of-install”命令是yum-utils的一部分,可以在没有该信息的情况下进行最佳猜测:

http://james.fedorapeople.org/yum/commands/find-repos-of-install.py

正如floyd所说,很多存储库在发布时会包括一个唯一的“dist”标签,您可以查找这个标签…但是根据您的说法,我猜这对您来说并不适用?


2
经过一些研究,看起来yumdb是RHEL 6(和CentOS 6)中的新功能 - 因此在旧版本中不可用。 - Hamish Downer
谢谢您,我就知道现在一定有一种rpm/yum的方法可以做到这一点:D - ILMostro_7
2
完美。只有一件事,要在Cent OS 6上获得yumdb,请使用yum install yum-utils进行安装。 - Mike Starov
1
从上面并不清楚如何使用这个命令。以下是一个列出所有来自EPEL软件库的软件包的示例用法:yum search from_repo epel - Tim Ludwinski
那是 yumdb 而不是 yum,但没错。 - James Antill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接