当您使用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 获得。它将输出所有已安装的软件包,并按它们签名的密钥分组。密钥描述将清楚地说明它来自哪个存储库。任何信誉良好的存储库都会对其软件包进行签名。