第3章 高度なトピック


本章では、Software Collections のパッケージ化に関する高度なトピックを説明します。

3.1. NFS での Software Collections の使用

一部の環境では、この要件には、ユーザーが希望するアプリケーションやツールのバージョンをインストールするのではなく、アプリケーションやツールがどのように配布されるかについての集中型モデルが必要になることがよくあります。このようにして NFS は、集中管理されたソフトウェアをマウントする一般的な方法です。
NFS 経由で Software Collection を使用する nfsmountable には、Software Collection マクロを定義する必要があります。Software Collection の構築時にマクロが定義されている場合には、生成される Software Collection には、Software Collection の /opt ファイルシステム階層外にある状態ファイルと設定ファイルがあります。これにより、NFS に /opt ファイルシステム階層を読み取り専用としてマウントできます。また、状態ファイルと設定ファイルの管理が容易になります。
NFS を介した Software Collections のサポートが必要ない場合は、nfsmountable の使用は任意ですが推奨されます。
nfsmountable マクロを定義するには、Software Collection のメタパッケージの spec ファイルに以下の行が含まれていることを確認してください。
%global nfsmountable 1

%scl_package %scl
上記のように、nfsmountable マクロを定義する前に %scl_package マクロを定義する必要があります。これは、nfsmountable マクロが定義されているかどうかに応じて、%scl_package マクロが、_sysconfdir_sharedstatedir_localstatedir のマクロを再定義するためです。再定義されたマクロで nfsmountable が変更する値は、以下の表で説明されています。
表3.1 Software Collection マクロの値の変更
マクロ
元の定義
元の定義に対する拡張された値
変更された定義
元の定義に対する拡張された値
_sysconfdir
%{_scl_root}/etc
/opt/provider/%{scl}/root/etc
%{_root_sysconfdir}%{_scl_prefix}/%{scl}
/etc/opt/provider/%{scl}
_sharedstatedir
%{_scl_root}/var/lib
/opt/provider/%{scl}/root/var/lib
%{_root_localstatedir}%{_scl_prefix}/%{scl}/lib
/var/opt/provider/%{scl}/lib
_localstatedir
%{_scl_root}/var
/opt/provider/%{scl}/root/var
%{_root_localstatedir}%{_scl_prefix}/%{scl}
/var/opt/provider/%{scl}

3.1.1. ディレクトリー構造およびファイル所有者の変更

nfsmountable マクロは、scl_install および scl_files マクロがディレクトリー構造の作成方法にも影響し、rpmbuild コマンドの実行時にファイルの所有権を設定します。
たとえば、定義された nfsmountable マクロを持つ software_collection という名前の Software Collection のディレクトリー構造は、以下のようになります。
$ rpmbuild -ba software_collection.spec --define 'scl software_collection'
...
$ rpm -qlp software_collection-runtime-1-1.el6.x86_64
/etc/opt/provider/software_collection
/etc/opt/provider/software_collection/X11
/etc/opt/provider/software_collection/X11/applnk
/etc/opt/provider/software_collection/X11/fontpath.d
...
/opt/provider/software_collection/root/usr/src
/opt/provider/software_collection/root/usr/src/debug
/opt/provider/software_collection/root/usr/src/kernels
/opt/provider/software_collection/root/usr/tmp
/var/opt/provider/software_collection
/var/opt/provider/software_collection/cache
/var/opt/provider/software_collection/db
/var/opt/provider/software_collection/empty
...

3.1.2. Software Collections の登録および登録解除

Software Collection が NFS で共有されているが、お使いのシステムにローカルにインストールされていない場合には、その Software Collection を登録して scl ツールに認識させる必要があります。
Software Collection の登録は、以下の scl register コマンドを実行して行います。
$ scl register /opt/provider/software_collection
/opt/provider/software_collection は、登録する Software Collection のファイルシステム階層への絶対パスです。パスのディレクトリーに、有効な Software Collection ファイルシステム階層と見なされる enable スクリプトレットと root/ ディレクトリーに含まれる必要があります。
Software Collection の登録解除は、scl ツールが登録済み Software Collection を認識させないようにする際に実行する逆の操作です。
Software Collection の登録を解除するには、scl コマンドの実行時に deregister スクリプトレットを呼び出します。
$ scl deregister software_collection
ここで、software_collection は、登録を解除する Software Collection の名前に置き換えます。

3.1.2.1. Software Collection Metapackage での (de)register スクリプトレットの使用

Software Collection メタパッケージで (de)register スクリプトレットの有効化方法と同様に、(de)register スクリプトレットを指定できます。スクリプトセットを指定する場合は、メタパッケージ spec ファイルの %file セクションに明示的に追加するようにしてください。
(de)register スクリプトセットの指定例は、以下のサンプルコードを参照してください。
%install
%scl_install

cat >> %{buildroot}%{_scl_scripts}/enable << EOF
# Contents of the enable scriptlet goes here
...
EOF

cat >> %{buildroot}%{_scl_scripts}/register << EOF
# Contents of the register scriptlet goes here
...
EOF

cat >> %{buildroot}%{_scl_scripts}/deregister << EOF
# Contents of the deregister scriptlet goes here
...
EOF
...
%files runtime -f filelist
%scl_files
%{_scl_scripts}/register
%{_scl_scripts}/deregister
register スクリプトレットでは、/etc/opt//var/opt/ にファイルを作成するコマンドなど、Software Collection の登録時に実行するコマンドをオプションで指定できます。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.