Environment Modules (программное обеспечение)

Pause

Environment Modules — программный инструмент, предназначенный для динамического изменения пользовательского окружения оболочки. Он обеспечивает механизм управления и переключения между наборами переменных окружения, что часто используется для настройки различных пакетов программного обеспечения, компиляторов и библиотек.

Общие сведения

Общее описание

Environment Modules позволяет пользователям динамически конфигурировать окружение оболочки без постоянного изменения скриптов входа. Это особенно полезно в сфере высокопроизводительных вычислений (HPC), где требуется доступ к нескольким версиям одного и того же приложения. Пользователь подключает и отключает отдельные скрипты — modulefile — для изменения таких переменных окружения, как PATH или LD_LIBRARY_PATH.

Environment Modules не зависит от типа оболочки и поддерживает все основные Unix-оболочки (Bash, ksh, Zsh, Fish, sh, tcsh, csh), а также оболочки Windows (CMD.EXE и PowerShell) и ряд скриптовых языков (Perl, Python, Ruby, Tcl, CMake и R).

Программа работает со всеми элементами окружения оболочки: переменными окружения, алиасами, shell-функциями и автодополнением команд.

История

Environment Modules была впервые разработана в начале 1990-х годов[1] Джоном Л. Фурлани в Sun Microsystems. Версия 1 была реализована как набор shell-скриптов. В версии 2 Environment Modules стала программой на C, обрабатывающей modulefile, написанные на Tcl.

В середине 1990-х Питер В. Озель из Siemens и Йенс Хамиш из Strawberry выпустили версию 3.0beta[2]. В конце 1990-х Р. К. Оуэн из NERSC взял на себя развитие проекта и портировал его на Linux. Версия 3.1 была опубликована в 2000 году под лицензией GPL[3].

В 2000-х годах Environment Modules получила широкое распространение в HPC и внедрялась в крупнейших вычислительных центрах[4][5]. Environment Modules также стала частью базовой конфигурации программного комплекса Минобороны США (HPCMP)[6].

В 2004 году Марк Лаката из MIPS Technologies разработал чистую реализацию на Tcl[7]. Эту альтернативную ветку впоследствии поддерживал Кент Мейн из Университета Миннесоты.

В 2008 году Роберт МакЛей из TACC представил Lmod[8] — альтернативную реализацию Environment Modules на базе Lua.

После выхода версии 3.2.10 в декабре 2012 года разработка C-реализации была прекращена. В последующие годы Lmod стал набирать популярность в сообществе HPC.

В 2017 году поддержка проекта перешла к Ксавье Деларюэль из CEA (Франция), который выпустил версию 4 — на базе Tcl-реализации, дополненной для совместимости с прежней C-версией[9]. С тех пор новые функции регулярно внедряются для повышения удобства работы и расширения возможностей[10].

Архитектура

Environment Modules предоставляет команду modulecmd.tcl вместе с shell-функцией или псевдонимом module[11]. Эта команда интерпретирует modulefile[12] — скрипты на Tcl, определяющие изменения окружения, — и генерирует соответствующий код для оболочки. Shell-функция или псевдоним исполняет этот код, чтобы обновить текущую сессию оболочки.

Обычно modulefile изменяет переменные окружения, такие как PATH, MANPATH или LD_LIBRARY_PATH.

Modulefile организованы в каталоги — modulepath. Эти каталоги могут администрироваться централизованно (система) или располагаться в пользовательских директориях для индивидуальных настроек.

Пользователь может:

  • Загрузить modulefile (применить изменения окружения): module load
  • Отключить modulefile (отменить изменения): module unload
  • Переключить между версиями: module switch
  • Посмотреть доступные modulefile: module avail
  • Показать содержимое modulefile: module display
  • Вывести список подключённых modulefile: module list
  • Сохранить подключенные modulefile в коллекцию: module save
  • Восстановить окружение из коллекции: module restore
  • Активировать пользовательский modulepath: module use

Доступность

Environment Modules поставляется во многих дистрибутивах Linux и Unix[13]. В Debian, Ubuntu, Red Hat Enterprise Linux и Fedora программа доступна под именем пакета environment-modules. Также существует пакет для macOS через Homebrew, а отдельная версия предоставляется и для Windows. Если дистрибутивные пакеты недоступны, проект предлагает исходные коды и документацию для ручной установки и настройки[14][15].

Примечания

  1. ↑ Furlani, John L. (30 сентября — 3 октября 1991). “Modules: Providing a Flexible User Environment” (PDF). Proceedings of the Fifth Large Installation Systems Administration Conference (LISA V). Сан-Диего, Калифорния: 141—152. Дата обращения 9 февраля 2014. Проверьте дату в |date= (справка на английском)
  2. ↑ Module 3.0 Beta 1 is out. SourceForge (4 октября 1996).
  3. ↑ Modules 3.1.0 almost ready. SourceForge (28 июня 2000).
  4. ↑ NICS User Support Kraken Modules Description (англ.). The National Institute for Computational Sciences (NICS). Oak Ridge National Laboratory — Department of Energy (22 мая 2011). Дата обращения: 9 февраля 2014. Архивировано из оригинала 22 февраля 2014 года.
  5. ↑ NERSC Modules Software Environment (англ.). The National Energy Research Scientific Computing Center (NERSC). Office of Science — Department of Energy (7 февраля 2014). Дата обращения: 3 сентября 2025. Архивировано из оригинала 7 ноября 2012 года.
  6. ↑ Use of Modules for Accessing Multiple Versions of Software (англ.). Baseline Configuration. DoD High Performance Computing Modernization Program (HPCMP) (20 марта 2008). Дата обращения: 9 февраля 2014. Архивировано из оригинала 22 февраля 2014 года.
  7. ↑ [Modules] pure TCL implementation of module (англ.). SourceForge (29 октября 2002).
  8. ↑ Announcing Lmod: A new module system. SourceForge (16 октября 2008).
  9. ↑ Modules 4.0.0 released. SourceForge (16 октября 2017).
  10. ↑ New features. Read the Docs (31 июля 2025). Архивировано 3 мая 2025 года.
  11. ↑ module. Read the Docs (31 июля 2025). Архивировано 5 мая 2025 года.
  12. ↑ modulefile. Read the Docs (31 июля 2025). Архивировано 14 января 2025 года.
  13. ↑ Versions for environment-modules. Repology. Дата обращения: 4 сентября 2025. Архивировано 14 января 2025 года.
  14. ↑ Installing Modules on Unix. Read the Docs (31 июля 2025). Архивировано 3 мая 2025 года.
  15. ↑ Installing Modules on Windows. Read the Docs (31 июля 2025). Архивировано 3 мая 2025 года.

Ссылки

Pause