linux中module工具的使用介绍

1.module简介
module是一个专门管理环境变量的工具,全程是module environment,一般应用于软件或运行库等设备有多个版本,且需要分别配置这些环境变量。

2.module工具的官网
module官网https://modules.readthedocs.io/en/latest/index.html

3.module的安装
Moudle工具是基于TCL(8.4以上版本)工具的。Moudle工具可以使用二进制编译安装,也可以使用yum/apt快速安装,
module工具,依赖tcl工具,因此首先要安装tcl工具。
wget https://cfhcable.dl.sourceforge.net/project/tcl/Tcl/8.5.9/tcl8.5.9-src.tar.gz
tar -zxvf tcl8.5.9-src.tar.gz
cd tcl8.5.9/unix
./configure --prefix=/usr/local/tools/tcl
make
make install
安装tcl之后,就可以安装module工具了。
wget https://newcontinuum.dl.sourceforge.net/project/modules/Modules/modules-4.2.4/modules-4.2.4.tar.gz
tar -zxvf modules-4.2.4.tar.gz
cd modules-4.2.4
./configure --prefix=/usr/local/tools/modules --with-tcl-lib=/usr/local/tools/tcl/lib --with-tcl-inc=/usr/local/tools/tcl/include
make
make install
安装完成之后,在/usr/local/tools/modules目录下,就有module工具了。不过在bin目录下,是没有module这个命令的。

4.module的初始化
安装module工具后,你会发现它并不是一个可执行的二进制文件,你需要对module工具进行一次初始化。
在/usr/share/modules/init(注意此处,可能是module也可能是modules)内部你可以找到针对各个脚本的二进制初始化文件,有profile.sh和profile.csh文件,用来配置module的脚本文件。如果当前用的shell是bash,就使用profile.sh,如果当前用的shell是cshell,就使用profile.csh。可以直接source这个文件,也可以打开/etc/profile文件,加入 source /usr/llocal/tools/modules/init/profile.©sh 这一行代码。重启终端,使用module -h,就可以打印module命令的help了。也可以建立符号链接,这样当系统重启后,会自动加载。

ln -s /usr/local/tools/modules/init/profile.sh  /etc/profile.d/module.sh
ln -s /usr/local/tools/modules/init/profile.csh /etc/profile.d/module.csh

不过如果使用which module,会发现找不到module命令。

5.Moudle工具的使用
Module工具依托于MODULEPATH这个环境变量来查找配置信息目录,也就是说你在设置好目录结构,配置好环境变量后,只需要设置这一个module的环境变量,那么module工具就会自动去查找这个路径下的所有配置信息。export MODULEPATH=/opt/modulefiles
例如这个工具文件modulefiles放在了/opt下面,编写的modulefiles文件放在目录/opt/modulefils/gcc/4.8.4和/opt/modulefiles/gcc/4.9.7下。

6.modulefiles文件编写
以下是 modulefiles目录下的 modules文件,我们后面实现的工具配置文件,都是基于这个文件进行修改。千万不要出现软件名和版本一样的modulefile。

#%Module1.0#####################################################################
##                                                  //#%Module1.0 这个是识别这个文件为modulefile的,没有他这个文件不会被识别。
## modules modulefile
##                                                                            

proc ModulesHelp { } {                              //proc:帮助文件,可以要,也可以不要
global version prefix
puts stderr "\tmodules - loads the modules software & application environment"
puts stderr "\n\tThis adds $prefix/* to several of the"
puts stderr "\tenvironment variables."
puts stderr "\n\tVersion $version\n"
}                                                                                 
module-whatis "loads the modules environment"
# for Tcl script use only
set version 4.2.4                                   //设置变量
set prefix /usr/local/tools/modules                 //设置变量
setenv MODULESHOME $prefix                          //设置环境变量:这个命令会把你需要的环境变量配置到系统中
prepend-path PATH /usr/local/tools/modules/bin      //必须:这个命令会把工具路径添加到环境变量的前面
prepend-path MANPATH /uer/local/tools/modules/share/man

要注意的是,$env(PROJ_SRC_ROOT),是获取环境变量 PROJ_SRC_ROOT 的值。

6.module基本命令

module avail/ava                 //显示可以使用的模块
module list                      //显示已经加载的模块
module load/add gcc/4.8.4        //加载模块AAA
module unload/rm gcc/4.8.4       //卸载模块
module purge                     //取消所有加载的工具
module show gcc/8.4.4            //来查看相应配置信息

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

/home # module show gcc/4.8.4
/soft/gcc/4.8.4:

setenv        GCC_HOME        /soft/gcc/4.8.4
prepend-path  PATH /soft/gcc/4.8.4/bin

7.默认版本
在module avail中,我们可以设置默认版本,例如我想将gcc 4.9.3设置为默认版本,当我module load gcc的时候,就直接载入4.9.3版本,我们可以用.version文件来控制这个默认信息。
在/opt/modulefile/gcc目录下创建.version文件,看清楚,前面有个点,写法如下:

#%Module1.0
set ModulesVersion "4.9.3"

用module ava查看时在4.9.3版本后面多了一个(default)。

8.全局控制
由于module的特性问题,如果在公司内使用,你可能需要所有的使用人员设置一个统一的初始脚本,无论是bash还是csh,通常我们建议建立一个用户可读的统一脚本文件,然后link到每个使用人员的家目录下的初始脚本。
例如我们建立为csh建立一个统一的csh.cshrc文件。Link给zhangsan
ln -s csh.cshrc /home/zhangsan/.cshrc
我们可以在统一的初始脚本中加入source ./cshrc.own
那么用户只需要在家目录创建一个cshrc.own的文件所谓个性化脚本文件即可。

Guess you like

Origin blog.csdn.net/Michael177/article/details/121152904