4

Linux イメージ (Oracle Linux、5.8) のインストールに使用する起動可能な ISO を構築しています。これは、アナコンダとキックスタート ファイルを使用して、ロードするパッケージを選択しています。これらのパッケージの一部は、%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 セクションでの処理が含まれます。この処理には、「ln」、「touch」などの標準的な Linux コマンドが必要です。これらは、coreutils パッケージ内で提供されます。サードパーティのパッケージには現在、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を編集して依存関係を追加せずに、パッケージの順序を制御またはオーバーライドすることは可能ですか?

助けてくれてありがとう。

4

2 に答える 2

3

ソース RPM を取得できない場合は、rpmrebuild を使用して RPM を再作成できます。

rpmrebuild -e -n -d . -p thirdparty-tools-1.00-09.noarch

これにより、再作成された仕様ファイルがデフォルトのエディターに表示され、require 行を変更できます。また、再ビルドされたバージョンがアップストリーム ベンダーのバージョンと区別されるように、パッケージ名も変更することができます (通常、パッケージ名に「-local」を追加します)。

于 2013-10-11T04:34:19.373 に答える
1

パッケージ「 thirdparty-tools 」は、そのすべての要件を指定する必要があります。このパッケージの SRPM を取得できる場合は、仕様を変更して、パッケージに coreutils、bash などが必要であることを示すことができます。

このパッケージをまったく変更できない場合、最適なオプションは、必要な要件を持つラッパー パッケージを作成することです。お気に入りのエディターを使用して「 thirdparty-tools-installer.spec 」ファイルを作成し、「 thirdparty-tools 」だけでなく coreutils も要件として含めるようにしてください。詳細については、rpm.or を参照してくださいhttp://www.rpm.org/max-rpm/s1-rpm-build-creating-spec-file.html

最後に、キックスタートの %post セクションで yum -y install thirdparty-tools を実行するだけです。確かに醜いですが、おそらくうまくいくでしょう。

于 2013-08-02T07:03:14.343 に答える