如何使用Modules工具管理[Module]环境变量?

2026-05-25 18:241阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1966个文字,预计阅读时间需要8分钟。

如何使用Modules工具管理[Module]环境变量?

环境模块:提供用户环境的动态修改功能。1. 工具简介

Environment Modules: provides dynamic modification of a user's environment 一个可以动态修改用户环境的工具

www.cnblogs.com/yeungchie/

Environment Modules: provides dynamic modification of a user's environment

1. 工具下载
  • 手动下载

modules-5.1.0 点击下载

  • wget 下载

wget jaist.dl.sourceforge.net/project/modules/Modules/modules-5.1.0/modules-5.1.0.tar.gz

下载不了的话可以使用我上传到了自由互联的 链接

wget files.cnblogs.com/files/yeungchie/modules-5.1.0.tar.gz

也可以通过 yum -y install environment-modules 安装,但是一般这样安装的是很老的版本。
目前已知 3.x 版本中存在一些 Bug,例如同时加载的 modulefile 较多的时候,module purge 会出现错误。
建议使用新版本,目前最新版是 Modules Release 5.1.0

依赖 Tcl 版本 >= 8.5 ,查看 Tcl 版本:

echo puts \$tcl_version | tclsh # 8.6 2. 工具安装

下面演示将 Modules 工具的文件放到 /opt/tools/modules 这个路径,下面再建立三个子目录:

  • src
    这里放安装包 / 源文件
  • installed
    这里是工具安装路径
  • modulefiles
    这里放 modulefiles -- 各个软件的版本文件

路径可以根据需求自行改动

2.1. 下载解压

cd /opt/tools/modules/src wget files.cnblogs.com/files/yeungchie/modules-5.1.0.tar.gz tar -zxvf modules-5.1.0.tar.gz cd modules-5.1.0 2.2. 编译前配置

./configure --prefix=/opt/tools/modules/installed --modulefilesdir=/opt/tools/modules/modulefiles

这一步可能会报错,提示找不到 tclConfig.sh,需要用 --with-tcl 来指定 tclConfig.sh 所在的路径。

首先使用 whereis 找到 tclConfig.sh 的位置:

whereis tclConfig.sh # tclConfig:

如果没找到说明 tcl-devel 没安装, yum 安装即可:

yum -y install tcl-devel

再次查找就可以找到了:

whereis tclConfig.sh # tclConfig: /usr/lib64/tclConfig.sh

接着重新执行 configure ,加上 --with-tcl

./configure --with-tcl=/usr/lib64/ --prefix=/opt/tools/modules/installed --modulefilesdir=/opt/tools/modules/modulefiles

其实现在不加 --with-tcl 也没有问题了,/usr/lib64/ 是一个比较规范的路径,能够自动识别到的。

2.3. 编译安装

make && make install

工具比较小,很快就安装好了。

2.4. 加载环境

最后在 ~/.bashrc 中增加下面这句,就可以自动加载 modules 工具了。

source /opt/tools/modules/installed/init/profile.sh

也可以写到 /etc/profile 让所有用户都默认加载。
具体加载哪个文件,看自己用的是那种 shell 环境。
这些算是使用 Linux 的常识,就不多赘述了。

2.5. 验证安装完成

查看一下版本,安装完成。

module -V # Modules Release 5.1.0 (2022-04-30) 3. 配置 module 目录结构

安装完成后 modulefiles 目录下会生成一些模版,可以参考一下。

modulefiles 一般是三级 目录 / 文件 的结构:

  • 第一级是 modulefiles 根目录
    • 第二级是软件名
      • 第三级是版本号(这一级的文本文件就是 modulefile)

/opt/tools/modules/modulefiles/ ├── advm │ └── 20.10 ├── assura │ └── 416 ├── calibre │ ├── 2019 │ └── 2020 ├── ic │ ├── 617ISR22 │ └── 618.130 ├── sos │ └── 7.05 ├── spectre │ └── 181 ... 编写 modulefile

用 virtuoso 来举例吧,下面制作 617 和 618 的两个版本的 modulefile。

在 /opt/tools/modules/modulefiles/ 下需要创建一个目录 ic,再在 ic 目录下编写两个文件就叫 617618

  1. modulefile 必须以 #%Module 开头,这样才能被工具识别为 modulefile。
  2. 文件格式为 Tcl,需要遵循 Tcl 的语法来编写。
  3. 常用的函数
    1. setenv 设置环境变量
    2. prepend-path 追加到环境变量前
    3. append-path 追加到环境变量后
  • ic/617

