Почему запуск модуля выгрузить не удалось в файле модуля?

Я новичок.

Я нашел интересную вещь о модулях среды. пожалуйста, смотрите следующий процесс.

моя ОС Linux - redhat5.8. Я установил модули среды 3.2.10, tcl8.6.6,

  1. Исходный код init / csh успешно.
  2. Я пишу файл qq/{61_0, 61_1, 61_2} соответственно.

возьмите qq/61_0 в качестве примера.

cat 61_0:

\#%Module1.0

set curNameVersion  [module-info name]

set curName [lindex [split $curNameVersion "/"] 0]

set var_name "61_PAT"   

set install_path /soft/qq/61_0

if { [module-info mode load] } {    

    puts stderr "loaded $curNameVersion"

    if { [info exists env($var_name)] } {  

        if { $env($var_name) != $install_path } {  

            puts stderr "rm loaded $curName"

            module unload $curName

        }

    }

}

setenv $var_name $install_path

puts stderr "done 61_0"


.
.

   61_1 modulefile is basically similar to 61_0 except set install_path /soft/qq/61_1 and puts stderr "done 61_1"

   61_2 modulefile is basically similar to 61_0 except set install_path /soft/qq/61_2 and puts stderr "done 61_2"

3.

^Linux^:  module add qq/61_0

loaded qq/61_0

done 61_0


^Linux^:  module add qq/61_1

loaded qq/61_1

rm loaded qq

loaded qq/61_0

done 61_0

done 61_1


^Linux^:  module add qq/61_2

done 61_0

done 61_0

done 61_0

..

...

done 61_0

done 61_0

done 61_2


4. 

^Linux^:  module list

Currently Loaded Modulefiles:

  1) qq/61_0   2) qq/61_1   3) qq/61_2

^Linux^:  echo $_LMFILES_ 

/software/qq/61_0:/software/qq/61_1:/software/qq/61_2

^Linux^:  echo $LOADEDMODULES 

qq/61_0:qq/61_1:qq/61_2

мой вопрос:

  1. он не должен загружать несколько версий для одного и того же инструмента qq, при загрузке другой версии он должен в первую очередь модуль rm другой.
    хотя у меня есть модуль выгрузки в модульном файле, но похоже, что модуль выгрузки $curName предложение не работает
  2. при запуске 'module add qq / 61_1' это означает, что сначала он будет загружен qq/61_0, а затем выполнит qq/61_0 modulefile, потому что он выгружен для qq/61_0, он не должен выводить строку 'загружен qq/61_0 ". но он выдает "загруженный qq/61_0". Зачем?
  3. почему так много выходных данных "сделано 61_0" при запуске "добавить модуль qq/61_2"?
  4. echo $LMFILES и echo $LOADEDMODULES доказали, что существует несколько версий для одного и того же инструмента. Как сохранить загрузку только одной версии?

кто-нибудь может мне помочь? заранее спасибо

1 ответ

Проблема, которую вы описываете, связана с ошибкой, влияющей на версию Модуля <= 3.2.10. Более новая версия модулей (> 3.2.10) или современный пакет "environment-modules" в RedHat-подобном дистрибутиве Linux исправили эту проблему:

С фиксированной версией модулей модуль, который вы описываете, кажется правильным (протестирован на модулях 3.2.10 и выше в системе Fedora):

$ module add qq/61_0
loaded qq/61_0
done 61_0
$ module add qq/61_1
loaded qq/61_1
rm loaded qq
done 61_0
done 61_1
$ module list
Currently Loaded Modulefiles:
 1) qq/61_1  
$ module add qq/61_2
loaded qq/61_2
rm loaded qq
done 61_1
done 61_2
$ module list
Currently Loaded Modulefiles:
 1) qq/61_2
Другие вопросы по тегам