https://www.cnblogs.com/yeungchie/

1. 工具下载

  • 手动下载

modules-5.1.0 点击下载

  • wget 下载
wget https://jaist.dl.sourceforge.net/project/modules/Modules/modules-5.1.0/modules-5.1.0.tar.gz

下载不了的话可以使用我上传到了博客园的 链接

wget https://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.0.1 (2021-10-16)

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

echo puts \$tcl_version | tclsh
# 8.6

2. 工具安装

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

  • src

    这里放安装包/源文件
  • installed

    这里是工具安装路径
  • modulefiles

    这里放 modulefiles -- 各个软件的版本文件

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

2.1. 下载解压

cd /opt/tools/modules/src
wget https://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. modulefiles

目录结构

安装完成后 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

如果加载了同个软件的多个版本,则一次 rm 只会移除一个版本。

当然同一个软件加载多个版本是不规范的操作。

module purge

清空所有已经加载的 module

module purge

注意这个命令可能在老版本中有人会习惯使用 module clear,这个实际上是无效的。

它只会清空 module list 的内容,并不会移除环境变量中已经加载的内容。

因此后续再进行 module rm 操作都是无效的。

我自己的理解是,module clear 的效果只是将已经配置好的环境 "摆脱" Module 工具的控制。

module -h

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

4. 参考资料

[ Module ] 环境变量管理工具 Module 安装和使用的更多相关文章

  1. direnv 一个强大的环境变量管理工具

      direnv 是一个基于golang 编写的强大的环境变量管理工具,可以帮助我们简化环境变量管理,而且 支持的平台比较多. 基本使用 下载二进制软件包 https://github.com/dir ...

  2. 集成direnv 与docker-compose 进行环境变量管理

    direnv 是一个不错的换将变量管理工具,同时日常的开发测试中我们使用docker-compose 会比较多,一般我们的玩法是 可以再docker-compose 中指定环境变量,可以通过envir ...

  3. 微软源代码管理工具TFS2013安装与使用详细图文教程(Vs2013)

    这篇文章联合软件小编主要介绍了微软源代码管理工具TFS2013安装与使用图文教程,本文详细的给出了TFS2013的安装配置过程.使用教程,需要的朋友可以参考下 最近公司新开发一个项目要用微软的TFS2 ...

  4. [转] 微软源代码管理工具TFS2013安装与使用详细图文教程(Vs2013)

    这篇文章联合软件小编主要介绍了微软源代码管理工具TFS2013安装与使用图文教程,本文详细的给出了TFS2013的安装配置过程.使用教程,需要的朋友可以参考下 最近公司新开发一个项目要用微软的TFS2 ...

  5. 微软源代码管理工具TFS2013安装与使用图文教程

    微软源代码管理工具TFS2013安装与使用图文教程 这篇文章主要介绍了微软源代码管理工具TFS2013安装与使用图文教程,本文详细的给出了TFS2013的安装配置过程.使用教程,需要的朋友可以参考下 ...

  6. Linux下批量管理工具pssh安装和使用

    Linux下批量管理工具pssh安装和使用 pssh工具包 安装:yum -y install pssh pssh:在多个主机上并行地运行命令 pscp:把文件并行地复制到多个主机上 prsync:通 ...

  7. 使用YApi搭建API接口管理工具(docker安装)

    使用YApi搭建API接口管理工具(docker安装) 工具描述 YApi 是高效.易用.功能强大的 api 管理平台,旨在为开发.产品.测试人员提供更优雅的接口管理服务.可以帮助开发者轻松创建.发布 ...

  8. Linux 进程管理工具 supervisord 安装及使用

    Supervisor是用Python实现的一款非常实用的进程管理工具 1.安装过程非常简单 安装python 安装meld3-0.6.8.tar.gz 安装supervisor-3.0a12.tar. ...

  9. js的包管理工具bower安装

    bower需要:node 和 git node安装包下载:http://blog.csdn.net/myan/article/details/2028545 Git安装: 选择第二项:Use Git ...

随机推荐

  1. python 基础数据类型汇总

    数据类型小结(各数据类型常用操作) 一.数字/整型int int()强行转化数字 二.bool类型False&True bool()强行转化布尔类型. 0,None,及各个空的字符类型为Fal ...

  2. 基于CrawlSpider全栈数据爬取

    CrawlSpider就是爬虫类Spider的一个子类 使用流程 创建一个基于CrawlSpider的一个爬虫文件 :scrapy genspider -t crawl spider_name www ...

  3. 学习Redis(三)

    一.安装部署 1.常规安装 1.安装 # wget http://download.redis.io/releases/redis-3.0.7.tar.gz # tar xf redis-3.0.7. ...

  4. ACM中的位运算技巧

    听说位运算挺好玩的,那这节总结一下ACM中可能用到的位运算技巧. XOR运算极为重要!!(过[LC136](只出现一次的数字 - 力扣(LeetCode)):数组中每个数字都出现两次,只有一个出现一次 ...

  5. C++ | 栈的应用(逆波兰算法) | 计算器

    #include <iostream> using std::cin; using std::cout; using std::endl; template<typename T&g ...

  6. 用AltiumDesigner画完PCB生成gerber(光绘)文件详细说明

    什么是gerber文件             Gerber文件是所有电路设计软件都可以产生的文件,在电子组装行业又称为模版文件(stencil data),在PCB制造业又称为光绘文件.可以说Ger ...

  7. post提交的数据有哪几种编码格式?能否通过URL参数获取用户账户密码

    这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [post提交的 ...

  8. 解决Mui中popover 顶部弹出菜单弹出位置不准确以及无法收回的问题

    前言 最近公司的项目转向使用Hbuilder开发移动端项目,其中想要通过在顶部标题栏加入弹出菜单的方式,来定位长列表的位置,如图所示. 问题 Mui的功能貌似还不是很完善,在使用这个弹出菜单的时候,发 ...

  9. 基于canvas和web audio实现低配版MikuTap

    导言 最近发掘了一个特别happy的网页小游戏--MikuTap.打开之后沉迷了一下午,导致开发工作没做完差点就要删库跑路了,还好boss瞥了我一眼就没下文了.于是第二天我就继续沉迷,随着一阵抽搐,这 ...

  10. python-人物风云榜(实现排名)

    Description 又到了云之国一年一度的任务风云榜更新的大日子了.给出每个人风云力数值,需要你给出每个人的排名.注意,排名存在并列的情况. Input 一共有 22 行.第一行一个整数 n ,表 ...