#%Module set version 617ISR22 set HOME $::env(HOME) set CAD /opt/eda/cadence set CDS $CAD/IC617ISR22 setenv CDSHOME $CDS setenv CDS_HOME $CDS setenv LANG C setenv CDS_Netlisting_Mode Analog setenv CDS_ENABLE_VMS 1 setenv CDS_LOAD_ENV CWD setenv CDS_LOG_PATH $HOME/LOG setenv CDS_LIC_FILE $CAD/license/license.dat setenv CDS_LIC_ONLY 1 setenv CDS_AUTO_64BIT ALL setenv OA_UNSUPPORTED_PLAT linux_rhel50_gcc44x setenv W3264_NO_HOST_CHECK 1 prepend-path OA_HOME $CDS/oa prepend-path OA_PLUGIN_PATH $CDS/oa/data/plugins prepend-path PATH $CDS/tools/bin prepend-path PATH $CDS/tools/dfII/bin prepend-path PATH $CDS/tools/plot/bin prepend-path LD_LIBRARY_PATH $CDS/tools/plot/bin

  • ic/618.130

#%Module set version 618 set HOME $::env(HOME) set CAD /opt/eda/cadence set CDS $CAD/IC618.130 setenv CDSHOME $CDS setenv CDS_HOME $CDS setenv LANG C setenv CDS_Netlisting_Mode Analog setenv CDS_ENABLE_VMS 1 setenv CDS_LOAD_ENV CWD setenv CDS_LOG_PATH $HOME/LOG setenv CDS_LIC_FILE $CAD/license/license.dat setenv CDS_LIC_ONLY 1 setenv CDS_AUTO_64BIT ALL setenv OA_UNSUPPORTED_PLAT linux_rhel50_gcc44x setenv W3264_NO_HOST_CHECK 1 prepend-path OA_HOME $CDS/oa prepend-path OA_PLUGIN_PATH $CDS/oa/data/plugins prepend-path PATH $CDS/tools/bin prepend-path PATH $CDS/tools/dfII/bin prepend-path PATH $CDS/tools/plot/bin prepend-path LD_LIBRARY_PATH $CDS/tools/plot/bin 指定默认版本

在第二级目录下新增一个 .version 文件用来指定默认的版本。

#%Module set ModulesVersion 618

当然这里的就算不指定,默认的版本也会是 618

5. 常用命令

modulefiles 写好后就可以使用 module 命令来加载零活地加载环境和切换软件版本了。

module avail

查看当前所有可用的 module

module avail # 查看所有的 module avail ic # 只看 ic 的

------------------------ /opt/tools/modules/modulefiles ------------------------
ic/617 ic/618

Key:
modulepath default-version

module add

加载某个 module

module add ic virtuoso -V

