Система модулей среды — это инструмент, помогающий пользователям управлять средой оболочки Unix или Linux , позволяя динамически создавать или удалять группы связанных настроек переменных среды.
Модули существуют с начала 1990-х годов [1] и используются в некоторых крупнейших компьютерных центрах [2] для развертывания нескольких версий различных программных инструментов для пользователей. Национальный центр научных вычислений в области энергетики (NERSC) сообщает, что они используют модули среды для управления практически всем программным обеспечением. [3] Модули среды указаны как требование базовой конфигурации Программы модернизации высокопроизводительных вычислений Министерства обороны США [4] по базовой конфигурации проекта [5] для участвующих центров ресурсов суперкомпьютеров Министерства обороны США (DSRC).
Система модулей основана на modulefiles, [6] , которые определяют группы настроек среды, которые должны быть сделаны вместе. Modulefiles могут быть установлены в центральном месте для общего использования или в каталоге пользователя для личного использования. Модули среды modulefiles написаны на языке Tcl (Tool Command Language) и интерпретируются программой modulecmd через пользовательский интерфейс module [7] .
Ключевым преимуществом Environment Modules является то, что он независим от оболочки и поддерживает все основные оболочки, такие как bash, ksh, zsh, sh, tcsh и csh. Вторым ключевым преимуществом является то, что он позволяет использовать несколько версий программы или пакета из одной учетной записи, просто загрузив нужный модуль. Эти два преимущества сыграли важную роль в том, что Environment Modules стали частью большинства установок кластера HPC. Он также вдохновил несколько альтернативных реализаций, таких как lmod из Техасского университета, который написан на Lua вместо TCL.
modulefiles создаются на основе каждого приложения и каждой версии. Они могут динамически загружаться, выгружаться или переключаться. Наряду с возможностью использования нескольких версий одного и того же программного обеспечения, его также можно использовать для реализации политик сайта относительно доступа и использования приложений.
Путь поиска модулей по умолчанию находится в скрытом файле конфигурации, который можно отобразить с помощью:
$ cat ${ MODULESHOME } /init/.modulespath /etc/modulefiles # CentOS, Scientific Linux, RHEL /usr/local/Modules/modulefiles # Сборка из исходного кода по умолчанию
Каталог /etc/modulefiles, используемый некоторыми дистрибутивами (или любой другой каталог), можно использовать после сборки из исходного кода, изменив файл ${MODULESHOME}/init/.modulespath .
Модуль $ { MODULESHOME}/modulefiles/use.own по сути выполняет следующие шаги:
mkdir $HOME /privatemodules cp ${ MODULESHOME } /modulefiles/null $HOME /privatemodules использование модуля --append $HOME /privatemodules
Команды в этом разделе требуют доступа на чтение/запись/выполнение к каталогу /etc/modulefiles. Вместо этого можно использовать $HOME/privatemodules или другой каталог вместе с "module use --append" или модификацией файла конфигурации, указывающей путь поиска модулей по умолчанию.
Каталог modulefiles по умолчанию изначально пуст. Скопируйте пустой модуль в каталог modulefiles по умолчанию, чтобы он отображался как "module avail". Ниже модули null и module-info используются для отображения использования файла версии в иерархической организации и их влияния на module avail и module show:
mkdir /etc/modulefiles/test cp ${ MODULESHOME } /modulefiles/null /etc/modulefiles/test/2.0 cp ${ MODULESHOME } /modulefiles/module-info /etc/modulefiles/test/1.0 модуль доступный модуль показать тест
Установите первую версию как версию по умолчанию:
echo '#%Module' > /etc/modulefiles/test/.version echo 'set ModulesVersion "1.0"' >> /etc/modulefiles/test/.version module avail module show test module show test/2.0
Переключитесь на более новую версию по умолчанию с помощью:
rm /etc/modulefiles/test/.version echo '#%Module' > /etc/modulefiles/test/.version echo 'set ModulesVersion "2.0"' >> /etc/modulefiles/test/.version module avail module show test
После вышеописанного и последующей новой установки из исходного кода вы увидите:
$ модуль доступен-------------------- /usr/local/Modules/3.2.10/modulefiles --------------------- точка module-git module-info modules null use.own------------------------------- /etc/modulefiles ------------------------------ null test/1.0 test/2.0(по умолчанию)--------------------------- /home/user/privatemodules -------------------------- null$ module show test ------------------------------------------------------------------ /etc/modulefiles/test/2.0: module-whatis абсолютно ничего не делает ------------------------------------------------------------------$ module show test/1.0 ------------------------------------------------------------------ /etc/modulefiles/test/1.0:module-whatis возвращает все различные значения module-info +++ module-info +++++++++++++++++++++++++++++++++++ флаги = 2 режим = отображаемое имя = test/1.0 указанный = test/1.0 оболочка = bash тип оболочки = sh версия = test/1.0 пользователь = расширенный трассировка = 0 tracepat = -.* символы = *undef* +++ информация ++++++++++++++++++++++++++++++++++++++++ имя хоста = localhost уровень = 1 загруженный null = 0 библиотека = /usr/local/lib/tcl8.6 имя_исполняемого_файла = sharedlibextension = .so tclversion = 8.6 уровень_патча = 8.6.1 +++++++++++++++++++++++++++++++++++++++++++++++++++ -------------------------------------------------------------------
Модули среды в дистрибутивах Scientific Linux, CentOS и RHEL в пакете environment-modules включают скрипты modules.csh и modules.sh для каталога /etc/profile.d , которые делают инициализацию модулей частью инициализации оболочки по умолчанию. Одним из преимуществ модулей среды является единый файл модуля, который поддерживает пользователей bash, ksh, zsh, sh, а также tcsh и csh для настройки и инициализации среды. Это немного упрощает управление сложными средами.
Для исходной сборки автоматизацию для всех пользователей можно настроить вручную.
/etc/profile.d/modules.sh из файла etc/global/profile.modules в каталоге сборки модулей 3.2.10.
ловушка "" 1 2 3 случай " $0 " в -bash | bash | */bash ) . /usr/local/Modules/default/init/bash ;; -ksh | ksh | */ksh ) . /usr/local/Modules/default/init/ksh ;; -zsh | zsh | */zsh ) . /usr/local/Modules/default/init/zsh ;; * ) . /usr/local/Modules/default/init/sh ;; # ловушка esac по умолчанию 1 2 3
Скопируйте файл etc/global/profile.modules из каталога сборки модулей 3.2.10 в каталог инициализации системы:
$ sudo cp etc/global/profile.modules /etc/profile.d/modules.sh
Добавьте символическую ссылку версии 3.2.10 для указанных выше общих адресов:
$ cd /usr/local/Modules $ sudo ln -sT 3 .2.10 по умолчанию
Символическая ссылка /etc/profile.d/modules.csh на файл etc/global/profile.modules в каталоге сборки модулей 3.2.10 может включить автоматическую инициализацию модулей для этих пользователей.
В дистрибутивах Scientific Linux, CentOS и RHEL модули среды находятся в пакете environment-modules, который можно установить с помощью:
sudo yum install environment-modules
После установки информацию о пакете можно просмотреть с помощью:
rpm -qi окружение-модулиrpm -ql окружение-модули
В Ubuntu или системах, использующих apt-get, модули среды можно установить с помощью:
sudo apt-get install environment-modules
После установки информацию о пакете можно просмотреть с помощью:
dpkg -L модули среды
Хотя установка из репозитория дистрибутивов Linux с использованием менеджера обновлений дистрибутивов является самой простой, программное обеспечение можно установить из исходного кода. Разрешение зависимостей является самой сложной задачей для установки из исходного кода. Типичный цикл настройки, создания, установки может стать мучительно медленным, поскольку каждое улучшение конфигурации выявляет другую зависимость, недоступную в вашей среде по умолчанию. В этом разделе приведены шаги по установке пакета Environment Modules в исходный код, включая компиляцию Tcl (Tool Command Language) из исходного кода в качестве зависимости.
Хотя 64-битные репозитории PCLinuxOS включают Tcl (Tool Command Language), они не включают пакет разработки с файлами конфигурации, необходимыми для сборки Environment Modules на Linux из исходного кода. Сборка Tcl из исходного кода сделает необходимые файлы доступными.
Источник Tcl: http://sourceforge.net/projects/tcl/files/Tcl/
Извлечь исходный код после загрузки
cd /usr/local/src tar -xvzf ~/Downloads/tcl8.6.1-src.tar.gz
Настроить, сделать, установить
cd /usr/local/src/tcl8.6.1 unix/configure make sudo make install
Извлечь исходный код после загрузки
cd /usr/local/src tar -xvzf ~/Downloads/modules-3.2.10.tar.gz
Настроить, сделать, установить
cd /usr/local/src/modules-3.2.10 CPPFLAGS = "-DUSE_INTERP_ERRORLINE" ./configureделатьsudo сделать установку