rpmパッケージ自体をインストールせずにrpmパッケージの依存関係をインストールする方法は? (RHEL/フェドラ)

rpmパッケージ自体をインストールせずにrpmパッケージの依存関係をインストールする方法は? (RHEL/フェドラ)

パッケージセット(*.rpm)があります。各パッケージの要件を一覧表示できますが、rpm -qRp <package>パッケージ自体をインストールせずに必要な要件のみをインストールしたいと思います。すべてのコンテンツがアクティブなリポジトリに存在する必要があります。rpm -qRp ...たとえば、出力を解析するために独自のスクリプトを作成せずにこれを行う簡単な方法はありますか?

require( )を使用してyum localinstallすべてをインストールしてから元のパッケージを削除すると、これを行うことができますが、問題は私のコレクションに依存関係と競合があるパッケージが含まれていることです。ただし、必須パッケージは競合しません。複数のyum localinstall <list>タスクを実行しyum remove <list>、リスト内のパッケージが競合していないことを確認する必要があります。

より良い考えがありますか?私は基本的に同様のものが欲しいyum-builddepが、buildrequiresの代わりにneedが必要です。

私のディストリビューションは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などを使用します。ほとんどの場合動作しますが、まったく同じ結果が得られるという保証はありません。

関連情報