RPMパッケージをインストールするたびに、$ PATH変数に新しいパスを自動的に追加したいと思います。
RPMでインストール後にスクリプトを使用しようとしています。以下は、インストール後のスクリプトを含むRPM仕様ファイルの一部です。
%post
PATH=$PATH:/usr/app/mdg/bin
export PATH
ただし、インストールが成功した後も$ PATHは変更されませんでした。この問題を解決するのに役立ちます。
答え1
ユーザーの環境をそのように変更することはできません。そこに何かを追加しようとすることができますが、/etc/profile
それは災いになります。ファイルをに入れることができますが、/etc/profile.d
より良いですが、ディストリビューションがそれをサポートしていない可能性があります。最善の解決策は、すでにパスにある場所にシンボリックリンクを配置することです。たとえば、次のようになります。
ln -s /weird/place/my-program /usr/bin/my-program
答え2
ユーザーがすべきことは、インストール後のスクリプト期間中に変数を設定することだけです。これは他の場所のルートには影響しません。
システムパスは複数の場所で設定され、その一部はディストリビューションによって異なります。どこにでも存在する1つの方法はです/etc/profile
。ただし、/etc/profile
一般的な配布規則ではパッケージのインストールスクリプトの変更は許可されません。
あなたの質問に対する実際の答えは次のとおりです。しないでください。実行可能ファイルがそのパスに属し、パッケージによって提供される場合、/usr/bin
実行可能ファイル自体をそこに置く必要はありません。一般的な方法ですが、シンボリックリンクを配置できます。たとえば、プログラムのすべての実行可能ファイルが存在する場合は、そのパスの実行可能ファイル/usr/lib/myprogram/bin
に関連付ける必要があります/usr/bin
。パッケージマネージャが正しく追跡できるように、rpmにシンボリックリンクを含めます(インストール後にスクリプトにシンボリックリンクを作成しないでください)。%install
RPMをビルドするときに実行されるRPM仕様からこれを生成します(参照:RPM生成時に/usr/binにシンボリックリンクを生成する):
%install
…
ln -s ../../lib/myprogram/foo ../../lib/myprogram/bar ${RPM_BUILD_ROOT}%{_bindir}