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
$ ln -s /usr/local/Modules/init/profile.csh

# 普通用户
$ source ~/.bashrc

$ which module
module is a function
module () 
{ 
    _module_raw "$@" 2>&1
}

管理工具的不同版本

一个简单的例子

$ 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

个人环境管理

$ cd ~/
$ mkdir privatemodules/

~/privatemodules//usr/local/Modules/modulefiles一样可以包含local的环境设置

常用命令

猜你喜欢

转载自www.cnblogs.com/OneFri/p/11723628.html