“模块加载”命令不起作用


12

我正在尝试使用以下命令来编译“全球气候模型”。

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

当我执行它们时,终端会回复command not found

我究竟做错了什么?什么是正确的方法?


您能解释一下“全球气候模式”是什么吗?您从哪里得到这些指示?
奥利(Oli)

1
我会在评论中加上此答复,但由于缺乏声誉而不能:(似乎environment-modules在12.04中不可用,但从12.10起不可用:< packages.ubuntu.com/search?keywords=environment-modules >
tssch 2014年

Answers:


25

只是为了总结前面的评论和答案,并添加一些第一手的安装经验:

您正在寻找环境模块module提供的命令。它是用于修改外壳环境(PATH以及别名等)的工具,并且对于许多多用户群集(如高性能计算群集)是通用的。

您得到的说明可能来自某些HPC集群,因为您想运行全球气候模型。此处阅读有关HPC上的环境模块的更多信息

现在了解与Ubuntu相关的东西:在Ubuntu下设置环境模块实际上并没有那么麻烦。我只是在10分钟内完成了Ubuntu 14.10和Bash shell的安装。

如其他文章所述,您可以从回购协议(package environment-modules)安装环境模块。

然后你跑add.modules。在这种情况下,它将在您的shell初始化文件中添加几行~/.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 $*`; }

您需要取消注释最后一行并注释掉或删除倒数第二个。此行定义了module您要查找的命令。它有效地运行,modulecmd bash加上您提供的参数。

我觉得这个函数实际上不是很安全,因为它会评估您在其参数中提供的任何内容。一些用户也许可以评论如何改进它。

现在,您只需要创建一个包含所谓目录的目录modulefiles并将其添加到中即可$MODULEPATH,例如使用module use /path/to/your/modulefiles。有对modulefiles例子在interwebs在那里。

我发现这不仅是针对多用户集群的非常方便的工具。我使用它在不同的Python发行版之间进行切换。


1
我认为这应该是该问题的公认答案
credondo

示例模块文件链接已失效
muenalan


1
要求每个用户都运行/usr/share/modules/bin/add.modules似乎很不方便。我在文件/etc/bash.bashrc的开头添加了“。/etc/profile.d/modules.sh”,这对于使用bash作为其登录shell的用户来说可能是一个解决方案。注意,仅GUI登录才需要。更改之前SSH登录已经可以使用。您认为这是一个好的解决方案,还是您建议其他建议?
ErikSjölund'16

我可以看到,环境模块包在历史上已经改变了将“模块”功能放入您的外壳的方法。在较旧的Red Hat系统上,/etc/profile.d/modules.sh必须提供源代码才能提供模块功能(我曾经rpm -ql environment-modules了解可用的文件)。在Ubuntu上,这将是dpkg-query -S /usr/share/modules-只会帮助您了解软件包提供的内容。
qneill

6

对于那些“略过”(看着您Seth)的人:这不是关于内核模块的问题。这是一个有关使用名为ENIRONMENT-MODULES的工具操纵外壳环境变量的问题。如果您完全熟悉内核模块,您会意识到没有名为“模块”的标准内核工具(脚本或其他方式)。所有模块操作工具都将模块缩写为mod(lsmod,insmod,modprobe等)。而且没有名为gcc的模块。

环境模块(http://modules.sourceforge.net/)是另一个用于在Shell中切换执行环境的环境工具。它可以帮助需要在同一台计算机上使用Python 2.4和Python 2.7的人们。或者它可以帮助人们管理英特尔v。GNU编译器和库。

不幸的是,环境模块不是Ubuntu 12.04 LTS的软件包。

选项包括从源代码安装(按照上面的链接),升级到14.04 LTS或查看deb文件。在这三个中,我将从源代码安装。deb文件依赖于libtcl8.6,后者处于相同的困境,在12.04LTS上不可用。


4

您可能正在尝试使用计算机上未安装的软件包。当然,我不确定,但是我的猜测是您正在尝试使用环境模块。如果正确,则可以从标准Ubuntu存储库中安装环境模块。

但是请注意,环境模块是一个相当老的程序。主页记录了助手工具在2011年的最新更新,版权声明没有比1999年更高。因此,不能保证此软件包可以在当前的Ubuntu版本中完美运行。可能可以,但是您不能确定。


2
设置起来很麻烦,但是它运作得非常好,并且实际上是多用户群集上的标准。
Emmet

0

这不是的情况下module load工作module load是不是在Ubuntu的标准命令。

如果您要加载现有模块,sudo modprobe <modulename>则是您要查找的命令。您可以使用rmmodmodprobe -r卸载模块。


Oli我正在从全球气候模型“ ECHAM6”用户指南中获得这些说明。手册中提到了上述“模块加载”行,以从终端加载编译器...
uzair mannan 2013年

4
他试图使用环境模块程序(通常安装在群集上)来管理不同编译器,MPI实现等的环境变量,而不加载内核模块。
Emmet 2014年

它确实存在,我们每天在公司中使用它:P
Bruno Pereira 2014年

module是一种工具,用于将工具和库的版本从一个更改为另一个,就像virtualenv更改为python一样,但是相反,它更改路径和变量以反映其他设置,例如:module load gcc-4.8 will load gcc-4.8,module加载gcc-4.7将加载4.7,等等
Bruno Pereira 2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.