
rpm パッケージのセットがあります。一度にすべてインストールするつもりですが、その前にインストールする順序を取得したいと思います。パッケージ マネージャーにすべてのパッケージをランダムな順序で提供すれば、マネージャーがパッケージ間の依存関係を判断し、正しい順序でインストールすることはわかっています。この順序を取得するにはどうすればよいでしょうか。
答え1
--test オプションを使用すると、rpm のデバッグ出力を使用できます。これは、パッケージはインストールされないことを意味しますが、stderr 出力には次のように内部順序が含まれます。
D: ========== tsorting packages (order, #predecessors, #succesors, depth)
D: 0 0 2 1 +cla-v1-r45.0.0.x86_64
D: 1 0 11 2 +ace-6.5.15-1.x86_64
D: 2 0 1 3 +ace-kokyu-6.5.15-1.x86_64
D: 3 0 1 3 +ace-xml-6.5.15-1.x86_64
D: 4 0 7 4 +tao-2.5.15-1.x86_64
D: 5 0 0 5 +tao-cosconcurrency-2.5.15-1.x86_64
D: 6 0 0 5 +tao-cosevent-2.5.15-1.x86_64
D: 7 0 0 5 +tao-cosnaming-2.5.15-1.x86_64
D: 8 0 0 5 +tao-cosnotification-2.5.15-1.x86_64
D: 9 0 0 5 +tao-costrading-2.5.15-1.x86_64
D: 10 0 0 5 +tao-rtevent-2.5.15-1.x86_64
D: 11 0 0 5 +tao-utils-2.5.15-1.x86_64
D: 12 0 0 3 +ace-gperf-6.5.15-1.x86_64
D: 13 0 0 1 +mpc-6.5.15-1.x86_64
D: 14 0 0 1 +PCMX-6.0A90-02.x86_64
D: installing binary packages
次に、フィルターを使用して解析します。例: awk
rpm -Uvv --test *.rpm 2>&1 | awk 'BEGIN { FS = "+" }; /D: ========== tsorting packages/,/D: installing binary packages/ { printf "%s ",$2 }'
答え2
yum
この注文を印刷するオプションはありません(マニュアル)、また、これを行うためのデータベースやライブラリへのよく知られたインターフェースもありません。したがって、解決策は外 yum
yum
パッケージの追加依存関係の完全なリストを印刷するように要求することはいつでもできますが、その情報は、注文パッケージをインストールする必要がある場所。 と尋ねる方が簡単ですrpm
。
原理的には、次の出力を使用するスクリプトを書くことができます。
rpm -qpR package-file
それぞれパッケージファイル依存関係を取得し、ステップごとに順序付けます。例:
- 他のパッケージに依存しないパッケージの場合、
- 前述のパッケージの1つ以上(および場合によっては他のパッケージ)に依存するパッケージこれグループ)、および
- 残りのパッケージがなくなるまで、これを繰り返します
(私は逆のことをしました - パッケージを探して取り除く、複雑ではあるが実行可能です。