0

ファイルの依存関係が存在しない場合にインストールするRPMを構築しようとしています。RPMが依存関係をチェックする前に実行されるRPM仕様セクションはありますか。(「Requires」ヘッダーにリストされているパッケージの依存関係ではなく、ファイルの依存関係を参照しています)。

例:perlファイルがあり、実行許可ビットが設定されている場合。RPMは、perlファイルで「#!/ bin/perl」が指定した場所にperlがインストールされているかどうかを確認します。(実際のファイルの場所をチェックするのではなく、RPMデータベースをチェックしてperlがその場所にインストールされているかどうかを確認しているようです)perlが/ bin / perlの場所にインストールされていない場合、RPMがエラーを出す前にインストールしたいと思います私「/bin/perlは[MY_PACKAGE]に必要です」

副次的な質問:ファイルの依存関係はRPMデータベースをチェックするので、インストールされた場所を更新する方法はありますか?つまり、perlスクリプトで「#!/ usr / local / bin / perl」が指定されているのに、RPMデータベースのperlが「/ usr / bin / perl」にある場合、RPMデータベースを更新するにはどうすればよいですか。「/usr/ local / bin / perl」を手動でシンボリックにリンクすると、RPMデータベースが更新されないため、機能しません。RPMインストーラーは、「[MY_PACKAGE]には/ usr / local / bin/perlが必要です」と表示します。

4

2 に答える 2

2

RPM仕様の設計ガイドラインの1つは、エラーメッセージを出力したり、ユーザーと対話したりしないことです。それらが手動でインストールされるのか、yum/GUIを介してインストールされるのかはわかりません。

ファイルパッケージへの依存関係と同じように、ファイルへの依存関係を指定できます。ファイル名は必ず/で始めてください。RPMの依存関係リストを印刷すると、この方法でリストされた.soライブラリがいくつか表示されます。

Perlを使用している場合、最良の方法は、仕様に要件としてperlを含め、ディストリビューションの通常の場所、つまり/ usr / bin/perlに依存することです。

于 2010-07-25T04:36:17.143 に答える
1

仕事に間違ったツールを使用しようとしていると思います。rpm の仕事は、インストールするよう指示されたパッケージをインストールすることであり、他のパッケージを探しに行くことではありません。依存関係の取り込みは、apt、urpmi、yum などの高レベル ツールの仕事です。

あなたが与えた例では、パッケージが を必要とする場合、/usr/local/bin/perl他のパッケージが を提供する必要があります/usr/local/bin/perl/usr/local/bin/perlそれは、へのシンボリックリンクを含み、へ/usr/bin/perlの依存関係を宣言するパッケージである可能性があります/usr/bin/perl(ただし、最小バージョンが必要になる方法はわかりません/usr/local/bin/perl)。

于 2010-07-20T19:11:04.680 に答える