@(#)$CDS: virtuoso version 6.1.8-64b 08/04/2020 19:31 (cpgsrv11) \$

module list

查看当前已经加载的 module

module list

Currently Loaded Modulefiles:

  1. ic/618

Key:
default-version

module switch

切换某个 module

module switch ic ic/617 virtuoso -V

@(#)$CDS: virtuoso version 6.1.7-64b 08/21/2018 19:47 (sjfhw316) \$

module rm

移除某个 module

module rm ic module list ; virtuoso -V

No Modulefiles Currently Loaded.
bash: virtuoso: command not found

如何使用Modules工具管理[Module]环境变量?

如果加载了同个软件的多个版本,则一次 rm 只会移除一个版本。
当然同一个软件加载多个版本是不规范的操作。

module purge

清空所有已经加载的 module

module purge

注意这个命令可能在老版本中有人会习惯使用 module clear,这个实际上是无效的。
它只会清空 module list 的内容,并不会移除环境变量中已经加载的内容。
因此后续再进行 module rm 操作都是无效的。
我自己的理解是,module clear 的效果只是将已经配置好的环境 "摆脱" Module 工具的控制。

module --help

更多的命令使用方法可以查看 module --help

4. 参考资料
  • Environment Modules
  • Environment Modules — Modules 5.1.0+22-g144a036c documentation
  • cea-hpc/modules: Environment Modules: provides dynamic modification of a user's environment
  • tcl - Where can I find tclConfig? - Ask Ubuntu

本文共计1966个文字,预计阅读时间需要8分钟。

如何使用Modules工具管理[Module]环境变量?

环境模块:提供用户环境的动态修改功能。1. 工具简介

Environment Modules: provides dynamic modification of a user's environment 一个可以动态修改用户环境的工具

www.cnblogs.com/yeungchie/

Environment Modules: provides dynamic modification of a user's environment

1. 工具下载
  • 手动下载

modules-5.1.0 点击下载

  • wget 下载

wget jaist.dl.sourceforge.net/project/modules/Modules/modules-5.1.0/modules-5.1.0.tar.gz

下载不了的话可以使用我上传到了自由互联的 链接

wget files.cnblogs.com/files/yeungchie/modules-5.1.0.tar.gz

也可以通过 yum -y install environment-modules 安装,但是一般这样安装的是很老的版本。
目前已知 3.x 版本中存在一些 Bug,例如同时加载的 modulefile 较多的时候,module purge 会出现错误。
建议使用新版本,目前最新版是 Modules Release 5.1.0

依赖 Tcl 版本 >= 8.5 ,查看 Tcl 版本:

echo puts \$tcl_version | tclsh # 8.6 2. 工具安装

下面演示将 Modules 工具的文件放到 /opt/tools/modules 这个路径,下面再建立三个子目录:

  • src
    这里放安装包 / 源文件
  • installed
    这里是工具安装路径
  • modulefiles
    这里放 modulefiles -- 各个软件的版本文件

路径可以根据需求自行改动

2.1. 下载解压

cd /opt/tools/modules/src wget files.cnblogs.com/files/yeungchie/modules-5.1.0.tar.gz tar -zxvf modules-5.1.0.tar.gz cd modules-5.1.0 2.2. 编译前配置

./configure --prefix=/opt/tools/modules/installed --modulefilesdir=/opt/tools/modules/modulefiles

这一步可能会报错,提示找不到 tclConfig.sh,需要用 --with-tcl 来指定 tclConfig.sh 所在的路径。

首先使用 whereis 找到 tclConfig.sh 的位置:

whereis tclConfig.sh # tclConfig:

如果没找到说明 tcl-devel 没安装, yum 安装即可:

yum -y install tcl-devel

再次查找就可以找到了:

whereis tclConfig.sh # tclConfig: /usr/lib64/tclConfig.sh

接着重新执行 configure ,加上 --with-tcl

./configure --with-tcl=/usr/lib64/ --prefix=/opt/tools/modules/installed --modulefilesdir=/opt/tools/modules/modulefiles

其实现在不加 --with-tcl 也没有问题了,/usr/lib64/ 是一个比较规范的路径,能够自动识别到的。

2.3. 编译安装

make && make install

工具比较小,很快就安装好了。

2.4. 加载环境

最后在 ~/.bashrc 中增加下面这句,就可以自动加载 modules 工具了。

source /opt/tools/modules/installed/init/profile.sh

也可以写到 /etc/profile 让所有用户都默认加载。
具体加载哪个文件,看自己用的是那种 shell 环境。
这些算是使用 Linux 的常识,就不多赘述了。

2.5. 验证安装完成

查看一下版本,安装完成。

module -V # Modules Release 5.1.0 (2022-04-30) 3. 配置 module 目录结构

安装完成后 modulefiles 目录下会生成一些模版,可以参考一下。

modulefiles 一般是三级 目录 / 文件 的结构:

  • 第一级是 modulefiles 根目录
    • 第二级是软件名
      • 第三级是版本号(这一级的文本文件就是 modulefile)

/opt/tools/modules/modulefiles/ ├── advm │ └── 20.10 ├── assura │ └── 416 ├── calibre │ ├── 2019 │ └── 2020 ├── ic │ ├── 617ISR22 │ └── 618.130 ├── sos │ └── 7.05 ├── spectre │ └── 181 ... 编写 modulefile

用 virtuoso 来举例吧,下面制作 617 和 618 的两个版本的 modulefile。

在 /opt/tools/modules/modulefiles/ 下需要创建一个目录 ic,再在 ic 目录下编写两个文件就叫 617618

  1. modulefile 必须以 #%Module 开头,这样才能被工具识别为 modulefile。
  2. 文件格式为 Tcl,需要遵循 Tcl 的语法来编写。
  3. 常用的函数
    1. setenv 设置环境变量
    2. prepend-path 追加到环境变量前
    3. append-path 追加到环境变量后
  • ic/617

#%Module set version 617ISR22 set HOME $::env(HOME) set CAD /opt/eda/cadence set CDS $CAD/IC617ISR22 setenv CDSHOME $CDS setenv CDS_HOME $CDS setenv LANG C setenv CDS_Netlisting_Mode Analog setenv CDS_ENABLE_VMS 1 setenv CDS_LOAD_ENV CWD setenv CDS_LOG_PATH $HOME/LOG setenv CDS_LIC_FILE $CAD/license/license.dat setenv CDS_LIC_ONLY 1 setenv CDS_AUTO_64BIT ALL setenv OA_UNSUPPORTED_PLAT linux_rhel50_gcc44x setenv W3264_NO_HOST_CHECK 1 prepend-path OA_HOME $CDS/oa prepend-path OA_PLUGIN_PATH $CDS/oa/data/plugins prepend-path PATH $CDS/tools/bin prepend-path PATH $CDS/tools/dfII/bin prepend-path PATH $CDS/tools/plot/bin prepend-path LD_LIBRARY_PATH $CDS/tools/plot/bin

  • ic/618.130

#%Module set version 618 set HOME $::env(HOME) set CAD /opt/eda/cadence set CDS $CAD/IC618.130 setenv CDSHOME $CDS setenv CDS_HOME $CDS setenv LANG C setenv CDS_Netlisting_Mode Analog setenv CDS_ENABLE_VMS 1 setenv CDS_LOAD_ENV CWD setenv CDS_LOG_PATH $HOME/LOG setenv CDS_LIC_FILE $CAD/license/license.dat setenv CDS_LIC_ONLY 1 setenv CDS_AUTO_64BIT ALL setenv OA_UNSUPPORTED_PLAT linux_rhel50_gcc44x setenv W3264_NO_HOST_CHECK 1 prepend-path OA_HOME $CDS/oa prepend-path OA_PLUGIN_PATH $CDS/oa/data/plugins prepend-path PATH $CDS/tools/bin prepend-path PATH $CDS/tools/dfII/bin prepend-path PATH $CDS/tools/plot/bin prepend-path LD_LIBRARY_PATH $CDS/tools/plot/bin 指定默认版本

在第二级目录下新增一个 .version 文件用来指定默认的版本。

#%Module set ModulesVersion 618

当然这里的就算不指定,默认的版本也会是 618

5. 常用命令

modulefiles 写好后就可以使用 module 命令来加载零活地加载环境和切换软件版本了。

module avail

查看当前所有可用的 module

module avail # 查看所有的 module avail ic # 只看 ic 的

------------------------ /opt/tools/modules/modulefiles ------------------------
ic/617 ic/618

Key:
modulepath default-version

module add

加载某个 module

module add ic virtuoso -V

@(#)$CDS: virtuoso version 6.1.8-64b 08/04/2020 19:31 (cpgsrv11) \$

module list

查看当前已经加载的 module

module list

Currently Loaded Modulefiles:

  1. ic/618

Key:
default-version

module switch

切换某个 module

module switch ic ic/617 virtuoso -V

@(#)$CDS: virtuoso version 6.1.7-64b 08/21/2018 19:47 (sjfhw316) \$

module rm

移除某个 module

module rm ic module list ; virtuoso -V

No Modulefiles Currently Loaded.
bash: virtuoso: command not found

如何使用Modules工具管理[Module]环境变量?

如果加载了同个软件的多个版本,则一次 rm 只会移除一个版本。
当然同一个软件加载多个版本是不规范的操作。

module purge

清空所有已经加载的 module

module purge

注意这个命令可能在老版本中有人会习惯使用 module clear,这个实际上是无效的。
它只会清空 module list 的内容,并不会移除环境变量中已经加载的内容。
因此后续再进行 module rm 操作都是无效的。
我自己的理解是,module clear 的效果只是将已经配置好的环境 "摆脱" Module 工具的控制。

module --help

更多的命令使用方法可以查看 module --help

4. 参考资料
  • Environment Modules
  • Environment Modules — Modules 5.1.0+22-g144a036c documentation
  • cea-hpc/modules: Environment Modules: provides dynamic modification of a user's environment
  • tcl - Where can I find tclConfig? - Ask Ubuntu