web-dev-qa-db-ja.com

パッケージ自体をインストールせずにrpmパッケージの依存関係をインストールする方法(rhel / Fedora)

パッケージセット(* .rpm)があります。各パッケージについてrpm -qRp <package>を実行して必要なものを一覧表示できますが、パッケージ自体をインストールせずにそれらをインストールしたい(必要なもの)。はすべて、有効なリポジトリに存在する必要があります。たとえば、rpm -qRp ...の出力を解析する独自のスクリプトを記述せずに、これを行う簡単な方法はありますか?.

Require(yum localinstall)を使用してすべてをインストールし、元のパッケージをアンインストールすることでそれを実行できることはわかっていますが、問題は、セットに依存関係とそれらの間の競合の両方を持つパッケージが含まれていることです。ただし、必要なパッケージは競合しません。複数のyum localinstall <list>の後にyum remove <list>を実行し、リスト内のパッケージが競合しないようにする必要があります。

私にはもっと良い方法がありますか?私は基本的にyum-builddepのようなものを望みますが、requiresではなく、buildrequiresではありません。

私のディストリビューションはFedora/RHELです

19
Miroslav Franc

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
25
larsks

最善の方法は:

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

... deplistなどを使用します。ほとんどは機能しますが、まったく同じ結果が得られるとは限りません。

4
James Antill