Yum

如何在不安裝包本身的情況下安裝 rpm 包的依賴項?(rhel/fedora)

  • November 17, 2016

我有一組軟體包 (*.rpm)。對於我可以rpm -qRp <package>列出的每個包的要求,但我想在不安裝包本身的情況下安裝它們(那些需要)。要求所有都存在於啟用的儲存庫中。有沒有一些簡單的方法可以做到這一點,而無需編寫我自己的腳本來解析rpm -qRp ...例如輸出。

我知道我可以通過使用 requires ( yum localinstall) 安裝所有內容然後解除安裝原始包來做到這一點,但問題是我的集合包含具有依賴關係和它們之間的衝突的包。然而,所需的包並不衝突。我必須做多個yum localinstall <list>,然後yum remove <list>確保列表中的包不衝突。

我有更好的方法嗎?我基本上想要類似的東西yum-builddep,但是對於要求,而不是 buildrequires。

我的發行版是Fedora/RHEL

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

引用自:https://unix.stackexchange.com/questions/220503