Translated message

A translation of this page exists in English.

Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

Red Hat Software Collection を再起動またはログアウト後も持続させる

Solution Unverified - Updated -

Environment

  • Red Hat Enterprise Linux 6.2 EUS 以降
  • Red Hat Enterprise Linux 7.0 以降
  • Red Hat Software Collections 1.0 以降

Issue

  • マシンを再起動またはログアウトすると、有効なソフトウェアコレクションがすべて無効になり持続しません。

Resolution

SysV init サービスを再起動後も持続させる

まずは、RHSCL から MySQL デーモンなどの SysV サービスを再起動後に有効にします。正しい SysV サービスを有効にするだけなので非常に簡単です。たとえば、mysql55 コレクションは /etc/init.d の下に mysql55-mysqld と呼ばれる新しい SysV init スクリプトを作成します。これは他の SysV サービスファイルと同じように処理されますが、名前が事前に固定されているところだけが異なります。たとえば、以下のようになります。

# chkconfig mysqld off
# chkconfig mysql55-mysqld on

Red Hat Software Collections のデーモンは、コアシステムのデーモンの代わりに次の再起動後に起動します。ただし、(mysql CLI、mysqldump ユーティリティなどの) ソフトウェアコレクションは、デーモンプロセスに対してのみ適切に有効になります。これらのデーモンと対話し、ユーザーが実行するプロセスに対しては有効にはなりません。セッション全体に対してソフトウェアコレクションを有効にするには、以下のように、"scl enable" 呼び出しで終了する新しい bash を実行するのが一般的な方法です。

$ scl enable mysql55 bash

ユーザー領域環境をログアウト/再起動後に自動的に有効にする

次に、再起動後にユーザーに対してソフトウェアコレクションを有効にします。つまり、常に "scl enable" を呼び出さなくてもコレクションと連携するようにします。ただ、Software Collections はこのような使い方をするために設計されているわけではないため、この方法は正しい解決方法ではありません。この問題に対応したサポートされる方法は存在しないため、 以下は、単なる回避策となります。

ソフトウェアコレクションの概念は以下のようになります。ソフトウェアコレクションから python を実行した場合と、コアシステムの python から実行した場合では、python コマンドを実行する際に定義される環境変数のみが異なります。この変数は、/opt/rh/python33/enable の bash スクリプトを実行する "scl enable python33 ..." 呼び出しを使用して設定されます。

通常、/etc/profile.d/ のファイルを使用してすべてのユーザーの環境を変更する bash スクリプトを実行することができます。従って、特定のコレクションを有効にすることだけが必要になります。そのため、/etc/profile.d/something.sh で "scl enable ..." を実行すると親プロセスの環境には影響を及ぼさないため問題となります。このようなタスクには、scl-utils に追加され、scl-utils-20120927-9.el6 以降で RHEL6 で採用されている機能を使用する必要があります。

このパッケージを使用して、/etc/profile.d 配下に新しいファイルを作成し、以下の内容を追加すると、ユーザー領域を自動的に有効にすることができます (以下の例では python33 コレクションを使用しています)。

$ cat /etc/profile.d/enablepython33.sh
#!/bin/bash
source scl_source enable python33

このようなファイルを使用すれば、シェルのデフォルトで python 3.3 コレクションが有効になります。

注意: この方法で設定すると、コレクションを後で無効にすることはできません。また、スクリプトの shebang は、使用されるインタープリターの影響を受けます。

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments