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

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 года.

Ссылки