Linuxイメージ(Oracle Linux、5.8)インストール用に起動可能なISOを構築しています。これは、anacondaファイルとkickstartファイルを使用してロードするパッケージを選択します。 %post セクションの依存関係の問題により、これらのパッケージの一部が失敗しました。
たとえば、インストールが完了したら、/root/install.log で次のように表示できます。
Installing thirdparty-tools-1.00-09.noarch
/var/tmp/rpm-tmp.97891: line 1: ln: command not found
/var/tmp/rpm-tmp.97891: line 2: ln: command not found
/var/tmp/rpm-tmp.97891: line 3: ln: command not found
/var/tmp/rpm-tmp.97891: line 4: ln: command not found
error: %post(thirdparty-tools-1.00-09.noarch) scriptlet failed, exit status 127
パッケージの注文を制御/再定義できるかどうかを確認します。RPMを編集せずに依存関係を追加する。私はanaconda / kickstartドキュメントを見ました(https://fedoraproject.org/wiki/Anaconda/Kickstart#Chapter_3._Package_Selection)、他の場所で広範囲に検索したので、答えは実際に「いいえ、そうすることはできません」と思います。これは恥ずかしいことです。
問題は、私がさまざまなものを含めようとしていることです。第三者RPMは私の制御下ではなく、デジタル署名されています。これには%postセクションの一部の処理が含まれます。この処理には、coreutils パッケージで提供される「ln」、「touch」などのいくつかの標準的な Linux コマンドが必要です。明らかに含める必要がありますが、サードパーティのパッケージには現在coreutilsパッケージへの依存関係は含まれていません。 Anacondaは独自の部分順序アルゴリズムを使用してこれらのパッケージをインストールする順序を選択し、サードパーティのパッケージがインストールされます。今後coreutils パッケージ。明らかに正しい解決策は、第三者にこれらのRPMを変更させることですが、時間がかかることがあります。
私は、これが追加の依存関係を追加できるキックスタートファイルの隠し/非文書化オプションである可能性があります。理想的には、%packagesセクションに次の項目を追加できることを願っています。
%packages
@admin-tools
@base
@core
@system-tools
thirdparty-tools
# We would like to add some magic command to indicate a missing dependency
thirdparty-tools dependson coreutils
だから私の質問は:依存関係を追加するためにRPMを編集せずにパッケージの順序を制御または上書きできますか?
[このUnix StackExchangeサイトが存在することに気づく前に、私は基本的なStackOverflowサイトに同じ質問をしましたが、この内容を2回見た人にはまだ回答がありませんでした。 ]
答え1
%packagesセクションではいいえ、できません。 kickstartファイルのサードパーティツールの%postセクションにインストールコマンドを追加して、%packagesセクションのすべてのパッケージと依存関係がインストールされた後にのみそのコマンドをインストールできるようにします。