在Linux环境下,当同一个软件存在多个版本且多个版本都需要在不同的场景下或给不同人员使用时,配置环境变量是一个非常繁琐的过程。Environment Modules是一个专门管理环境变量和软件版本的工具,可以通过NFS共享的方式把多个软件的多个版本安装在NFS共享目录下,通过module load等命令可以非常方便地使用不同版本的软件
http://modules.sourceforge.net/
https://modules.readthedocs.io/en/latest/index.html
http://bioinfo.online/html/article/202281613669.html

sudo apt-get install tcl-dev tk-dev mesa-common-dev libjpeg-dev libtogl-dev

https://www.linuxquestions.org/questions/linux-software-2/configuration-error-can%27t-find-tcl-configuration-definition-4175434069/

https://gitlab.rlp.net/imbforge/sysops/-/tree/master/lmod

https://www.modb.pro/db/327877

apt-get install tcl-dev

https://modules.readthedocs.io/en/latest/INSTALL.html

ln -s PREFIX/init/profile.sh /etc/profile.d/modules.sh
ln -s PREFIX/init/profile.csh /etc/profile.d/modules.csh
sudo apt-get install -y environment-modules
$ dpkg -L environment-modules
/.
/etc
/etc/csh
/etc/csh/login.d
/etc/environment-modules
/etc/environment-modules/modules
/etc/environment-modules/modulespath
/etc/environment-modules/site.exp
/etc/environment-modules/siteconfig.tcl
/etc/profile.d
/etc/profile.d/modules.sh
/usr
/usr/bin
/usr/bin/add.modules
/usr/bin/envml
/usr/bin/mkroot
/usr/bin/modulecmd
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/libtclenvmodules.so
/usr/lib/x86_64-linux-gnu/modulecmd-compat
/usr/lib/x86_64-linux-gnu/modulecmd.tcl
/usr/share
/usr/share/bash-completion
/usr/share/bash-completion/completions
/usr/share/doc
/usr/share/doc/environment-modules
/usr/share/doc/environment-modules/CONTRIBUTING.txt.gz
/usr/share/doc/environment-modules/ChangeLog-compat.gz
/usr/share/doc/environment-modules/MIGRATING.txt.gz
/usr/share/doc/environment-modules/NEWS-compat.gz
/usr/share/doc/environment-modules/NEWS.txt.gz
/usr/share/doc/environment-modules/README.gz
/usr/share/doc/environment-modules/changelog.Debian.gz
/usr/share/doc/environment-modules/copyright
/usr/share/doc/environment-modules/diff_v3_v4.txt.gz
/usr/share/doc/environment-modules/example.txt.gz
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/module-compat.1.gz
/usr/share/man/man1/module.1.gz
/usr/share/man/man4
/usr/share/man/man4/modulefile-compat.4.gz
/usr/share/man/man4/modulefile.4.gz
/usr/share/modules
/usr/share/modules/init
/usr/share/modules/init/bash
/usr/share/modules/init/bash_completion
/usr/share/modules/init/cmake
/usr/share/modules/init/csh
/usr/share/modules/init/fish
/usr/share/modules/init/fish_completion
/usr/share/modules/init/ksh
/usr/share/modules/init/ksh-functions
/usr/share/modules/init/ksh-functions/module
/usr/share/modules/init/ksh-functions/switchml
/usr/share/modules/init/lisp
/usr/share/modules/init/modulerc
/usr/share/modules/init/perl.pm
/usr/share/modules/init/profile-compat.csh
/usr/share/modules/init/profile-compat.sh
/usr/share/modules/init/profile.csh
/usr/share/modules/init/profile.sh
/usr/share/modules/init/python.py
/usr/share/modules/init/r.R
/usr/share/modules/init/ruby.rb
/usr/share/modules/init/sh
/usr/share/modules/init/tcl
/usr/share/modules/init/tcsh
/usr/share/modules/init/tcsh_completion
/usr/share/modules/init/zsh
/usr/share/modules/init/zsh-functions
/usr/share/modules/init/zsh-functions/_module
/usr/share/modules/modulefiles
/usr/share/modules/modulefiles/dot
/usr/share/modules/modulefiles/module-git
/usr/share/modules/modulefiles/module-info
/usr/share/modules/modulefiles/modules
/usr/share/modules/modulefiles/null
/usr/share/modules/modulefiles/use.own
/usr/share/modules/versions
/etc/csh/login.d/modules
/usr/lib/modulecmd.tcl
/usr/share/bash-completion/completions/modules
/usr/share/modules/init/.modulespath
$ module ava
------------------------------------------- /usr/share/modules/modulefiles -------------------------------------------
dot  module-git  module-info  modules  null  use.own  
$ module ava
------------------------------------------- /usr/share/modules/modulefiles -------------------------------------------
dot  module-git  module-info  modules  null  use.own