如何在不安装软件包本身的情况下安装rpm软件包的依赖项?(rhel / fedora)


18

我有一组软件包(* .rpm)。我可以为每个软件包rpm -qRp <package>列出需求,但是我想安装它们(这些需求)而不安装软件包本身。需要所有已启用的存储库。是否有一些简单的方法可以执行此操作,而无需编写自己的脚本来解析rpm -qRp ...例如输出。

我知道我可以通过使用require(yum localinstall)安装所有内容,然后卸载原始软件包来做到这一点,但问题是我的计算机集包含具有相关性和它们之间有冲突的软件包。但是所需的软件包不会冲突。我将必须先执行多个操作,yum localinstall <list>然后yum remove <list>确保列表中的程序包不会冲突。

我有更好的办法吗?我基本上想要类似的东西yum-builddep,但出于需求而不是buildrequires。

我的发行版是Fedora/RHEL

Answers:


24

您可以使用以下yum deplist命令生成软件包依赖关系列表:

$ yum deplist bind
  dependency: /bin/bash
   provider: bash.x86_64 4.3.39-5.fc21
  dependency: /bin/sh
   provider: bash.x86_64 4.3.39-5.fc21
  dependency: bind-libs(x86-64) = 32:9.9.6-10.P1.fc21
   provider: bind-libs.x86_64 32:9.9.6-10.P1.fc21
  dependency: coreutils
   provider: coreutils.x86_64 8.22-22.fc21
[...]

抓住provider:此线包的列表:

$ yum deplist bind | awk '/provider:/ {print $2}' | sort -u
bash.x86_64
bind-libs.x86_64
coreutils.x86_64
glibc.i686
glibc.x86_64
grep.x86_64
krb5-libs.x86_64
libcap.x86_64
libcom_err.x86_64
libxml2.x86_64
openssl-libs.x86_64
shadow-utils.x86_64
systemd.x86_64
zlib.x86_64

发送此输出以yum install安装软件包:

$ yum deplist bind | awk '/provider:/ {print $2}' | sort -u |
  xargs yum -y install

1
谢谢。似乎在rpm文件上也可以工作。正是我想要的。
米罗斯拉夫·法兰克

1
有人想拥有-1吗?有什么我可以解决的吗?
larsk's

4

最好的方法是:

yum shell <<EOF
install foo
ts solve
remove foo
run
EOF

...使用deplist / etc 通常可以使用,但不能保证获得完全相同的结果。


yum -y可能需要。
caot

-y由于某些原因不是默认值,而重要原因也不会因上述原因而改变。
James Antill
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.