Linux 下 Module 工具的介绍与使用

环境管理 0 5231 张长瑞 收藏

Linux 下 Module 工具的介绍与使用

一、前言

在 Linux 中,当同一款编辑器、运行库、软件存在多个版本且多个版本都需要在不同的场景或人员使用时,配置这些内容的环境变量是一个非常繁琐的过程,而 Module 工具则提供了一个简单快速的方法,Module 全称为 module-environment,是一个专门管理环境变量的工具。

二、官网

Module 官网:https://modules.readthedocs.io/en/latest/module.html

三、安装

Module 工具是基于 TCL(8.4 以上版本)工具的,目前 module 工具为 4.4.1,基于 tcl8.5 或更高版本,而 module3.X 版本则基于 tcl8.4 版本,Redhat6 系列 yum 安装的 tcl 为 8.5 版本。

Module 工具可以使用二进制编译安装,也可以使用 yum/apt 快速安装,

Redhat/Centos 使用:yum install environment-modules;

ubuntu 等使用:apt-get install environment-modules 安装。

四、初始化

安装 module 工具后,你会发现它并不是一个可执行的二进制文件,你需要对 module 工具进行一次初始化。在 /usr/share/modules/init (注意此处,可能是 module 也可能是 modules) 内部你可以找到针对各个脚本的二进制初始化文件,找到你当前的脚本,source 这个二进制文件,例如你是 bash 脚本,source /usr/share/modules/init/bash 之后,你就可以使用 module 工具了。

五、常用命令(通过命令你可以看出我为什么 module 和 modules 傻傻不分了)

module avail 显示可以使用的模块

module load/add 加载模块

module unload/rm 卸载模块

module list 显示已经加载的模块

在整个 module 都配置好后,这四个命令基本上可以满足所有的使用要求,而 module 的更多详细命令和使用方法,我们会在以后的文章中说明。

六、Module 工具的使用

Module 工具依托于 MODULEPATH 这个环境变量来查找配置信息目录,也就是说你在设置好目录结构,配置好环境变量后,只需要设置这一个 module 的环境变量,那么 module 工具就会自动去查找这个路径下的所有配置信息。

七、Modulefile 的写法

在第六节我们说了 MODULEPATH 的作用,那么这节我们讲述一下 modulefile 也就是配置文件的目录结构和写法。

通常我们会将同一类的软件、库等内容放在同一个目录,假设目录名为 /soft,在 soft 目录下包含 gcc、python、java 等常用工具,而 gcc 又包含 4.8.4、4.9.3、4.9.7 三个版本,python 包含 2.7、3.6 两个版本、java 包含 1.6、1.7、1.8 三个版本,那么它的目录结构如下:

那么 soft 目录即为 MODULEPATH 变量设置的目录,最后面的版本文件为 modulefile,我们只需要安装这种目录格式创建目录和文件即可。

在编写 modulefile 文件时的几个注意事项,例如我要编写 4.8.4 这个文件,注意,这个文件时 gcc4.8.4 的环境变量配置文件,不是 gcc 的存放路径。它必须是一个文件、而不是一个文件夹。

  1. 在文件开头一定要写上

#%Module1.0

这个是识别这个文件为 modulefile 的,没有他这个文件不会被识别

2、prepend-path 要修改的环境变量 路径

这个命令会把工具路径添加到环境变量的前面

3、setenv 环境变量名 值

这个命令会把你需要的环境变量配置到系统中

请看以下示例:gcc/4.8.4 (这个工具我安装在 /software/gcc/4.8.4 / 下)

#%Module1.0

setenv GCC_HOME /software/gcc/4.8.4/

prepend-path PATH /software/gcc/4.8.4/bin

这就是一个 gcc4.8.4 的环境变量配置,我们将所有的环境变量配置好之后,使用 modue avail 命令即可查看到相应信息,如下所示:

使用 module load 载入相应的工具和版本

使用 module list 查看载入的工具和版本

使用 module show 工具 / 版本 来查看相应配置信息(非常用命令)

这时候我们可以 echo $PATH 来查看是否将 gcc 路径添加到了 PATH 路径中

使用 echo $GCC_HOME 查看是否已经设置好此环境变量

这时候代表你的目录设置、modulefile 都没有问题,只要软件 / 工具等存放的路径没有问题,那么即可正常使用。

八、多路径

MODULEPATH 可以设置为多个路径,例如我设置 /soft、/soft1、/soft2 都是工具、软件等脚本的存放路径,那么我就可以设置 MODULEPATH 为多个路径,路径之间用冒号分割。

这时候我们 module avail 来查看信息,即可看到如下

注意:千万不要出现软件名和版本一样的 modulefile

九、默认版本

在 module avail 中,我们可以设置默认版本,例如我想将 gcc 4.9.3 设置为默认版本,当我 module load gcc 的时候,就直接载入 4.9.3 版本,我们可以使用.version 文件来控制这个默认信息。

在 modulefile 同级目录下创建.version 文件,看清楚,前面有个点,写法如下

#%Module1.0

set ModulesVersion "4.9.3"

使用 module avail 查看信息

在 4.9.3 版本后面多了一个(default)

删除我们刚才载入的 4.8.4

载入默认的 gcc 版本

注意:由于 module 只能载入同类工具、库的某一个版本,删除的时候就直接说明删除的工具、库就可以了,后面不需要带版本号。

十、全局使用

由于 module 的特性问题,如果在公司内使用,你可能需要所有的使用人员设置一个统一的初始脚本,无论是 bash 还是 csh,通常我们建议建立一个用户可读的统一脚本文件,然后 link 到每个使用人员的家目录下的初始脚本。

例如我们建立为 csh 建立一个统一的 csh.cshrc 文件。Link 给 zhangsan

ln -s csh.cshrc /home/zhangsan/.cshrc

我们可以在统一的初始脚本中加入 source ./cshrc.own

那么用户只需要在家目录创建一个 cshrc.own 的文件所谓个性化脚本文件即可。


相关推荐:

网友留言:

您需要 登录账户 后才能发表评论

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
验证码