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 !*

实现
新版实现

#%Module1.0# Author      : 王万林
# Date        : 09/17/2022
# 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  ]# use is-loaded instead.
if { [ is-loaded $tool ] && ! [ is-loaded $curMod ] } {puts stderr "$tool was loaded, but not $curMod."module remove $tool
}# Help messages.
proc ModuleHelp { } {puts stderr "Any questions, please contact 王万林."
}# Information to display when perform 'module dipslay $curMod'.
module-whatis "Modulefile for $vendor/$tool/$version"# PATH
prepend-path PATH /tools/$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_commandset-alias mavail { /path/to/module_avail_command }
} elseif { [ module-info mode remove ] } {# 卸载时通过在终端直接执行来设置mavail别名为module avail !*# 请注意,要输出到标准输出,以便被eval执行,作用于terminalputs stdout {alias mavail 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_commandset-alias mavail { /path/to/module_avail_command }
} elseif { [ module-info mode remove ] } {# 卸载时通过在终端直接执行来设置mavail别名为module avail !*# 请注意,要输出到标准输出,以便被eval执行,作用于terminalputs stdout {alias mavail module avail '\!*';}
}

总结

以上就是今天要讲的内容。

Environment Modules - 在工具生命周期的重要性相关推荐

  1. 当 Erda 遇上 API 生命周期管理,好戏开始了!

    作者 | 陈忠润 来源 | Erda 公众号 ​ 写在前面 API 全生命周期管理(Full Life Cycle API Management)是指对 API 从规划.设计到实施.测试.发布.运行. ...

  2. Vue系列之vue生命周期详解

    文章の目录 1.什么是 vue 生命周期 2.生命周期钩子函数 2.1.beforeCreate(创建前) 2.2.created(创建后) 2.3.beforeMount(挂载前) 2.4.moun ...

  3. 用户生命周期常用指标_生命周期管理工具如何使用指标

    用户生命周期常用指标 格雷格·萨特克利夫(Greg Sutcliffe)是长期会员,现在是工头社区的社区负责人 . Foreman是用于物理和虚拟服务器的生命周期管理工具. 他一直在研究社区度量标准在 ...

  4. ilm 和dlm差异_Oracle 的信息生命周期管理工具(ILM assistant)

    ILM即Information Lifecycle Management(信息生命周期管理)的简写,类似的概念还有数据生命周期管理(DLM)等,是对数据随着时间的变化所赋有的价值的预测.简单地讲,象暂 ...

  5. Mirantis决定采用Kubernetes作为 Openstack的生命周期管理工具

    Mirantis是OpenStack的主要贡献者,今天他宣布将使用Kubernetes作为底层编排引擎重写其私有云平台.我们认为这是推进OpenStack和Kubernetes 社区伟大的一步. Op ...

  6. vue- Vue-Cli脚手架工具安装 -创建项目-页面开发流程-组件生命周期-03

    目录 本博客环境 Vue-Cli 项目环境搭建 与 python 基础环境对比 环境搭建 创建启动 vue 项目 命令创建项目(步骤小多) 启动 vue 项目(命令行方式) 启动 vue 项目(pyc ...

  7. python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)...

    昨日内容回顾 0. 组件注意事项!!!data属性必须是一个函数!1. 注册全局组件Vue.component('组件名',{template: ``})var app = new Vue({el: ...

  8. 微信小程序(文件组成 、目录结构、生命周期方法、AppId、组件(标签)、语法、事件、Api、开发工具)

    目录 AppID 文件组成 目录结构 app.json 其它全局配置链接 app.js app.wxss App 参考文档 生命周期方法 App.js中周期方法 onload(opt) onReady ...

  9. 软件测试常用的工具及生命周期篇

    测试常用的工具: 缺陷管理:jira.禅道.confluence.git.Note 接口测试:Postman.Jmeter(Apache).Selenium 性能测试:LoadRunner(负载测试. ...

最新文章

  1. 回首2013 展望2014
  2. Android --- 怎么设置 EditText 控件中光标默认位置,当 EditText 里有文字的时候,光标跑到了最前面
  3. Python:自动化上传OSS
  4. 【目标分类_长尾分布问题】BBN:Bilateral-Branch Network _ CVPR2020
  5. asp.net(mvc) 框架
  6. 数学建模1 赛前准备 赛题选择 查找文献
  7. 数据管理与商业智能_商业智能与数据科学
  8. datagridviewrow 行宽_C# Winform DataGridView实现行[Row]的上下移动…….. | 学步园
  9. 湿气重的人,脸上会有哪些信号?
  10. cad螺纹lisp_AutoCADLISP基本知识及函数
  11. 弹力球C语言课程设计,弹力球游戏c语言代码
  12. 魅族16Xs评测:集“够用”与性价比于一身
  13. Android闪闪发光字体
  14. unity教程之Unity引擎
  15. 如何利用ps去除图片水印和绘制图案
  16. EEPROM, NAND FLASH, NOR FLASH
  17. Python:根据身高、体重计算BMI指数
  18. SQL注入的原理、过程及如何防范
  19. oracle12c报crc错误,【已解决】系统提示CRC错误,该怎么办?
  20. 求解“背包问题”的“粒子群算法”

热门文章

  1. 架构设计(1)-谈谈架构
  2. 迷宫寻路 (25分)
  3. 中国天气网天气预报接口
  4. pd.to_excel()中关于pd数据到excel中行列设置规则总结
  5. 基于 element-plus 封装一个依赖 json 动态渲染的查询控件
  6. vue中的render函数、h()函数、函数式组件
  7. ORA-942 SP2-0611
  8. Elasticsearch常用可视化管理工具
  9. 微信公众平台升级9大高级接口功能解读
  10. 旅游景点剧本杀小程序