Modulefile - загрузка модуля при вызове выгрузки модуля
Поэтому я пытаюсь динамически загружать / выгружать файлы модулей при их загрузке. Я пытаюсь сделать это таким образом, чтобы я мог выгрузить конфликтующие модули (вместо того, чтобы просто использовать переменную конфликта, поскольку она просто выдает ошибку)
Однако, когда я вызываю модуль load для одного файла, который пытается выгрузить другой... второй загружается, а не выгружается. Пример ниже:
test1 Modulefile:
#%Module1.0
##
## Testing
##
if { [module-info mode load] && [is-loaded test2] } {
puts stderr "Unloading test2 (From test1)"
module unload test2
}
test2 Modulefile:
#%Module1.0
##
## Test2
##
if { [module-info mode load] } {
puts stderr "Loading test2\n"
}
if { [module-info mode remove] } {
puts stderr "Unloading test2\n"
}
Вывод, когда я пытаюсь загрузить test1 во время загрузки test2:
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
Кто-нибудь знает почему или как я могу это исправить? Есть ли другая команда, которую я могу поместить в файл модуля, который выгружает другой модуль? Или есть лучшая альтернатива использованию модулей?
Спасибо заранее за чтение и помощь!
1 ответ
Проблема, которую вы описываете, связана с ошибкой, влияющей на версию Модуля <= 3.2.10. Более новая версия модулей (> 3.2.10) или современный пакет "environment-modules" в RedHat-подобном дистрибутиве Linux исправили эту проблему:
Например, в последней системе 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) test1