如何找出 CentOS 中安装的软件包来自哪个存储库?

如何找出 CentOS 中安装的软件包来自哪个存储库?

当您使用yum info查找所选软件包的详细信息时,它会将存储库列为“已安装”。这一切都很好,但对于已安装的软件包,我想知道它是从哪个存储库安装的,这样我就可以确保从同一存储库安装任何相关软件包。

$: yum info mysql-server
Loaded plugins: fastestmirror
Installed Packages
Name       : mysql-server
Arch       : x86_64
Version    : 5.0.77
Release    : 4.el5_6.6
Size       : 22 M
Repo       : installed
Summary    : The MySQL server and related files.
URL        : http://www.mysql.com
License    : GPLv2 with exceptions
Description: MySQL is a multi-user, multi-threaded SQL database server. MySQL is a
           : client/server implementation consisting of a server daemon (mysqld)
           : and many different client programs and libraries. This package contains
           : the MySQL server and some accompanying files and directories.

我如何找出这个特定包是从哪个存储库安装的?

答案1

对于那些像我一样不幸偶然发现这个问题的人来说,这是一个更新的 - 稍微更有用 - 的答案......

对于 Fedora(可能还有 Centos 和 RHEL),例如:

dnf whatprovides postgresql-server

使用来自 blah blah blah 的元数据

postgresql-server-9.3.9-1.fc21.x86_64 :创建和运行 PostgreSQL 服务器所需的程序

Repo        : @System

postgresql-server-9.3.5-4.fc21.x86_64 :创建和运行 PostgreSQL 服务器所需的程序

Repo        : fedora

postgresql-server-9.3.9-1.fc21.x86_64 :创建和运行 PostgreSQL 服务器所需的程序

Repo        : updates

如您所见,它列出了@System当前安装的软件包,以及可能从哪些存储库和版本安装的软件包。这里最重要的部分是列出的最后一项,其版本详细信息和名称与安装的软件包完全匹配。因此,它是从 fedora 更新存储库安装的。Dnf 与 yum 一样,也支持信息选项,即:

dnf info postgresql-server

但是,在我的系统上,dnf 输出不显示该From repo字段,与 yum 命令不同,所以 YMMV。

答案2

YUM 的现代版本提供了此信息。

例如,在我的 Fedora 15 系统上安装了 YUM 3.2.29:

# yum info mysql 服务器
已加载插件:fastestmirror、langpacks、presto、refresh-packagekit
已安装的软件包
名称:mysql-server
架构:x86_64
版本:5.5.14
版本 :2.fc15
尺寸 : 42 M
仓库:已安装
来自 repo:更新
摘要:MySQL 服务器及相关文件
网址:http://www.mysql.com
许可证:GPLv2(有例外)
描述:MySQL 是一个多用户、多线程的 SQL 数据库服务器。MySQL 是一个
            :由服务器守护进程 (mysqld) 组成的客户端/服务器实现
            :以及许多不同的客户端程序和库。此软件包包含
            :MySQL 服务器和一些附带的文件和目录。

您可能会查看是否有较新版本的 YUM 可以为您的系统提供此信息。

答案3

确定这一点的最佳方法是从每个软件包的软件包签名密钥中确定。没有简单的方法可以做到这一点,所以有人创建了这个程序键盘检查器

这个小脚本源自关于如何有效识别系统上安装的 RPM 的原始存储库的讨论。RPM 数据库存储的最接近此内容的是用于对软件包进行签名的 GPG 密钥。此脚本查看所使用的密钥,并以列表格式或 csv 格式(如果使用 -m 选项调用)打印它们。人们喜欢它,所以在这里将它发布给更广泛的受众 :)

它可通过 EPEL 获得。它将输出所有已安装的软件包,并按它们签名的密钥分组。密钥描述将清楚地说明它来自哪个存储库。任何信誉良好的存储库都会对其软件包进行签名。

相关内容