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

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

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

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

相关内容