Linux 下 Module 工具的介绍与使用

参考:

https://www.fasteda.cn/post/22.html

https://modules.readthedocs.io/en/latest/module.html

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 的存放路径。它必须是一个文件、而不是一个文件夹。

在文件开头一定要写上

#%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 的文件所谓个性化脚本文件即可。

相关推荐
此生只爱蛋15 分钟前
【Linux】正/反向代理
linux·运维·服务器
qq_54702617921 分钟前
Linux 基础
linux·运维·arm开发
zfj32127 分钟前
sshd除了远程shell外还有哪些功能
linux·ssh·sftp·shell
废春啊34 分钟前
前端工程化
运维·服务器·前端
我只会发热37 分钟前
Ubuntu 20.04.6 根目录扩容(图文详解)
linux·运维·ubuntu
爱潜水的小L1 小时前
自学嵌入式day34,ipc进程间通信
linux·运维·服务器
保持低旋律节奏1 小时前
linux——进程状态
android·linux·php
zhuzewennamoamtf1 小时前
Linux I2C设备驱动
linux·运维·服务器
zhixingheyi_tian1 小时前
Linux 之 memory 碎片
linux
邂逅星河浪漫1 小时前
【域名解析+反向代理】配置与实现(步骤)-SwitchHosts-Nginx
linux·nginx·反向代理·域名解析·switchhosts