RHSCL PHPを世界中で利用できるようにする最善の方法

RHSCL PHPを世界中で利用できるようにする最善の方法

次の URL を使用して RHSCL 2 をインストールしました。

https://access.redhat.com/documentation/en-US/Red_Hat_Software_Collections/2/html/2.0_Release_Notes/chap-Installation.html

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 (非常に古いシステム管理者)

関連情報