%pre%postスクリプトレットでRPMにパッケージ化されたファイルまたはスクリプトを参照する方法

%pre%postスクリプトレットでRPMにパッケージ化されたファイルまたはスクリプトを参照する方法

プロパティファイル、設定ファイル、スクリプト、JARなどを含むさまざまなファイルをパッケージ化するRPMパッケージを構築しています。これで、%pre、%post、%preun、および%postunスクリプトを作成するときに、スクリプト/フォルダ(RPMにパッケージされている)にあるいくつかのスクリプトを使用する必要があります。だから私は次のことができるようにしたいと思います。

%pre
export scripts/important.sh
someFunctionFromImportant parameter
%post
. scripts/anotherScript.sh
someFuncFromAnotherScript parameters

このRPMを任意のシステムにコピーして貼り付けてからインストールしたいので、スクリプトなしで実行する必要があり%preます%post。私はたくさんのチュートリアルを読んでいますが、それを達成する方法を探しています。注:私の要件のために、RPMがすでに存在するシステムにこれらのスクリプトをインストールすることはできません。 RPMファイル自体と同様に、インストールと事前および後のインストールスクリプトを使用してすべての作業をきちんと実行する必要があります。

答え1

あなたの質問を私が理解したところによると、あなたが望むものは不可能です。スクリプトレット%preは、RPMの任意のエントリがディスクで利用可能になる前に実行されるため、パッケージ内のどのエントリも参照できません。一方、スクリプトレットは%postパッケージペイロードが準備された後に実行されるため、その部分は問題ありません。 RPM パッケージのインストール/アップグレード/アンインストール作業の手順の詳細については、以下を参照してください。https://fedoraproject.org/wiki/Packaging:ScriptletSnippets#Scriptlet_Ordering。このURLはFedoraプロジェクトに固有のものですが、その情報はすべてのRPMベースのLinuxディストリビューションに有効でなければなりません。

答え2

で利用可能な必須コンポーネントがある場合は、%pre別のrpmを作成してそれに依存します。あるいは、curl必要なファイルのようなひどいことをしたかもしれません。私はmy-project-toolsあなたの前提条件を含むrpmまたはそれに似ているのが最善だと思います。

関連情報