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简单使用的更多相关文章

  1. Environment Modules 简明教程

    Environment Modules 简明教程 1. Modules 简介 在 Linux 超算平台上,通常会安装有不同版本的多种编译器和其他软件等,如常用的编译器有 intel 和 gnu,常用的 ...

  2. 在外部存储器上写入或读取文件(Environment类、File类的使用)

    1.Environment类 简单介绍:http://www.cnblogs.com/mengdd/p/3742623.html 详细介绍:http://www.2cto.com/kf/201408/ ...

  3. Go Modules使用教程

    Go Modules 不完全教程 文章转载自公众号 Golang 成神之路 , 作者 L Go Modules 是 Golang 官方最近几个版本推出的原生的包管理方式,在此之前,社区也不乏多种包管理 ...

  4. puppet之自定义fact(转载)

    1.使用环境变量'FACTERLIB'创建fact 1.1.在自定义目录里面定义一个fact,列出当前系统登录的用户数 [root@agent1 ~]# vim /var/lib/puppet/kis ...

  5. 第37篇 Asp.Net源码解析(二)--详解HttpApplication

    这篇文章花了点时间,差点成烂到电脑里面,写的过程中有好几次修改,最终的这个版本也不是很满意,东西说的不够细,还需要认真的去看下源码才能有所体会,先这样吧,后面有时间把细节慢慢的再修改.顺便对于开发的学 ...

  6. webpack1 新手入门教程

    本文github仓库地址: https://github.com/Rynxiao/webpack-tutorial ,里面包括了本教程的所有代码. [如果你觉得这篇文章写得不错,麻烦给本仓库一颗星:- ...

  7. 从零开始系列之vue全家桶(3)安装使用vuex

    什么是vuex? vuex:Vue提供的状态管理工具,用于同一管理我们项目中各种数据的交互和重用,存储我们需要用到数据对象. 即data中属性同时有一个或几个组件同时使用,就是data中共用的属性. ...

  8. 安卓网络访问(xUtils3)

    xUtils3是安卓网络访问的重要库,基本上的网络请求所涉及的内容都有集成.笔者将实现xUtils3的简单使用,包括简单GET和POST请求.文件上传.文件下载.图片显示. 其主要特性有以下几点: ① ...

  9. You Only Look Once: Unified, Real-Time Object Detection(翻译)

    0 - 摘要 我们提出了YOLO,一种新的物体检测方法.之前的物体检测工作是通过重新使用分类器来进行检测.相反,我们将对象检测抽象为一个回归问题,描述为以空间分隔的边界框和相关的类别概率.一个简单的神 ...

随机推荐

  1. MySQL优化建议与使用规范

    适用场景:并发量大.数据量大的互联网业务;可以先阅读必须掌握的MySQL优化指南 一.基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源 ...

  2. 用java写一个死锁

    什么是死锁? 多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放.由于线程被无限期地阻塞,因此程序不可能正常终止. 不适当的使用“synchronized”关键词来管理线程对特定对象的访问 ...

  3. 【新手】【十分钟上手系列-一】快速开发vue插件

    2018.6.28 在这浮躁的前端娱乐圈,不会三两个新框架都觉得自己不是前端.哦,不是我说的.说到底.原生才是重中之重.加油. vue用了大半年多,一直在用ui库,插件等,没有自己的东西. 想想连个v ...

  4. 【NOIP2016提高A组模拟8.23】函数

    题目 分析 观察这个是式子\(\sum_{d|n}f(n)=n\), 发现其实函数\(f()\)就是欧拉函数\(φ()\)(见http://blog.csdn.net/chen1352/article ...

  5. 【GDKOI2013选拔】大LCP

    题目 LCP就是传说中的最长公共前缀,至于为什么要加上一个大字,那是因为-你会知道的. 首先,求LCP就要有字符串.既然那么需要它们,那就给出n个字符串好了. 于是你需要回答询问大LCP,询问给出一个 ...

  6. centos7下open--v!(p/n)部署

    一,client-server 路由模式 使用tun,openssl,lzo压缩,启用转发,生成证书,关闭selinux 同步下时间 #1安装 yum -y install openvpn easy- ...

  7. matlab中画三维图形

    这里主要讲述两个方法用matlab画三维图形: 1.mesh函数 先看一个简单的例子: x = ::; y = ::; [X, Y] = meshgrid(x, y); Z = zeros(,); Z ...

  8. jquery eq()选择器 语法

    jquery eq()选择器 语法 作用::eq() 选择器选取带有指定 index 值的元素.index 值从 0 开始,所有第一个元素的 index 值是 0(不是 1).经常与其他元素/选择器一 ...

  9. BZOJ1460: Pku2114 Boatherds

    题目链接:点这里 题目描述:给你一棵n个点的带权有根树,有p个询问,每次询问树中是否存在一条长度为Len的路径,如果是,输出Yes否输出No. 数据范围:\(n\le1e5\,,p\le100\,,长 ...

  10. windows 安装 Mongodb 数据库及操作图形化软件 Robo 3T

    1 下载系统对应的正确 Mongodb 和 Robo 3T 版本 2 选中 Mongodb 需要安装的路径(后续会使用路径) 3 启动 Mongodb 服务器(到安装相关的路径) 可以参考 菜鸟教程 ...