次の URL を使用して RHSCL 2 をインストールしました。
RedHat サブスクリプション マネージャーを使用します。
私はその後走っyum remove php*
てyum install rh-php56
すべては順調に進みましたが、PHP がどこにも見つかりません。その後、実行して次のディレクトリをfind / -name php
見つけました。rh-php56
/var/opt/rh/rh-php56/lib/php
/opt/rh/rh-php56/register.content/var/opt/rh/rh-php56/lib/php
/opt/rh/rh-php56/root/usr/bin/php
/opt/rh/rh-php56/root/usr/lib64/php
/opt/rh/rh-php56/root/usr/share/php
/usr/bin
これらのバイナリを、通常はすべてのユーザーがグローバルに利用できる他のディレクトリに格納する最適な方法は何ですか?
パッケージのインストール時に手順を忘れたため、グローバルに利用できないのでしょうか? それとも、RHSCL を使用するとこのようなことが起こるのでしょうか?
これらのフォルダー内のバイナリをテストしましたが、実行すると機能するphp -v
ので、正常に動作しています。
最初に思いついたのは、またはにcp
入力することだけですが、私が求めていることを実行するための正式な方法があるのでしょうか?/bin
/usr/bin
編集
コメントできません、回答はありません...私が投稿したリンクの第 3 章には、ソフトウェア コレクション パッケージは次のように実行する必要があると書かれています。
scl enable rh-php56 'php -v'
これは機能します...ただし、追加のコマンドなしですべてのユーザーに対して実行するにはどうすればよいですか$ php -v
。Web サーバーがそれを使用でき、通常のシェルでユーザーが SSH できるように、PHP バイナリをグローバルに利用できる必要があります。
答え1
ソフトウェア コレクションを現在のシェルにインポートする方法 (サブシェルを起動しない) は、「enable」ファイルをソースすることです。
たとえば、Redhat 7 マシン上の rh-php56 の場合...
ソース /opt/rh/rh-php56/enable
これで、通常どおり「php」を実行したり、「man php」でマニュアルページを読んだりできるようになります。
これにより、現在のシェル環境に適切な環境変数が追加されます。個々のユーザーは、.bashrc ファイルでこれを実行でき、SSH (非対話型シェル) から利用できるようになります。
また、enable ファイルを「.sh」サフィックスを付けて /etc/profile.d/ にコピー (またはシンボリックリンク) して、すべてのユーザーに対して自動的に有効にすることもできます。
例えば
ln -s /opt/rh/rh-php56/enable /etc/profile.d/rh-php56.sh
複数の環境が必要な場合 (デーモンなど)、またはシステム上にそのソフトウェアの複数のバージョンが存在する場合 (他のソフトウェア/サービスとの下位互換性のため)、バージョン間で相互作用が発生する可能性があるため、これを行うときは注意してください。また、ユーザーは「最新」バージョンを望まなかったり、「ベース」システム (例: /etc configs) がソフトウェア コレクションのバージョンに影響しない理由について混乱したりする場合もあります。
Anthony Thyssen (非常に古いシステム管理者)