我正在尝试使用以下命令编译“全球气候模型”。
module unload pgi gcc
module load gcc/4.6.3 pgi/11.8
当我执行它们时,终端会回复command not found
。
我做错了什么?正确的做法是什么?
答案1
只为了总结之前的评论和答案,并添加一些第一手安装经验:
module
您正在寻找环境模块包。它是用于修改 shell 环境(PATH 以及别名等)的工具,并且是许多多用户集群(如高性能计算集群)的常用工具。
由于您想要运行全球气候模型,因此您收到的指令可能来自某个 HPC 集群。阅读有关 HPC 上的环境模块的更多信息这里。
现在实际上Ubuntu-相关:在 Ubuntu 下设置环境模块其实并不麻烦。我花了不到 10 分钟就为 Ubuntu 14.10 和 Bash shell 完成了设置。
正如其他帖子中提到的,您可以从 repos(包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
。有模块文件示例在互联网上。
我发现这是一个非常方便的工具,不仅适用于多用户集群。我用它来在不同的 Python 发行版之间切换。
答案2
对于那些“略读”的人(看着你,Seth):这不是关于内核模块的问题。这是一个关于使用名为 ENIRONMENT-MODULES 的工具操作 shell 环境变量的问题。如果您对内核模块很熟悉,您会意识到没有名为“module”的标准内核工具(脚本或其他)。所有模块操作工具都将 module 缩写为 mod(lsmod、insmod、modprobe 等)。并且没有名为 gcc 的模块。
环境模块(http://modules.sourceforge.net/) 是另一个用于在 shell 中切换执行环境的环境工具。它可以帮助在同一台机器上需要 Python 2.4 和 Python 2.7 的人。或者它可以帮助人们管理 Intel 和 GNU 编译器和库。
不幸的是,environment-modules 不是适用于 Ubuntu 12.04 LTS 的软件包。
选项包括从源代码安装(点击上面的链接)、升级到 14.04 LTS 或查看 deb 文件。在这三种情况下,我会从源代码安装。deb 文件依赖于 libtcl8.6,而 libtcl8.6 也处于同样的困境,在 12.04LTS 上不可用。
答案3
你可能正在尝试使用计算机上未安装的软件包。当然,我不能确定,但我猜你正在尝试使用环境模块。如果正确,您可以从标准 Ubuntu 存储库安装环境模块。
但请注意,environment-modules 是一个相当老的程序。主页指出辅助工具的最后更新是 2011 年,版权声明没有比 1999 年更早的版本。因此,不能保证这个软件包可以完美地与当前的 Ubuntu 版本配合使用。也许可以,但您不能确定。
答案4
只需将其添加到脚本的第一行即可。然后模块命令将被读取tsch
。
#!/bin/tcsh