使用EnvironmentModule管理linux环境

在linux下环境设置是一个很重要的配置环节,特别是在多用户的情况下

先上官方教程

Environment Module

简化shell初始化的工具。在设置环境的时候,
我们一般使用脚本批量设置或者主动在shell配置环境内设置环境

Environment Module 使用modulefile文件进行环境的管理,相当于把环境设置模块化,
这样我们在进行不同用户,不同节点的环境设置时可以分别引入不同的模块管理,
简化工作。

安装

官网下载源代码进行编译安装

下载得到源代码modules-xxx

解压进行安装

1
2
3
4
5
6
7
sudo apt install -y autoconf tclsh tcl-dev tk-dev mesa-common-dev libjpeg-dev libtogl-dev
tar -xvf modules-xxx

cd modules-xxx
./configure
make
make install

CentOS使用包管理器安装

1
sudo yum install -y environment-modules

完全编译安装

当没有root权限且没有被赋予权限使用包管理器的情况下,若缺少Environment Modules的依赖(往往是tcl依赖),这个时候可以通过同时编译安装tcl解决Environment Modules编译问题:

tcl依赖下载地址

  1. 首先解压tcl依赖源码包,进入解压后目录中的unix目录,使用configure脚本进行编译配置。
  2. 此时不对tcl进行进一步的编译,而是切换到Environment Modules的源码目录,使用./configure --with-tcl=/path/to/tcl/build命令进行编译配置,/path/to/tcl/build为刚刚进行tcl源码编译配置的目录,此参数用于指定tclConfig.sh文件的位置以便modules找到tcl依赖。
  3. 接下来进行正常的编译安装即可。

设置环境变量

Environt-Module为多个Shell解释器提供了环境变量设置脚本,需要使用这些脚本初始化软件的环境变量

tips:若是包管理器安装的,环境配置文件在/usr/share/Modules下

source /InstallFolder/modules-xxx/init/bash

可以添加到bashrc

1
2
echo "source /path/to/modules-xxx/init/bash" >> ~/.bashrc
source ~/.bashrc

为bash设置module,也可以为其他shell设置,
init里面提供了针对多种shell设置其应用环境变量的脚本

之后可执行module命令进行环境变量的维护。

设置模块

$ module avail

列出当前可用模块

$ module load use.own

加载自带模块use.own,加载后会在用户家目录建立privatemodules目录,
之后可在此目录下添加自定义的模块配置文件

$ module list

列出当前已经加载的模块

$ module load

加载指定模块

$ module unload

卸载指定模块

$ module help

列出帮助

$ module use < folder >

增加模块查找的目录,使用module avail将列出增加的目录下可用的模块,不使用时使用命令module unuse < folder >即可。

自定义模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#%Module -*- tcl -*-

# 显示 module help 主要内容
## 设置之后可以使用 module help xxx 列出此模块的帮助内容
proc ModulesHelp { } {
puts stderr "main contents"
}

# 显示 module whatis 主要内容
## 设置之后可以使用 module whatis xxx 列出此模块的信息
module-whatis "main contents"

# module 此模块加载前需要加载的模块类,加载失败会报错
prereq xxx

# module 声明与此模块冲突的模块,也可以是存放冲突模块的文件名
conflict xxx

# 加载此模块的同时加载其他模块
module load xxx

# 设置环境变量(设置为xxx)
setenv something xxx

# 添加环境变量(添加xxx)

append-path PATH xxx

MODULEPATH

此环境变量用于设置module查找模块的路径,若通过包管理器默认安装,可于/usr/share/modules/init/bash文件中添加:

1
export MODULEPATH=xxx:xxx

该语句设置后source该文件可重新设置module查找模块路径

1
2
3
4
5
6
7
## 使用envrionment module运行环境变量设置脚本配置环境

module实质为tcl脚本文件,无法运行shell命令

因此无法通过`source xxx.sh`脚本的方式添加环境变量

可以先获取xxx.sh内定义的环境变量,再加到我们的模块文件中

资料引用

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

请我喝杯咖啡吧~

支付宝
微信