RPMパッケージのインストール後に$ PATH変数に新しいパスを自動的に追加する方法は?

RPMパッケージのインストール後に$ PATH変数に新しいパスを自動的に追加する方法は?

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にシンボリックリンクを含めます(インストール後にスクリプトにシンボリックリンクを作成しないでください)。%installRPMをビルドするときに実行されるRPM仕様からこれを生成します(参照:RPM生成時に/usr/binにシンボリックリンクを生成する):

%install
ln -s ../../lib/myprogram/foo ../../lib/myprogram/bar ${RPM_BUILD_ROOT}%{_bindir}

関連情報