因此,我正在尝试让模块文件在加载时动态加载/卸载。我正在尝试这样做,这样我就可以卸载冲突的模块(而不是仅仅使用冲突变量,因为它只是抛出一个错误)
但是,当我在一个试图卸载另一个文件的文件上调用module load时...第二个是加载而不是卸载。示例如下:
test1模块文件:
#%Module1.0
##
## Testing
##
if { [module-info mode load] && [is-loaded test2] } {
puts stderr "Unloading test2 (From test1)"
module unload test2
}test2模块文件:
#%Module1.0
##
## Test2
##
if { [module-info mode load] } {
puts stderr "Loading test2\n"
}
if { [module-info mode remove] } {
puts stderr "Unloading test2\n"
}在加载test2的同时尝试加载test1时的输出:
root@host:/usr/local/modules# module load test1
Unloading test2 (From test1)
Loading test2模块--版本输出:
VERSION=3.2.10
DATE=2012-12-21
AUTOLOADPATH=undef
BASEPREFIX="/usr"
BEGINENV=99
CACHE_AVAIL=undef
DEF_COLLATE_BY_NUMBER=undef
DOT_EXT=""
EVAL_ALIAS=1
HAS_BOURNE_FUNCS=1
HAS_BOURNE_ALIAS=1
HAS_TCLXLIBS=undef
HAS_X11LIBS=1
LMSPLIT_SIZE=1000
MODULEPATH="/usr/share/modules/modulefiles"
MODULES_INIT_DIR="/usr/Modules/3.2.10/init"
PREFIX="/usr/Modules/3.2.10"
TCL_VERSION="8.6"
TCL_PATCH_LEVEL="8.6.1"
TMP_DIR="/tmp"
USE_FREE=undef
VERSION_MAGIC=1
VERSIONPATH="/usr/share/modules/versions"
WANTS_VERSIONING=1
WITH_DEBUG_INFO=undef有没有人知道我为什么要解决这个问题,或者如何解决这个问题?我是否可以在Modulefile中添加另一个命令来卸载另一个模块?或者,有没有比使用模块更好的选择?
感谢您的阅读和帮助!
发布于 2018-06-23 21:23:24
您描述的问题来自影响模块版本<= 3.2.10的a bug。较新的Modules版本(> 3.2.10)或RedHat-like Linux发行版上最新的"environment-modules“包已修复此问题:
例如,在最近的Fedora系统上,获得异常行为:
$ module -V
Modules Release 4.1.3 (2018-06-18)
$ module load test2
Loading test2
$ module list
Currently Loaded Modulefiles:
1) test2
$ module load test1
Unloading test2 (From test1)
Unloading test2
$ module list
Currently Loaded Modulefiles:
1) test1https://stackoverflow.com/questions/32640215
复制相似问题