linux module工具安裝與使用
linux中的環(huán)境變量管理,讓人煩不勝煩。但是有了module這個(gè)開(kāi)源的環(huán)境變量管理工具,就讓linux中的環(huán)境變量管理變得容易。
以下鏈接,是module工具的介紹:https://modules.readthedocs.io/en/latest/index.html
一、安裝
module工具,依賴tcl工具,因此首先要安裝tcl工具。
wget https://cfhcable.dl.sourceforge.net/project/tcl/Tcl/8.5.9/tcl8.5.9-src.tar.gz
tar -zxvf tcl8.5.9-src.tar.gz
cd tcl8.5.9/unix
./configure --prefix=/usr/local/tools/tcl
make
make install
安裝tcl之后,就可以安裝module工具了。
wget https://newcontinuum.dl.sourceforge.net/project/modules/Modules/modules-4.2.4/modules-4.2.4.tar.gz
tar -zxvf modules-4.2.4.tar.gz
cd modules-4.2.4
./configure --prefix=/usr/local/tools/modules --with-tcl-lib=/usr/local/tools/tcl/lib --with-tcl-inc=/usr/local/tools/tcl/include
make
make install
安裝完成之后,在/usr/local/tools/modules(以下稱(chēng)為module根目錄)目錄下,就有module工具了。不過(guò)在bin目錄下,是沒(méi)有module這個(gè)命令的。
二、配置
因?yàn)閎in目錄下,沒(méi)有module這個(gè)命令,因此,直接將module根目錄下的bin目錄,加入到PATH中,是不行的。
在 init 目錄下,有 profile.sh 和 profile.csh文件,用來(lái)配置module的腳本文件。如果當(dāng)前用的shell是bash,就使用profile.sh,如果當(dāng)前用的shell是cshell,就使用profile.csh。
打開(kāi)/etc/profile文件,加入 source /usr/llocal/tools/modules/init/profile.sh 這一行代碼。重啟終端,使用module -h,就可以打印module命令的help了。不過(guò)如果 which module,會(huì)發(fā)現(xiàn)找不到module命令。
也可以建立符號(hào)鏈接,這樣當(dāng)系統(tǒng)重啟后,會(huì)自動(dòng)加載
ln -s /usr/local/tools/modules/init/profile.sh /etc/profile.d/module.sh
ln -s /usr/local/tools/modules/init/profile.csh /etc/profile.d/module.csh
使用module ava,可以獲取當(dāng)前系統(tǒng),可以使用的工具。不過(guò)因?yàn)椋€沒(méi)有編寫(xiě)工具配置文件,因此顯示的工具為空。

三、編寫(xiě)modulefiles文件
module工具,根據(jù)modulefile文件,來(lái)實(shí)現(xiàn)環(huán)境變量的管理。
以下是 modulefiles目錄下的 modules文件,我們后面實(shí)現(xiàn)的工具配置文件,都是基于這個(gè)文件進(jìn)行修改。
#%Module1.0#####################################################################
##
## modules modulefile
##
proc ModulesHelp { } {
global version prefix
puts stderr "\tmodules - loads the modules software & application environment"
puts stderr "\n\tThis adds $prefix/* to several of the"
puts stderr "\tenvironment variables."
puts stderr "\n\tVersion $version\n"
}
module-whatis "loads the modules environment"
# for Tcl script use only
set version 4.2.4
set prefix /usr/local/tools/modules
setenv MODULESHOME $prefix
prepend-path PATH /usr/local/tools/modules/bin
prepend-path MANPATH /uer/local/tools/modules/share/man
下面說(shuō)一下關(guān)鍵點(diǎn):
? 最前面的幾行注釋?zhuān)灰薷?br>? proc: 定義函數(shù),可以要,也可以吧乣
? set: 設(shè)置變量
? setenv: 設(shè)置環(huán)境變量
? prepend-path: 向環(huán)境變量中,加入指定的值,加入的值,放在環(huán)境變量前面
一般使用比較多的,就是set,setenv,prepend-path,這三個(gè)語(yǔ)法。更多的語(yǔ)法,在官網(wǎng)有介紹:
https://modules.readthedocs.io/en/latest/modulefile.html
要注意的是,$env(PROJ_SRC_ROOT),是獲取環(huán)境變量 PROJ_SRC_ROOT 的值。
四、使用
工具的modulefiles文件編寫(xiě)完畢后,module工具就會(huì)識(shí)別,此時(shí)使用module ava,就會(huì)顯示,可以用的所有工具。

在modulefiles目錄下,新建了 synopsys 目錄,并且放置了vcs和verdi,2個(gè)配置文件。
使用 module load synopsys/verdi, 就可以加載verdi工具。
此時(shí)使用 module list可以查看,目前已經(jīng)加載的工具:

使用 module rm synopsys/verdi,就可以取消加載verdi工具
此時(shí)使用module list可以查看,目前已經(jīng)加載的工具:

如果想取消所有工具的加載,使用 module purge 命令。
posted on 2021-08-22 13:13 士子 閱讀(5844) 評(píng)論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)