「モジュールロード」コマンドが機能しない


12

次のコマンドを使用して「Global Climate Model」をコンパイルしようとしています。

module unload pgi gcc
module load gcc/4.6.3 pgi/11.8

それらを実行すると、ターミナルはで応答しcommand not foundます。

私は何を間違えていますか?これを行う正しい方法は何ですか?


「グローバル気候モデル」とは何か説明できますか?これらの指示はどこで入手できますか?
オリ

1
私はコメントでこの回答を入れているだろうが、評判を欠くによるものではないことができます:(それが表示されますenvironment-modules12.04で利用可能ではありませんが、上向きの12.10から:< packages.ubuntu.com/search?keywords=environment-modules >
tssch 14年

回答:


25

ちょうどまとめる前のコメントと回答をしてのビットを追加最初の手のインストールエクスペリエンスを:

環境モジュールパッケージでmodule提供されるコマンドを探しています。これは、シェル環境(パスだけでなくエイリアスなど)を変更するためのツールであり、ハイパフォーマンスコンピューティングクラスターのような多くのマルチユーザークラスターに共通です。

グローバル気候モデルを実行したいので、取得した指示はおそらくHPCクラスターからのものでした。読むHPCの環境モジュールの詳細こちら。

ここで、実際にはUbuntuに関連するものについて説明します。Ubuntuで環境モジュールを設定するのは、それほど苦痛ではありません。Ubuntu 14.10とBashシェルについては、10分以内で完了しました。

他の投稿で述べたように、リポジトリから環境モジュールをインストールできます(パッケージenvironment-modules)。

次に、実行しadd.modulesます。この場合、シェル初期化ファイルに数行を追加します~/.bashrc

case "$0" in
          -sh|sh|*/sh)  modules_shell=sh ;;
       -ksh|ksh|*/ksh)  modules_shell=ksh ;;
       -zsh|zsh|*/zsh)  modules_shell=zsh ;;
    -bash|bash|*/bash)  modules_shell=bash ;;
esac
module() { eval `/usr/Modules/$MODULE_VERSION/bin/modulecmd $modules_shell $*`; }
#module() { eval `/usr/bin/modulecmd $modules_shell $*`; }

最後の行のコメントを外し、最後から2番目をコメント化または削除する必要があります。この行は、module探していたコマンドを定義します。それは効果的に実行され、modulecmd bashそれにあなたが与える引数が追加されます。

この関数は、引数で指定したものをすべて評価するため、実際にはあまり安全ではないと感じています。一部のユーザーは、おそらくこれを改善する方法についてコメントできます。

いわゆるを含むディレクトリを作成modulefiles$MODULEPATH、たとえばに追加するだけmodule use /path/to/your/modulefilesです。インターウェブ上にあるモジュールファイルの例があります。

これは、マルチユーザークラスターだけでなく、非常に便利なツールだと思います。異なるPythonディストリビューション間の切り替えに使用します。


1
私はこの質問への受け入れ答えであるべきだと思う
credondo

モジュールファイルのリンクの例が
機能しない-muenalan


1
すべてのユーザーに実行を要求/usr/share/modules/bin/add.modulesするのは不便なようです。ファイル/etc/bash.bashrcの先頭に「。/etc/profile.d/modules.sh」を追加しました。これは、ログインシェルとしてbashを使用しているユーザー向けのソリューションかもしれません。注、これはGUIログインにのみ必要でした。SSHログインは、変更前にすでに機能していました。あなたはどう思いますか、これは良い解決策ですか、それとも何か他のものをお勧めしますか?
エリックシェールンド

environment-modulesパッケージは、歴史的に「modules」関数をシェルに取り込む方法を変更していることがわかります。古いRed Hatシステムでは/etc/profile.d/modules.sh、モジュール機能を提供するためにソースを取得する必要があります(使用rpm -ql environment-modules可能なファイルを理解するために使用していました)。Ubuntuでは、そうなりますdpkg-query -S /usr/share/modules-パッケージが提供するものを理解するのに役立ちます。
qneill

6

「スキム」(セスを見ている)の場合:これはカーネルモジュールに関する質問ではありません。ENIRONMENT-MODULESと呼ばれるツールを使用してシェル環境変数を操作することに関する質問です。カーネルモジュールに精通している場合は、「モジュール」という名前の標準的なカーネルツール(スクリプトなど)がないことに気付くでしょう。すべてのモジュール操作ツールは、モジュールをmod(lsmod、insmod、modprobeなど)と略しています。また、gccというモジュールはありません。

Environment-modules(http://modules.sourceforge.net/)は、シェルで実行環境を切り替えるためのさらに別の環境ツールです。同じマシンでPython 2.4とPython 2.7を必要とする人々を支援します。または、Intel v。GNUコンパイラとライブラリを管理するのに役立ちます。

残念ながら、environment-modulesはUbuntu 12.04 LTSのパッケージではありません。

オプションには、ソースからのインストール(上記のリンクを参照)、14.04 LTSへのアップグレード、またはdebファイルの表示が含まれます。3つのうち、ソースからインストールします。debファイルは、12.04LTSでは利用できない同じ苦境にあるlibtcl8.6に依存しています。


4

おそらく、マシンにインストールされていないソフトウェアパッケージを使用しようとしています。もちろん、私は本当に確信できませんが、私の推測では、あなたはenvironment-modulesを使用しようとしているのでしょう。それが正しい場合は、標準のUbuntuリポジトリから環境モジュールをインストールできます。

しかし、環境モジュールはかなり古いプログラムであることに注意してください。ホームページには、2011年時点でのヘルパーツールの最終更新が記載されており、著作権表示は1999年よりも先に上がらないため、このソフトウェアパッケージが現在のUbuntuバージョンで問題なく動作するという保証はありません。かもしれませんが、確かではありません。


2
設定するのは大変なことですが、非常にうまく機能し、マルチユーザークラスターの事実上の標準です。
エメット14年

0

これは、の場合ではありませんmodule loadではない働いてmodule loadUbuntuのでは標準のコマンドではありません。

既存のモジュールをロードしようとしている場合sudo modprobe <modulename>は、探しているコマンドです。また、rmmodまたはmodprobe -rを使用してモジュールをアンロードできます。


Oli私はこれらの指示を地球規模の気候モデル「ECHAM6」ユーザーガイドから得ています。上記の行「モジュールロード」は、ターミナルからコンパイラをロードするためのマニュアルに記載されています...
uzair mannan

4
彼は、カーネルモジュールをロードしないさまざまなコンパイラ、MPI実装などの環境変数を管理する環境モジュールプログラム(通常はクラスターにインストールされる)を使用しようとしています。
エメット14年

それは実際に、私たちは私たちの会社での日常それを使用するが存在しません:P
ブルーノ・ペレイラ

modulevirtualenvがpythonに似ているように、ツールとライブラリのバージョンを変更するために使用されるツールですが、代わりにパスと変​​数を変更して他の設定を反映します。例:module load gcc-4.8はgcc-4.8、moduleをロードしますload gcc-4.7は4.7などをロードします
ブルーノペレイラ14年

0

これをスクリプトの最初の行に追加するだけです。次に、モジュールコマンドがによって読み取られtschます。

#!/bin/tcsh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.