如何在不安装rpm包本身的情况下安装rpm包的依赖项? (RHEL/软呢帽)

如何在不安装rpm包本身的情况下安装rpm包的依赖项? (RHEL/软呢帽)

我有一组软件包(*.rpm)。对于每个包,我可以rpm -qRp <package>列出需要,但我想安装它们(那些需要)而不安装包本身。要求所有内容都位于启用的存储库中。有没有一些简单的方法可以做到这一点,而无需编写我自己的脚本来解析rpm -qRp ...例如输出。

我知道我可以通过使用 require ( yum localinstall) 安装所有内容,然后卸载原始包来完成此操作,但问题是我的集合包含具有依赖性和冲突的包。然而,所需的包并不冲突。我必须执行多个yum localinstall <list>操作yum remove <list>并确保列表中的包不冲突。

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

我的发行版是Fedora/RHEL

答案1

您可以使用以下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

答案2

最好的办法是:

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

...使用 deplist/等等。大多数情况下会起作用,但不能保证得到完全相同的结果。

相关内容