| 安定版リリース | 5.5.0 / 2024年11月11日 |
|---|---|
| リポジトリ |
|
| オペレーティング·システム | Unixライク |
| ライセンス | GNU 一般公衆利用許諾書#バージョン 2 |
| Webサイト | モジュール |
環境モジュールシステムは、関連する環境変数設定のグループを動的に作成または削除できるようにすることで、ユーザーがUnixまたはLinuxシェル環境を管理するのに役立つツールです。
モジュールは1990年代初頭から存在しており[1]、最大規模のコンピュータセンター[2]で、さまざまなソフトウェアツールの複数のバージョンをユーザーに展開するために使用されています。国立エネルギー研究科学計算センター(NERSC)は、ほぼすべてのソフトウェアを管理するために環境モジュールを使用していると報告しています[3] 。 環境モジュールは、参加する国防総省スーパーコンピューティングリソースセンター(DSRC)向けの国防総省高性能コンピューティング近代化プログラム(HPCMP)[4]プロジェクトベースライン構成[5]チームのベースライン構成要件として指定されています。
モジュールファイル
モジュールシステムは、一緒に設定する必要のある環境設定のグループを指定するモジュールファイル[6]に基づいています。モジュールファイルは、一般的な使用のために中央の場所にインストールすることも、個人使用のためにユーザーディレクトリにインストールすることもできます。環境モジュールモジュールファイルはTcl (ツールコマンド言語)で記述され、モジュール[7]ユーザーインターフェイスを介して modulecmd プログラムによって解釈されます。
環境モジュールの主な利点は、シェルに依存せず、bash、ksh、zsh、sh、tcsh、csh などの主要なシェルをすべてサポートしていることです。2 つ目の主な利点は、適切なモジュールをロードするだけで、同じアカウントからプログラムまたはパッケージの複数のバージョンを使用できることです。これら 2 つの利点は、環境モジュールをほとんどの HPC クラスター セットアップの一部にするのに役立ちました。また、TCL ではなく Lua で記述されたテキサス大学の lmod など、いくつかの代替実装にも影響を与えました。
モジュールファイルは、アプリケーションごと、バージョンごとに作成されます。動的にロード、アンロード、または切り替えることができます。同じソフトウェアの複数のバージョンを使用できるだけでなく、アプリケーションのアクセスと使用に関するサイト ポリシーを実装するためにも使用できます。
デフォルトのモジュールファイルディレクトリ
デフォルトのモジュール検索パスは、次のコマンドで表示できる隠し構成ファイルにあります。
$ cat ${ MODULESHOME } /init/.modulespath
/etc/modulefiles # CentOS、Scientific Linux、RHEL /usr/local/Modules/modulefiles # ソースからビルド デフォルト
一部のディストリビューションで使用される/etc/modulefilesディレクトリ(またはその他のディレクトリ) は、ソースからビルドした後、${MODULESHOME}/init/.modulespathファイルを変更することで使用できます。
パスに独自のモジュールを追加する
$ {MODULESHOME}/modulefiles/ use.ownモジュールは基本的に次の手順を実行します。
mkdir $HOME /privatemodules
cp ${ MODULESHOME } /modulefiles/null $HOME /privatemodules
モジュールuse --append $HOME /privatemodules
階層組織内でバージョンファイルを使用する
このセクションのコマンドには、/etc/modulefiles ディレクトリへの読み取り/書き込み/実行アクセスが必要です。代わりに、"module use --append" またはデフォルトのモジュール検索パスを指定する構成ファイルの変更とともに、$HOME/privatemodules または別のディレクトリを使用できます。
デフォルトの modulefiles ディレクトリは、最初は空です。デフォルトの modulefiles ディレクトリに null モジュールをコピーすると、"module avail" で表示されます。次の例では、null モジュールと module-info モジュールを使用して、階層構造内でのバージョン ファイルの使用と、それらが module avail と module show に与える影響を示します。
mkdir /etc/modulefiles/test
cp ${ MODULESHOME } /modulefiles/null /etc/modulefiles/test/2.0
cp ${ MODULESHOME } /modulefiles/module-info /etc/modulefiles/test/1.0
モジュールavail
モジュールshow test
最初のバージョンをデフォルトとして設定します。
echo '#%Module' > /etc/modulefiles/test/.version
echo 'set ModulesVersion "1.0"' >> /etc/modulefiles/test/.version
module avail
module show test module show test/2.0
次のようにして、新しいバージョンをデフォルトとして切り替えます。
rm /etc/modulefiles/test/.version
echo '#%Module' > /etc/modulefiles/test/.version
echo 'set ModulesVersion "2.0"' >> /etc/modulefiles/test/.version
module avail
module show test
上記の後、ソースから新規インストールすると、次の画面が表示されます。
$モジュール 利用可能
-------------------- /usr/local/Modules/3.2.10/modulefiles ---------------------
ドット module-git module-info modules null use.own
------------------------------- /etc/modulefiles -------------------------------
null test/1.0 test/2.0(デフォルト)
--------------------------- /home/user/privatemodules --------------------------
null
$ module show test ------------------------------------------------------------------- /etc/modulefiles/test/2.0:
module-whatis はまったく何もしません
-------------------------------------------------------------------
$モジュール show test/1.0
-------------------------------------------------------------------
/etc/modulefiles/test/1.0:
module-whatis は、さまざまな module-info 値をすべて返します
+++ module-info +++++++++++++++++++++++++++++++++
flags = 2
mode = display
name = test/1.0
specified = test/1.0
shell = bash
shelltype = sh
version = test/1.0
user = advanced
trace = 0
tracepat = -.*
symbols = *undef*
+++ info ++++++++++++++++++++++++++++++++++++++++
hostname = localhost
level = 1
loaded null = 0
library = /usr/local/lib/tcl8.6
nameofexecutable =
sharedlibextension = .so
tclversion = 8.6
patchlevel = 8.6.1
+++++++++++++++++++++++++++++++++++++++++++++++++
-------------------------------------------------------------------
自動モジュール初期化
Scientific Linux、CentOS、および RHEL ディストリビューションの environment-modules パッケージの環境モジュールには、/etc/profile.dディレクトリのmodules.cshおよびmodules.shスクリプトが含まれており、モジュールの初期化がデフォルトのシェル初期化の一部になります。環境モジュールの利点の 1 つは、環境のセットアップと初期化に bash、ksh、zsh、sh だけでなく tcsh および csh シェル ユーザーもサポートする単一のモジュール ファイルです。これにより、複雑な環境の管理が少し簡単になります。
ソース ビルドの場合、すべてのユーザーの自動化を手動で構成できます。
bash、ksh、zsh、sh 自動モジュール初期化
3.2.10 モジュール ビルド ディレクトリの etc/global/profile.modulesファイルからの/etc/profile.d/modules.sh 。
トラップ"" 1 2 3 case " $0 " in -bash | bash | */bash ) . /usr/local/Modules/default/init/bash ;; -ksh | ksh | */ksh ) . /usr/local/Modules/default/init/ksh ;; -zsh | zsh | */zsh ) . /usr/local/Modules/default/init/zsh ;; * ) . /usr/local/Modules/default/init/sh ;; # default esacトラップ1 2 3
3.2.10 モジュール ビルド ディレクトリから etc/global/profile.modulesファイルをシステム初期化ディレクトリにコピーします。
$ sudo cp etc/global/profile.modules /etc/profile.d/modules.sh
上記の汎用アドレスにバージョン 3.2.10 のシンボリック リンクを追加します。
$ cd /usr/local/Modules
$ sudo ln -sT 3 .2.10デフォルト
tcsh、csh 自動モジュール初期化
3.2.10 モジュール ビルド ディレクトリの etc/global/profile.modulesファイルへの/etc/profile.d/modules.cshシンボリック リンクにより、これらのユーザーの自動モジュール初期化を有効にすることができます。
Linuxへのインストール
yum と rpm を使用して Linux に環境モジュールをインストールする
Scientific Linux、CentOS、および RHEL ディストリビューションでは、環境モジュールは environment-modules パッケージに含まれており、次のコマンドでインストールできます。
sudo yum 環境モジュールをインストールします
インストールが完了すると、パッケージ情報は次のように表示されます。
rpm -qi 環境モジュール rpm -ql 環境モジュール
apt と dpkg を使用して Linux に環境モジュールをインストールする
Ubuntu または apt-get を使用するシステムでは、環境モジュールは次のようにインストールできます。
sudo apt-get 環境モジュールをインストールします
インストールが完了すると、パッケージ情報は次のように表示されます。
dpkg -L 環境モジュール
Linux にソースから環境モジュールをインストールする
Linux ディストリビューション リポジトリからそのディストリビューションの更新マネージャーを使用してインストールするのが最も簡単ですが、ソフトウェアはソースからインストールできます。ソースからのインストールでは、依存関係を解決するのが最も難しい作業です。通常の構成、作成、インストールのサイクルは、構成の改善ごとに、デフォルト環境では利用できない別の依存関係が明らかになるため、非常に遅くなる可能性があります。このセクションには、依存関係としてソースからTcl (ツール コマンド言語)をコンパイルするなど、ソースに環境モジュール パッケージをインストールする手順が含まれています。
- 環境モジュールのインストール
8.6.1バージョンのTcl (ツール コマンド言語)/usr/local/src からビルド
PCLinuxOS 64 ビット リポジトリにはTcl (ツール コマンド言語)が含まれていますが、Linux 上で環境モジュールをソースからビルドするために必要な構成ファイルを含む開発パッケージは含まれていません。Tclをソースからビルドすると、必要なファイルが使用できるようになります。
Tcl ソース: http://sourceforge.net/projects/tcl/files/Tcl/
ダウンロード後にソースを抽出する
cd /usr/local/src
tar -xvzf ~/Downloads/tcl8.6.1-src.tar.gz
設定、作成、インストール
cd /usr/local/src/tcl8.6.1
unix/configure
sudo make install を
実行します
。 /usr/local/src から構築されたモジュールの 3.2.10 バージョン
ダウンロード後にソースを抽出する
cd /usr/local/src
tar -xvzf ~/Downloads/modules-3.2.10.tar.gz
設定、作成、インストール
cd /usr/local/src/modules-3.2.10
CPPFLAGS = "-DUSE_INTERP_ERRORLINE" ./configure
作る
sudoインストール
参照
- Tcl
- Xsede ソフトウェア環境。極限科学およびエンジニアリング発見環境 ― 国立科学財団
- NICS モジュールの説明 ― オークリッジ国立研究所の国立計算科学研究所 ― 米国エネルギー省
- Lmod ― Luaベースのモジュールシステム
- Spack ―ローレンス・リバモア国立研究所で開発された HPC ソフトウェア用パッケージ マネージャー
参考文献
- ^ Furlani, John L. (1991 年 9 月 30 日 – 10 月 3 日)。「モジュール: 柔軟なユーザー環境の提供」(PDF)。第 5 回大規模インストール システム管理会議 (LISA V) の議事録。カリフォルニア州サンディエゴ: 141–152。2014年2 月 9 日閲覧。
- ^ 「NICS ユーザーサポート Kraken モジュールの説明」。国立計算科学研究所 (NICS)。オークリッジ国立研究所 - エネルギー省。2011 年 5 月 22 日。2014 年 2 月 22 日時点のオリジナルよりアーカイブ。2014年2 月 9 日に閲覧。
- ^ 「NERSC モジュール ソフトウェア環境」。国立エネルギー研究科学計算センター (NERSC)。科学局 - エネルギー省。2014 年 2 月 7 日。2014年2 月 19 日閲覧。
- ^ 「ソフトウェアの複数のバージョンにアクセスするためのモジュールの使用」。ベースライン構成。国防総省高性能コンピューティング近代化プログラム (HPCMP)。2008 年 3 月 20 日。2014 年 2 月 22 日時点のオリジナルよりアーカイブ。2014年2 月 9 日に閲覧。
- ^ 「DoD 高性能コンピューティング近代化プログラム ベースライン構成」。ベースライン構成。DoD 高性能コンピューティング近代化プログラム (HPCMP)。2014 年 2 月 22 日時点のオリジナルよりアーカイブ。2014年2 月 9 日閲覧。
- ^ John L. Furlani & Peter W. Osel (2009 年 7 月)。「modulefile - Modules パッケージの Tcl コードを含むファイル」。SourceForge。manページ。2014年2 月 9 日に取得。
- ^ John L. Furlani & Peter W. Osel (2009 年 7 月)。「module - Modules パッケージへのコマンド インターフェイス」。SourceForge。manページ。2014年2 月 9 日に取得。
外部リンク
- http://modules.sourceforge.net/ - 環境モジュール プロジェクトのホームページ
- John L. Furlani、「モジュール: 柔軟なユーザー環境の提供」、第 5 回大規模インストール システム管理会議 (LISA V) の議事録、pp. 141 ~ 152、カリフォルニア州サンディエゴ、1991 年 9 月 30 日~10 月 3 日。
- http://lmod.sourceforge.net - Tcl の代わりに LUA を使用した代替実装
- http://www.lysator.liu.se/cmod/ - C のみを使用した代替実装
- ペンシルベニア州立大学環境モジュール ユーザー ガイド
- モジュールを使用して、デザイン環境を 90 年代に引きずり込みましょう。 - SNUB Boston 2001 - Erich Whitney、Axiowave Networks、Mark Sprague、ATI Research
