Environment Modules (программное обеспечение)
Environment Modules — программный инструмент, предназначенный для динамического изменения пользовательского окружения оболочки. Он обеспечивает механизм управления и переключения между наборами переменных окружения, что часто используется для настройки различных пакетов программного обеспечения, компиляторов и библиотек.
Общие сведения
| Environment Modules | |
|---|---|
| Тип | свободное и открытое программное обеспечение и пакет[d] |
| Написана на | Tcl |
| Операционная система | Unix-подобные ОС |
| Последняя версия | 5.6.0 (31 июля 2025) |
| Репозиторий | github.com/envmodules/mo… |
| Лицензия | GPLv2 |
| Сайт | modules.sourceforge.net |
Общее описание
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].
Примечания
- ↑ 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=(справка на английском) - ↑ Module 3.0 Beta 1 is out. SourceForge (4 октября 1996).
- ↑ Modules 3.1.0 almost ready. SourceForge (28 июня 2000).
- ↑ 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 года.
- ↑ NERSC Modules Software Environment (англ.). The National Energy Research Scientific Computing Center (NERSC). Office of Science — Department of Energy (7 февраля 2014). Дата обращения: 3 сентября 2025. Архивировано из оригинала 7 ноября 2012 года.
- ↑ Use of Modules for Accessing Multiple Versions of Software (англ.). Baseline Configuration. DoD High Performance Computing Modernization Program (HPCMP) (20 марта 2008). Дата обращения: 9 февраля 2014. Архивировано из оригинала 22 февраля 2014 года.
- ↑ [Modules] pure TCL implementation of module (англ.). SourceForge (29 октября 2002).
- ↑ Announcing Lmod: A new module system. SourceForge (16 октября 2008).
- ↑ Modules 4.0.0 released. SourceForge (16 октября 2017).
- ↑ New features. Read the Docs (31 июля 2025). Архивировано 3 мая 2025 года.
- ↑ module. Read the Docs (31 июля 2025). Архивировано 5 мая 2025 года.
- ↑ modulefile. Read the Docs (31 июля 2025). Архивировано 14 января 2025 года.
- ↑ Versions for environment-modules. Repology. Дата обращения: 4 сентября 2025. Архивировано 14 января 2025 года.
- ↑ Installing Modules on Unix. Read the Docs (31 июля 2025). Архивировано 3 мая 2025 года.
- ↑ Installing Modules on Windows. Read the Docs (31 июля 2025). Архивировано 3 мая 2025 года.
Ссылки
- Официальный сайт
- Репозиторий проекта
- John L. Furlani. Modules: Providing a Flexible User Environment // Proceedings of the Fifth Large Installation Systems Administration Conference (LISA V), c. 141—152, Сан-Диего, Калифорния, 30 сентября — 3 октября 1991.
- Руководство пользователя PennState Environment Modules (архив)
- Drag your design environment kicking and screaming into the '90s with Modules! — SNUB Boston 2001, Эрих Уитни (Axiowave Networks), Марк Спраг (ATI Research)
- Xsede Software Environments — научно-вычислительная инфраструктура XSEDE (NSF)
- Lmod — реализация системы модулей на Lua
- Spack — пакетный менеджер ПО для HPC
- EasyBuild — модульная система для управления сборкой и развёртыванием ПО в HPC