Environment Modules - 在工具生命周期的重要性
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 - 在工具生命周期的重要性相关推荐
- 当 Erda 遇上 API 生命周期管理,好戏开始了!
作者 | 陈忠润 来源 | Erda 公众号 写在前面 API 全生命周期管理(Full Life Cycle API Management)是指对 API 从规划.设计到实施.测试.发布.运行. ...
- Vue系列之vue生命周期详解
文章の目录 1.什么是 vue 生命周期 2.生命周期钩子函数 2.1.beforeCreate(创建前) 2.2.created(创建后) 2.3.beforeMount(挂载前) 2.4.moun ...
- 用户生命周期常用指标_生命周期管理工具如何使用指标
用户生命周期常用指标 格雷格·萨特克利夫(Greg Sutcliffe)是长期会员,现在是工头社区的社区负责人 . Foreman是用于物理和虚拟服务器的生命周期管理工具. 他一直在研究社区度量标准在 ...
- ilm 和dlm差异_Oracle 的信息生命周期管理工具(ILM assistant)
ILM即Information Lifecycle Management(信息生命周期管理)的简写,类似的概念还有数据生命周期管理(DLM)等,是对数据随着时间的变化所赋有的价值的预测.简单地讲,象暂 ...
- Mirantis决定采用Kubernetes作为 Openstack的生命周期管理工具
Mirantis是OpenStack的主要贡献者,今天他宣布将使用Kubernetes作为底层编排引擎重写其私有云平台.我们认为这是推进OpenStack和Kubernetes 社区伟大的一步. Op ...
- vue- Vue-Cli脚手架工具安装 -创建项目-页面开发流程-组件生命周期-03
目录 本博客环境 Vue-Cli 项目环境搭建 与 python 基础环境对比 环境搭建 创建启动 vue 项目 命令创建项目(步骤小多) 启动 vue 项目(命令行方式) 启动 vue 项目(pyc ...
- python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)...
昨日内容回顾 0. 组件注意事项!!!data属性必须是一个函数!1. 注册全局组件Vue.component('组件名',{template: ``})var app = new Vue({el: ...
- 微信小程序(文件组成 、目录结构、生命周期方法、AppId、组件(标签)、语法、事件、Api、开发工具)
目录 AppID 文件组成 目录结构 app.json 其它全局配置链接 app.js app.wxss App 参考文档 生命周期方法 App.js中周期方法 onload(opt) onReady ...
- 软件测试常用的工具及生命周期篇
测试常用的工具: 缺陷管理:jira.禅道.confluence.git.Note 接口测试:Postman.Jmeter(Apache).Selenium 性能测试:LoadRunner(负载测试. ...
最新文章
- 回首2013 展望2014
- Android --- 怎么设置 EditText 控件中光标默认位置,当 EditText 里有文字的时候,光标跑到了最前面
- Python:自动化上传OSS
- 【目标分类_长尾分布问题】BBN:Bilateral-Branch Network _ CVPR2020
- asp.net(mvc) 框架
- 数学建模1 赛前准备 赛题选择 查找文献
- 数据管理与商业智能_商业智能与数据科学
- datagridviewrow 行宽_C# Winform DataGridView实现行[Row]的上下移动…….. | 学步园
- 湿气重的人,脸上会有哪些信号?
- cad螺纹lisp_AutoCADLISP基本知识及函数
- 弹力球C语言课程设计,弹力球游戏c语言代码
- 魅族16Xs评测:集“够用”与性价比于一身
- Android闪闪发光字体
- unity教程之Unity引擎
- 如何利用ps去除图片水印和绘制图案
- EEPROM, NAND FLASH, NOR FLASH
- Python:根据身高、体重计算BMI指数
- SQL注入的原理、过程及如何防范
- oracle12c报crc错误,【已解决】系统提示CRC错误,该怎么办?
- 求解“背包问题”的“粒子群算法”