如何知道软件包是从哪个 yum 存储库安装的?

lg.*_*lg. 172 linux package-management yum repository

在我通过 yum 安装了一个包(配置了多个存储库)后,我如何找到它已安装在哪个存储库中?

如果我运行yum info package-name(或yum list package-name),我只能看到该软件包已“安装”。

Xio*_*iov 93

安装 yum-utils 后,repoquery 将提供您寻找的信息(这里的“epel”是存储库)。

??[$]> repoquery -i cherokee

Name        : cherokee
Version     : 0.99.49
Release     : 1.el5
Architecture: i386
Size        : 8495964
Packager    : Fedora Project
Group       : Applications/Internet
URL         : http://www.cherokee-project.com/
Repository  : epel
Summary     : Flexible and Fast Webserver
Description :
Cherokee is a very fast, flexible and easy to configure Web Server. It supports
the widespread technologies nowadays: FastCGI, SCGI, PHP, CGI, TLS and SSL
encrypted connections, Virtual hosts, Authentication, on the fly encoding,
Apache compatible log files, and much more.
Run Code Online (Sandbox Code Playgroud)

  • 我发现熊基米奥夫的回答不正确。`repoquery -i $pkg` 给出了可以使用 `$pkg` 的仓库,而不是安装了 `$pkg` 的仓库。我执行了那个命令和 `rpm -qi $pkg` 并得到了不同的版本号。`rpm` 的版本号比 `repoquery` 的版本号早。 (13认同)
  • repoquery 似乎工作不正常,我得到了不同的包版本,然后是`yum info package_name`,它似乎没有以与 yum 相同的顺序查询存储库。 (3认同)
  • user158844 是对的。这将告诉您哪些 repos 提供给定的包,但不会告诉您特定包来自哪个 repo。如果您从某个存储库安装了一个软件包,删除了该存储库,然后安装了另一个提供同名软件包的存储库,像这样运行“repoquery -i”将返回列出新安装的存储库的软件包,*不是*您实际从中安装了软件包的一个。提问者想知道安装的软件实际上来自哪个包。不是当前的 repos 碰巧有同名的包。 (2认同)

the*_*ive 50

什么版本的yum?

在当前版本上,如果安装的软件包与最新可用的版本相同,则显示安装它的存储库。

$ yum info irssi
Installed Packages
Name       : irssi
Arch       : i586
Version    : 0.8.14
Release    : 1.fc11
Size       : 2.3 M
Repo       : installed
From repo  : updates
Summary    : Modular text mode IRC client with Perl scripting
URL        : http://irssi.org/
License    : GPLv2+
Description: Irssi is a modular IRC client with Perl scripting. Only text-mode
           : frontend is currently supported. The GTK/GNOME frontend is no
           : longer being maintained.

$ yum --version
3.2.23
Run Code Online (Sandbox Code Playgroud)

如果有更新的包可用,那么它将单独显示,新版本显示它可用的存储库。

  • 这在 CentOS 5.5 中也不行。 (2认同)

Mar*_*ian 24

来晚了,但(至少在 Fedora 15 上)可以使用 yumdb 进行类似的查询:

yumdb info 'python*'
Run Code Online (Sandbox Code Playgroud)

我实际上需要从给定的 repo(s) 列出包:

yumdb search from_repo 'my-*-repo'
Run Code Online (Sandbox Code Playgroud)


Mic*_*ton 12

如果所有其他方法都失败了,您可以手动检查 yumdb。它位于/var/lib/yum/yumdb并包含有关每个已安装软件包的详细信息。你会对from_repo. 例如,对于bind-utils包:

# for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i`; done
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_data: 39f7840f93d3d76825a9e8da79cfe0366f7fad68f018a273477aee62cccfa3f4
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_type: sha256
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/command_line: install bind-utils
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo: updates
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_revision: 1397654451
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_timestamp: 1397654759
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/installed_by: 0
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/reason: user
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/releasever: 6
Run Code Online (Sandbox Code Playgroud)

只获取您想要的信息:

# cat /var/lib/yum/yumdb/b/*bind-utils*/from_repo
updates
Run Code Online (Sandbox Code Playgroud)

以后的版本会提供更多的数据;例如,在 EL 7 中,下载包的确切镜像和 URL 存储在此处。


小智 6

rpm -qi packagename
Run Code Online (Sandbox Code Playgroud)

会告诉你供应商和包装商


小智 6

查看从 repo epel 安装的内容:(应该在 Centos 5.5 下工作)注意,如果你没有名为 epel 的 repo,它会吐出安装的所有内容。

repoquery --repoid=epel -a | xargs yum list installed
Run Code Online (Sandbox Code Playgroud)


Sco*_*nan 5

无需安装任何额外工具、grep 或输出无关信息的最简单、最直接的方法很简单:

yum list installed [package name]
Run Code Online (Sandbox Code Playgroud)

第三列将提供安装包的存储库的 ID。

这是在使用 grep 对原始问题的评论中提到的,但这不是必要的。您可以直接将包名称传递给yum过滤器。