web-dev-qa-db-ja.com

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に入れることですが、おそらく私が求めていることを行う公式な方法はありますか?

edit

コメントできません、担当者はいません...私が投稿したリンクの第3章から、ソフトウェアコレクションパッケージは次のように実行する必要があると述べています:

scl enable rh-php56 'php -v'

これは機能しますが、追加のコマンドなしで$ php -vなどのすべてのユーザーに対して実行するにはどうすればよいですか。ウェブサーバーがそれを使用して、通常のシェルでsshユーザーが使用できるように、phpバイナリがグローバルに利用できる必要があります。

10
Ozzy

ソフトウェアコレクションを現在のシェル(サブシェルを起動しない)にインポートする方法は、「有効」ファイルをソースにすることです。

たとえば、Redhat 7マシンのrh-php56の場合...

ソース/ opt/rh/rh-php56/enable

「php」を実行するか、通常どおり「man php」のマンページを読むことができます。

これにより、適切な環境変数が現在のシェル環境に追加されます。個々のユーザーは.bashrcファイルでこれを行うことができ、SSH(非インタラクティブシェル)から利用できるようになります

有効ファイルを/etc/profile.d/に「.sh」サフィックスを付けてコピー(またはsymlink)して、すべてのユーザーに対して自動的に有効にすることもできます。

例えば

ln -s/opt/rh/rh-php56/enable /etc/profile.d/rh-php56.sh

デーモンなどの環境以上が必要な場合は、注意してこれを実行してください。または、そのソフトウェアの複数のバージョンがシステムに存在する場合(他のソフトウェア/サービスとの下位互換性のため)、バージョン間に相互作用がある可能性があります。また、ユーザーは「最新」バージョンを望まないか、「基本」システム(例:/ etc configs)がソフトウェアコレクションバージョンに影響しない理由について混乱する可能性があります。

Anthony Thyssen(非常に古いシステム管理者)

16
anthony