| 環境モジュール | |
|---|---|
| 安定版リリース | 5.6.1 / 2025年11月25日 (2025-11-25) |
| リポジトリ | |
| 書かれた | Tcl |
| オペレーティング·システム | Unixライク |
| ライセンス | GNU 一般公衆利用許諾書#バージョン 2 |
| Webサイト | 環境モジュール |
環境モジュールシステムは、ユーザーがシェル環境を動的に変更できるように設計されたソフトウェアツールです。環境変数設定のセットを管理および切り替えるためのメカニズムを提供し、さまざまなソフトウェアパッケージ、コンパイラ、ライブラリの設定によく使用されます。
概要
[編集]環境モジュールを使用すると、ログインスクリプトを恒久的に変更することなく、シェル環境を動的に構成できます。これは、ユーザーが同じアプリケーションの複数のバージョンにアクセスする必要がある可能性のある高性能コンピューティング(HPC)環境で特に役立ちます。ユーザーは、モジュールファイルと呼ばれるスクリプトをロードおよびアンロードすることで、 PATHやLD_LIBRARY_PATHなどの環境変数を変更します。
環境モジュールはシェルに依存せず、すべての主要な Unix シェル ( Bash、ksh、Zsh、Fish、sh、tcsh、csh )、Windows シェル ( CMD.EXEおよびPowerShell )、およびいくつかのスクリプト言語( Perl、Python、Ruby、Tcl、CMake、R ) をサポートしています。
環境モジュールは、環境変数、シェルエイリアス、シェル関数、コマンドライン補完など、シェル環境を構成するあらゆる種類の項目を処理します。
歴史
[編集]環境モジュールは、1990年代初頭にサン・マイクロシステムズのジョン・L・ファーラニによって開発されました[ 1 ] 。バージョン1は純粋なシェルスクリプトとして開発されました。バージョン2では、環境モジュールはTclで記述されたモジュールファイルを評価するCプログラムになりました。
1990年代半ば、シーメンスのピーター・W・オセルとストロベリーのイェンス・ハミッシュが3.0beta版をリリースしました。[ 2 ]国立エネルギー研究科学計算センター(NERSC)のRK・オーウェンは1990年代後半にプロジェクトを引き継ぎ、Linuxに移植しました。彼は2000年にGNU一般公衆利用許諾書(GPL)の下でバージョン3.1をリリースしました。[ 3 ]
2000年代には、環境モジュールが高性能コンピューティング(HPC)の世界で注目を集め、最大規模のコンピューティングセンターで利用されるようになりました。[ 4 ] [ 5 ]環境モジュールは、国防総省の 高性能コンピューティング近代化プログラム(HPCMP)のベースライン構成要件として指定されました。[ 6 ]
2004年、MIPS TechnologiesのMark Lakataは、環境モジュールの純粋なTcl再実装を開発しました。[ 7 ]この代替バージョンのメンテナンスは、後にミネソタ大学のKent Meinによって継続されました。
2008年、テキサス先端コンピューティングセンター(TACC)のロバート・マクレイは、 Luaで書かれた環境モジュールの代替実装プロジェクトであるLmod [ 8 ]を導入しました。
2012年12月のバージョン3.2.10のリリース後、環境モジュールのC実装の開発は中止されました。その後数年間、LmodプロジェクトはHPCコミュニティ内で人気を博しました。
2017年、環境モジュールプロジェクトの管理は、フランス原子力・代替エネルギー委員会(CEA)のXavier Delaruelle氏に移管されました。彼は、以前のCバージョンとの互換性を維持するために改良された、純粋なTcl実装に基づくバージョン4をリリースしました。[ 9 ]それ以来、使いやすさを向上させ、機能を拡張するための新機能が定期的に導入されています。[ 10 ]
2025年に、モジュールはHigh Performance Software Foundation(HPSF)のLinux Foundationプロジェクトの一部となりました。 [ 11 ]
建築
[編集]環境モジュールは、コマンドmodulecmd.tclと、moduleという名前のシェル関数またはエイリアスを提供します。[ 12 ]このコマンドは、環境変更を定義するTclで記述されたスクリプトであるmodulefiles [ 13 ]を解釈し、対応するシェルコードを生成します。シェル関数またはエイリアスは、このコードを評価し、現在のシェルセッションを更新します。
モジュールファイルは通常、 PATH、MANPATH、LD_LIBRARY_PATHなどの環境変数を変更します。以下の例は、サンプルソフトウェアパッケージのシンプルなモジュールファイルを示しています。
#%Module
module-whatis {サンプルソフトウェアバージョン1.2 }
ルート/usr/local/example-1.2を設定します
先頭に PATH $root / bin
を付加LD_LIBRARY_PATH $root / lib
に付加-パスMANPATH $root / man を
付加 モジュールファイルは、モジュールパスと呼ばれるディレクトリに整理されます。これらのモジュールパスは、システム全体へのアクセスを提供するために集中管理することも、ユーザー固有の設定のために個人用ディレクトリに配置することもできます。
ユーザーは以下を行うことができます:
- モジュールロードを使用してモジュールファイルをロードする(つまり、定義された環境変更を適用する)
- module unloadでモジュールファイルをアンロードします(つまり、環境の変更を元に戻します)。
- モジュールスイッチを使用してモジュールファイルを切り替える
- 利用可能なモジュールファイルとモジュールの可用性を表示します
- モジュール表示を使用してモジュールファイルの内容を表示する
- モジュールリストを使用して現在ロードされているモジュールファイルを一覧表示します
- モジュール保存を使用して、現在ロードされているモジュールファイルをコレクションに保存します。
- コレクションで記述された環境をモジュール復元で復元する
- モジュール使用でモジュールパスを有効にする
使用例
[編集]ユーザー固有のモジュールパスにサンプル モジュール ファイルを作成します。
$ mkdir -p $HOME /privatemodules/test
$ echo '#%Module' > $HOME /privatemodules/test/1.0
$ echo '#%Module' > $HOME /privatemodules/test/2.0
$ module use $HOME /privatemodules
利用可能なモジュールの表示:
$モジュール 利用可能
---- /home/user/privatemodules ---------------------------
test/1.0 test/2.0
---- /usr/share/Modules/modulefiles ------------------------
ドット module-git module-info modules null use.own
モジュールの読み込み:
$モジュール 負荷 テスト/2.0
ロードされたモジュールを一覧表示します:
$ module list
現在ロードされているモジュールファイル:
1) test/2.0
バージョンの切り替え:
$モジュール スイッチ test/2.0 test/1.0
ロードされたすべてのモジュールをアンロードしています:
$モジュール パージ
サンプルテストモジュール のデフォルト バージョンを定義します。
$ echo '#%Module' > $HOME /privatemodules/test/.modulerc
$ echo 'module-version test/1.0 default' >> $HOME /privatemodules/test/.modulerc
デフォルトのテストモジュールをロードします:
$ module load test $ module list
現在ロードされているモジュールファイル: 1) test/1.0
可用性
[編集]環境モジュールは、幅広いLinuxおよびUnixオペレーティングシステムで配布されています。[ 14 ] Debian、Ubuntu、Red Hat Enterprise Linux、Fedoraでは、 environment-modulesというパッケージ名で利用可能です。また、 Homebrewプロジェクトを通じてmacOS用のパッケージも提供されており、Windowsシステム用のバージョンも利用可能です。パッケージ化されたディストリビューションが提供されていない場合は、プロジェクトがソースコードとドキュメントを提供し、手動でのインストールと設定をサポートします。[ 15 ] [ 16 ]
参考文献
[編集]- ^ Furlani, John L. (1991年9月30日~10月3日). 「モジュール:柔軟なユーザー環境の提供」 (PDF) .第5回大規模インストールシステム管理会議 (LISA V) 議事録. サンディエゴ、カリフォルニア州: 141–152 . 2014年2月9日閲覧。
- ^ 「Module 3.0 Beta 1がリリースされました」 SourceForge 、 1996年10月4日。
- ^ 「Modules 3.1.0 ほぼ完成」 SourceForge 2000年6月28日。
- ^ 「NICSユーザーサポートKrakenモジュールの説明」国立計算科学研究所(NICS)オークリッジ国立研究所 - エネルギー省。2011年5月22日。2014年2月22日時点のオリジナルよりアーカイブ。 2014年2月9日閲覧。
- ^ 「NERSCモジュールソフトウェア環境」国立エネルギー研究科学計算センター(NERSC)科学局 - エネルギー省 2014年2月7日オリジナルより2012年11月7日時点のアーカイブ。 2025年9月3日閲覧。
- ^ 「ソフトウェアの複数のバージョンにアクセスするためのモジュールの使用」。ベースライン構成。国防総省高性能コンピューティング近代化プログラム(HPCMP)。2008年3月20日。 2014年2月22日時点のオリジナルよりアーカイブ。 2014年2月9日閲覧。
- ^ 「モジュールの純粋なTCL実装」。SourceForge 。 2002年10月29日。
- ^ 「Lmodの発表:新しいモジュールシステム」 SourceForge 、 2008年10月16日。
- ^ 「モジュール4.0.0がリリースされました」。SourceForge 。 2017年10月16日。
- ^ 「新機能」 . Read the Docs . 2025年11月25日.
- ^ 「High Performance Software FoundationがモジュールをHPSFプロジェクトとして歓迎」 HPSF 、 2025年11月10日。
- ^ "module" . Read the Docs . 2025年11月25日.
- ^ "modulefile" .ドキュメントを読む. 2025年11月25日.
- ^ 「環境モジュールのバージョン」 . Repology . 2025年9月4日閲覧。
- ^ 「Unixへのモジュールのインストール」。ドキュメントを読む。2025年11月25日。
- ^ 「Windowsへのモジュールのインストール」。ドキュメントを読む。2025年11月25日。
外部リンク
[編集]- 公式サイト
- GitHub上のモジュール
- John L. Furlani、「モジュール: 柔軟なユーザー環境の提供」、 第 5 回大規模インストール システム管理会議 (LISA V) の議事録、pp. 141 ~ 152、カリフォルニア州サンディエゴ、1991 年 9 月 30 日~10 月 3 日。
- ペンシルベニア州立大学環境モジュールユーザーガイド
- モジュールを使って、デザイン環境を90年代に蘇らせましょう! - SNUB Boston 2001 - Erich Whitney、Axiowave Networks、Mark Sprague、ATI Research
- Xsedeソフトウェア環境。極限科学・工学発見環境 ― 国立科学財団
- cmod ― 1990年代に開発されたC言語の代替実装
- Lmod ― Luaベースのモジュールシステム
- Spack ― HPC ソフトウェア用の柔軟なパッケージ マネージャー
- EasyBuild ― HPC システム上のソフトウェアを管理するためのソフトウェアビルドおよびインストールフレームワーク