我正在尝试使用以下命令来编译“全球气候模型”。
module unload pgi gcc
module load gcc/4.6.3 pgi/11.8
当我执行它们时,终端会回复command not found。
我究竟做错了什么?什么是正确的方法?
environment-modules在12.04中不可用,但从12.10起不可用:< packages.ubuntu.com/search?keywords=environment-modules >
我正在尝试使用以下命令来编译“全球气候模型”。
module unload pgi gcc
module load gcc/4.6.3 pgi/11.8
当我执行它们时,终端会回复command not found。
我究竟做错了什么?什么是正确的方法?
environment-modules在12.04中不可用,但从12.10起不可用:< packages.ubuntu.com/search?keywords=environment-modules >
Answers:
只是为了总结前面的评论和答案,并添加一些第一手的安装经验:
您正在寻找环境模块包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发行版之间进行切换。
/usr/share/modules/bin/add.modules似乎很不方便。我在文件/etc/bash.bashrc的开头添加了“。/etc/profile.d/modules.sh”,这对于使用bash作为其登录shell的用户来说可能是一个解决方案。注意,仅GUI登录才需要。更改之前SSH登录已经可以使用。您认为这是一个好的解决方案,还是您建议其他建议?
/etc/profile.d/modules.sh必须提供源代码才能提供模块功能(我曾经rpm -ql environment-modules了解可用的文件)。在Ubuntu上,这将是dpkg-query -S /usr/share/modules-只会帮助您了解软件包提供的内容。
对于那些“略过”(看着您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上不可用。
这不是的情况下module load不工作,module load是不是在Ubuntu的标准命令。
如果您要加载现有模块,sudo modprobe <modulename>则是您要查找的命令。您可以使用rmmod或modprobe -r卸载模块。
module是一种工具,用于将工具和库的版本从一个更改为另一个,就像virtualenv更改为python一样,但是相反,它更改路径和变量以反映其他设置,例如:module load gcc-4.8 will load gcc-4.8,module加载gcc-4.7将加载4.7,等等
只需将其添加到脚本的第一行即可。然后,将通过读取模块命令tsch。
#!/bin/tcsh