希望问题的简短版本:如果我在一台机器上安装了一个特定的软件包,是否有一个YUM命令,告诉我哪个configuration的软件库提供了该软件包? (或者,也可以使用什么库来提供一个尚未安装的软件包。)
背景情况下,需要一些情况:我们有一个百胜集团迷宫,我们从中吸取。 我有一台机器,安装了一个特定的rpm软件包,另外一台机器configuration了一个明显不足的存储库迷宫,所以我无法将我想要的软件包安装到该机器上。 我需要添加最小必要的存储库到新的机器。 我不能只是从一台机器到另一台机器的猎枪。 只是出去抓住转速不是一个select,因为我需要这是可重复的。
yum list packagename
这将显示软件包来自哪个存储库,位于输出的第三列。
对于已经安装的软件包,这将不起作用,因为第三列只显示“已安装”。 在这种情况下,你可以做例如“rpm -qi packagename”,通常Vendor,Packager和Build Host标签会给出软件包属于哪个存储库。 另外,一些回购符号被附加到软件包版本号上是很常见的。
repoquery -i {packagename}
这将给你实际的回购名称与yum返回的无用“安装”。 yum-utils提供了repoquery。
你可以使用yum -v search
,它会显示你的软件包以及它存在的repo。如果你还添加了--showduplicates
你会看到该软件包的所有版本。
信贷: http : //www.spinics.net/linux/fedora/yum/msg11975.html
对于一个包,你可以找到这个
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; 你可以用yum repolist
查看所有启用的存储库的ID。
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]:
以下是发现给定已安装软件包的存储库的一些方法:
rpm -qi {packagename}
要么
repoquery -i {packagename}
参考文献: