Environment Modules简单使用
Environment Modules简单使用
Environment Modules简介
Typically users initialize their environment when they log in by setting environment information for every application they will reference during the session. The Environment Modules package is a tool that simplify shell initialization and lets users easily modify their environment during the session with modulefiles.
下载安装
安装步骤
$ INSTALL.txt
$ ./configure
$ make
$ make install
默认安装目录
/usr/local/Modules
├── bin
│ ├── add.modules
│ ├── envml
│ ├── mkroot
│ └── modulecmd
├── etc
│ └── siteconfig.tcl
├── init
│ ├── bash
│ ├── bash_completion
│ ├── cmake
│ ├── csh
│ ├── fish
│ ├── fish_completion
│ ├── ksh
│ ├── ksh-functions
│ ├── lisp
│ ├── modulerc
│ ├── perl.pm
│ ├── profile-compat.csh
│ ├── profile-compat.sh
│ ├── profile.csh
│ ├── profile.sh
│ ├── python.py
│ ├── r.R
│ ├── ruby.rb
│ ├── sh
│ ├── tcl
│ ├── tcsh
│ ├── tcsh_completion
│ ├── zsh
│ └── zsh-functions
├── lib
│ └── libtclenvmodules.so
├── libexec
│ ├── modulecmd-compat
│ └── modulecmd.tcl
├── modulefiles
│ ├── dot
│ ├── module-git
│ ├── module-info
│ ├── modules
│ └── gcc
└── share
├── doc
└── vim
初始化
刚刚安装好的
Environment Modules是没有module这条shell命令的
需要进行简单的配置source一下环境
- 在
profile.d下建立软连接,执行下列语句
# root用户
$ cd /etc/profile.d
$ ln -s /usr/local/Modules/init/profile.sh module-profile.sh
$ ln -s /usr/local/Modules/init/profile.csh module-profile.csh
# 普通用户(bash)
$ source /usr/local/Modules/init/profile.sh
$ echo "source /usr/local/Modules/init/profile.sh" >> ~/.bashrc
$ which module
module is a function
module ()
{
_module_raw "$@" 2>&1
}
bash下支持自动补全
# 确认已经安装bash-completion
$ cd /etc/bash_completion.d
ln -s /usr/local/Modules/init/bash_completion modules-compliction.bash
管理工具的不同版本
一个简单的例子
$ cd /usr/local/Modules/modulefiles
$ mkdir riscv_toolchain
$ cd riscv_toolchain
$ touch compile-version
$ touch freedomstudio-version
- compile-verison
#%Module1.0######################################################################
##
## riscv-toolchain modulefile
##
proc ModulesHelp { } {
puts stderr "\tThe riscv-toolchain compile version Module\n"
puts stderr "\tThis module adds the current working directory to your path."
}
module-whatis "adds /opt/riscv/toolchain/bin to your PATH environment variable"
conflict riscv_toolchain/freedomstudio-version
set riscv_home /opt/riscv/toolchain
setenv RISCV $riscv_home
append-path PATH $riscv_home/bin
append-path LIBRARY_PATH $riscv_home/lib
append-path LD_LIBRARY_PATH $riscv_home/lib
append-path LD_INCLUDE_PATH $riscv_home/include
append-path MANPATH $riscv_home/share/man
- freedomstudio-verison
#%Module1.0######################################################################
##
## riscv-toolchain modulefile
##
proc ModulesHelp { } {
puts stderr "\tThe riscv-toolchain compile version Module\n"
puts stderr "\tThis module adds the current working directory to your path."
}
module-whatis "adds /opt/FreedomStudio/SiFive/riscv64-unknown-elf-gcc-8.3.0-2019.08.0 to your PATH environment variable"
conflict riscv_toolchain/compile-version
set riscv_home /opt/FreedomStudio/SiFive/riscv64-unknown-elf-gcc-8.3.0-2019.08.0
setenv RISCV $riscv_home
append-path PATH $riscv_home/bin
append-path LIBRARY_PATH $riscv_home/lib
append-path LD_LIBRARY_PATH $riscv_home/lib
append-path LD_INCLUDE_PATH $riscv_home/include
append-path MANPATH $riscv_home/share/man
简单使用
$ module load riscv_toolchain/compile-version
$ which riscv64-unknown-elf-gcc
riscv64-unknown-elf-gcc is /opt/riscv/toolchain/bin/riscv64-unknown-elf-gcc
$ module load riscv_toolchain/freedomstudio-version
Loading riscv_toolchain/freedomstudio-version
ERROR: riscv_toolchain/freedomstudio-version cannot be loaded due to a conflict.
HINT: Might try "module unload riscv_toolchain/compile-version" first.
$ module unload riscv_toolchain/compile-version
$ module load riscv_toolchain/freedomstudio-version
$ which riscv64-unknown-elf-gcc
riscv64-unknown-elf-gcc is /opt/FreedomStudio/SiFive/riscv64-unknown-elf-gcc-8.3.0-2019.08.0/bin/riscv64-unknown-elf-gcc
个人环境管理
~/privatemodules/与/usr/local/Modules/modulefiles一样可以包含local的环境设置
$ cd ~/
$ mkdir privatemodules/
常用命令
| 命令 | 作用 |
|---|---|
| module avail 或 module av | 查看系统中可用的资源 |
| module add 或 module load | 加载模块 |
| module rm 或 unload | 卸载模块 |
| module list 或 module li | 显示已加载模块 |
| module purge | 卸载所有模块 |
| module show | 显示模块配置文件 |
| module swap 或 module switch | 将模块1 替换为 模块2 |
| module help | 查看具体软件的信息 |
参考资料
[1].超算入门课程4 module命令使用教学
[2].Environment Modules
[3].Linux使用Moduler切换各种MPI环境
Environment Modules简单使用的更多相关文章
- Environment Modules 简明教程
Environment Modules 简明教程 1. Modules 简介 在 Linux 超算平台上,通常会安装有不同版本的多种编译器和其他软件等,如常用的编译器有 intel 和 gnu,常用的 ...
- 在外部存储器上写入或读取文件(Environment类、File类的使用)
1.Environment类 简单介绍:http://www.cnblogs.com/mengdd/p/3742623.html 详细介绍:http://www.2cto.com/kf/201408/ ...
- Go Modules使用教程
Go Modules 不完全教程 文章转载自公众号 Golang 成神之路 , 作者 L Go Modules 是 Golang 官方最近几个版本推出的原生的包管理方式,在此之前,社区也不乏多种包管理 ...
- puppet之自定义fact(转载)
1.使用环境变量'FACTERLIB'创建fact 1.1.在自定义目录里面定义一个fact,列出当前系统登录的用户数 [root@agent1 ~]# vim /var/lib/puppet/kis ...
- 第37篇 Asp.Net源码解析(二)--详解HttpApplication
这篇文章花了点时间,差点成烂到电脑里面,写的过程中有好几次修改,最终的这个版本也不是很满意,东西说的不够细,还需要认真的去看下源码才能有所体会,先这样吧,后面有时间把细节慢慢的再修改.顺便对于开发的学 ...
- webpack1 新手入门教程
本文github仓库地址: https://github.com/Rynxiao/webpack-tutorial ,里面包括了本教程的所有代码. [如果你觉得这篇文章写得不错,麻烦给本仓库一颗星:- ...
- 从零开始系列之vue全家桶(3)安装使用vuex
什么是vuex? vuex:Vue提供的状态管理工具,用于同一管理我们项目中各种数据的交互和重用,存储我们需要用到数据对象. 即data中属性同时有一个或几个组件同时使用,就是data中共用的属性. ...
- 安卓网络访问(xUtils3)
xUtils3是安卓网络访问的重要库,基本上的网络请求所涉及的内容都有集成.笔者将实现xUtils3的简单使用,包括简单GET和POST请求.文件上传.文件下载.图片显示. 其主要特性有以下几点: ① ...
- You Only Look Once: Unified, Real-Time Object Detection(翻译)
0 - 摘要 我们提出了YOLO,一种新的物体检测方法.之前的物体检测工作是通过重新使用分类器来进行检测.相反,我们将对象检测抽象为一个回归问题,描述为以空间分隔的边界框和相关的类别概率.一个简单的神 ...
随机推荐
- 中文转换为ASCII码的方式
可以到jdk安装路径: 找到native2ascii.exe文件 双击运行,敲入中文即可获取对应的ASCII编码
- PHP连接mongodb的现代用法---使用Monogodb\Driver\Manager
目的:在php程序端查询文档相关集合存储情况 <?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/11/29 ...
- 阅读之SQL优化
一.性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化. 为了获得稳定的执行性能,SQL语句越简单越好.对复杂的SQL语句, ...
- jvm——内存模型
这是我理解的jvm内存模型,这一整块可以简单理解为虚拟内存空间: jvm代码.jvm数据:是运行jvm所用到的代码和数据,并不是我们自己编程得到的代码和数据 direct memory:主要是NIO在 ...
- electron-vue 图片加载失败后使用默认头像
<img :src="item.headUrl" alt="" class="contact-head" :onerror=" ...
- form表单细节
一.表单 表单<form> 标签用于为用户输入创建 HTML 表单 表单能够包含 input 元素,比如文本字段.复选框.单选框.提交按钮等等. 表单还可以包含 menus.textare ...
- @ENABLECACHING 基于注解的缓存
@EnableCaching• @Cacheable指定一个或多个Cache名字,同属性cacheNamesSpring Cache 使用 ---@EnableCaching @Cacheable 注 ...
- web项目重启命令
jps -lvm|grep "young_rd_10004" | awk '{print $1}'|xargs kill -9; sleep 3; /home/web_server ...
- 【深入理解CLR】2:细谈值类型的装箱和拆箱
装箱 总所周知,值类型是比引用类型更“轻型”的一种类型,因为它们不作为对象在托管堆中分配,不会被垃圾回收,也不通过指针来引用.但在许多情况下,都需要获取对值类型的一个实例的引用.例如,假定要创建一个A ...
- sh_09_打印多条分隔线
sh_09_打印多条分隔线 def print_line(char, times): """打印单行分隔线 :param char: 分隔字符 :param times: ...