プロパティファイル、設定ファイル、スクリプト、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またはそれに似ているのが最善だと思います。