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. redis分布式锁原理与实现

    分布式锁原理 分布式锁,是控制分布式系统之间同步访问共享资源的一种方式.在分布式系统中,常常需要协调他们的动作.如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候, ...

  2. create-react-app踩坑记

    前言 哇,不的不说这个react 这个脚手架create-react-app脚确实有很多问题,哈哈,下面来看看吧有哪些坑: 引用sass或者less 记得16年还是几年是不支持sass,和less的, ...

  3. HDU-4185-Oil Skimming(最大匹配)

    链接: https://vjudge.net/problem/HDU-4185 题意: Thanks to a certain "green" resources company, ...

  4. springboot 在idea中实现热部署

    SpringBoot的web项目,在每一次修改了java文件或者是resource的时候,都必须去重启一下项目,这样的话浪费了很多的时间,实现了热部署,在每一次作了修改之后,都会自动的重启 第一步:引 ...

  5. python 小题

    python 小题:给定一个字符串,找出不含有重复字符的最长子串的长度.示例 1:输入: "abcabcbb"输出: 3 解释: 无重复字符的最长子串是 "abc&quo ...

  6. tomcat7 与tomcat8 使用tomcat dbcp pool注意对应类变化

    tomcat dbcp pool在tomcat 7 和tomcat8下的jar包有变化,相应包名也发生变化,对应类名有相应变化! tomcat的lib文件夹下会有jar包tomcat-dbcp.jar ...

  7. postman导入接口

    给大家说一个poatman导入接口的好办法,平常要是想在postman上模拟接口,如果复杂的很难配,其实有一个很简单的方法: 现在我模拟一下百度搜索时历史记录的接口: 点击Copy as cUrl 然 ...

  8. 2019hdu多校 Fansblog

    Problem Description Farmer John keeps a website called 'FansBlog' .Everyday , there are many people ...

  9. windows10 下 gcc/g++ 的安装

    一.gcc的下载 网址:www.mingw.org ,点击右上方的 download installer 二.安装 打开安装程序,默认安装,弹出下列界面 找到mingw32-gcc-g++(注意cla ...

  10. (50)LINUX应用编程和网络编程之五 Linux信号(进程间通信)

                                                                                 信号实现进程间的通信 3.5.1.什么是信号 ...