Environment Modules - 在工具生命周期的重要性
Posted 王万林 Ben
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Environment Modules - 在工具生命周期的重要性相关的知识,希望对你有一定的参考价值。
Environment Modules - 在工具生命周期的重要性
前言
在CAD环境中,工具有一个寿命周期,如工具上架,变更维护,下架等。
从管理员角度,如何能快速实现(浅)侵入式的定制开发,实现想要的操作呢?
本文将以加载/卸载来控制alias设置不同的值为例子,说明modulefile可灵活定制的重要性。
一、查看资料
官网资料 module-info option [info-args]
二、实现
效果
[thesre@centos8 ~]$ which mavail
mavail: aliased to module avail !*
[thesre@centos8 ~]$ module load gcc/10.2.0
[thesre@centos8 ~]$ which mavail #加载后查看mavail别名,设置好了期望的值。
mavail: aliased to /path/to/module_avail_command
[thesre@centos8 ~]$ module unload gcc/10.2.0
[thesre@centos8 ~]$ which mavail #卸载后查看mavail别名,恢复了看到没?
mavail: aliased to module avail !*
实现
[thesre@centos8 ~]$ cat /environment_modules/opensource/gcc/10.2.0
#%Module1.0
# Author : 王万林
# Date : 01/12/2020
# Description : Modulefile for Environment Modules.
# License : All rights reserved.
set curMod [ module-info name ]
set version_abs_path [ info script ]
set version [ file tail $version_abs_path ]
set tool_abs_path [ file dirname $version_abs_path ]
set tool [ file tail $tool_abs_path ]
set vendor_abs_path [ file dirname $tool_abs_path ]
set vendor [ file tail $vendor_abs_path ]
# Prevent from 'module load'-ing two versions from within the same tool directory at one time.
if { [ module-info mode load ] } {
if { [ info exists env(_LMFILES_) ] } {
if { [ regexp $tool_abs_path/ $env(_LMFILES_) ] && ! [ regexp $vendor/$curMod $env(_LMFILES_) ] } {
# Another version of this tool was loaded. Removing it...
module remove $tool
}
}
}
# Help messages.
proc ModuleHelp { } {
puts stderr "Any questions, please contact TheSRE."
}
# Information to display when perform 'module dipslay $curMod'.
module-whatis "Modulefile for $vendor/$tool/$version"
# PATH
prepend-path PATH /apps/$vendor/$tool/$version/bin
# set alias on module load, and
# unset alias & set another value to it on module unload
if { [ module-info mode load ] } {
# 加载时设置mavail别名为/path/to/module_avail_command
set-alias mavail { /path/to/module_avail_command }
} elseif { [ module-info mode remove ] } {
# 卸载时通过在终端直接执行来设置mavail别名为module avail !*
# 请注意,要输出到标准输出,以便被eval执行,作用于terminal
puts stdout {alias mavail module avail '\\!*';}
}
总结
以上就是今天要讲的内容。
以上是关于Environment Modules - 在工具生命周期的重要性的主要内容,如果未能解决你的问题,请参考以下文章
CAD - Environment Modules(module avail等)命令加速
查看修改添加环境变量的工具——Rapid Environment Editor
This usually happens because your environment has changed since running `npm install`.
node-sass报错(Node Sass could not find a binding for your current environment)