El sistema de Módulos de Entorno es una herramienta de software diseñada para ayudar a los usuarios a modificar dinámicamente su entorno de shell . Proporciona un mecanismo para administrar y alternar entre conjuntos de configuraciones de variables de entorno , que se utilizan a menudo para configurar diferentes paquetes de software, compiladores y bibliotecas.
Descripción general
Los módulos de entorno permiten a los usuarios configurar dinámicamente su entorno de shell sin alterar permanentemente los scripts de inicio de sesión. Esto es especialmente útil en entornos de computación de alto rendimiento (HPC), donde los usuarios pueden necesitar acceder a múltiples versiones de la misma aplicación. Los usuarios cargan y descargan scripts llamados archivos de módulo para modificar variables de entorno como PATH o LD_LIBRARY_PATH .
Environment Modules es independiente del intérprete de comandos y admite todos los principales intérpretes de comandos de Unix ( Bash , ksh , Zsh , Fish , sh , tcsh y csh ), intérpretes de comandos de Windows ( CMD.EXE y PowerShell ) y varios lenguajes de scripting ( Perl , Python , Ruby , Tcl , CMake y R ).
Los módulos de entorno gestionan todo tipo de elementos que forman parte del entorno del shell, incluidas las variables de entorno , los alias del shell , las funciones del shell y el autocompletado de la línea de comandos .
Historia
Environment Modules fue desarrollado por primera vez a principios de la década de 1990 [ 1 ] por John L. Furlani en Sun Microsystems . La versión 1 se desarrolló como scripts de shell puros. Con la versión 2, Environment Modules se convirtió en un programa C que evaluaba archivos de módulo escritos en Tcl .
A mediados de la década de 1990, Peter W. Osel de Siemens y Jens Hamisch de Strawberry lanzaron la versión 3.0beta. [ 2 ] RK Owen del Centro Nacional de Computación Científica para la Investigación Energética (NERSC) se hizo cargo del proyecto a finales de la década de 1990 y lo adaptó a Linux . Lanzó la versión 3.1 en 2000 bajo la Licencia Pública General GNU (GPL). [ 3 ]
Durante la década de 2000, los módulos de entorno ganaron terreno en el mundo de la computación de alto rendimiento (HPC) y comenzaron a utilizarse en los centros de computación más grandes. [ 4 ] [ 5 ] Los módulos de entorno se especificaron como un requisito de configuración base del Programa de Modernización de Computación de Alto Rendimiento (HPCMP) del Departamento de Defensa . [ 6 ]
En 2004, Mark Lakata de MIPS Technologies desarrolló una reimplementación pura en Tcl de Environment Modules. [ 7 ] El mantenimiento de esta versión alternativa fue continuado posteriormente por Kent Mein en la Universidad de Minnesota .
En 2008, Robert McLay del Centro de Computación Avanzada de Texas (TACC) presentó Lmod, [ 8 ] un proyecto de implementación alternativa de módulos de entorno escritos en Lua .
Tras el lanzamiento de la versión 3.2.10 en diciembre de 2012, se interrumpió el desarrollo de la implementación en C de los módulos de entorno. En los años siguientes, el proyecto Lmod ganó popularidad dentro de la comunidad de computación de alto rendimiento (HPC) .
En 2017, la dirección del proyecto Environment Modules pasó a manos de Xavier Delaruelle, de la Comisión Francesa de Energías Alternativas y Energía Atómica (CEA). Delaruelle lanzó la versión 4, basada en la implementación pura en Tcl , que se adaptó para mantener la compatibilidad con la versión anterior en C. [ 9 ] Desde entonces, se han introducido nuevas características periódicamente para mejorar la usabilidad y ampliar la funcionalidad. [ 10 ]
En 2025, Modules se convirtió en un proyecto de la Linux Foundation que forma parte de la High Performance Software Foundation (HPSF). [ 11 ]
Arquitectura
Los módulos de entorno proporcionan el comando modulecmd.tcl junto con una función de shell o alias llamado module . [ 12 ] El comando interpreta los archivos de módulo , [ 13 ] scripts escritos en Tcl que definen modificaciones del entorno, y produce el código de shell correspondiente. La función de shell o alias evalúa este código para actualizar la sesión de shell actual según corresponda.
Un archivo de módulo normalmente modifica variables de entorno como PATH , MANPATH o LD_LIBRARY_PATH . El siguiente ejemplo muestra un archivo de módulo simple para un paquete de software de muestra:
#%Módulo module-whatis { Versión de software de ejemplo 1.2 }establecer raíz / usr / local /example-1.2anteponer-path PATH $root / bin anteponer-path LD_LIBRARY_PATH $root / lib añadir - path MANPATH $root / man Los archivos de módulo se organizan en directorios conocidos como rutas de módulo . Estas rutas de módulo se pueden gestionar de forma centralizada para proporcionar acceso a todo el sistema o ubicarse en directorios personales para configuraciones específicas del usuario.
Los usuarios pueden:
- Cargar un archivo de módulo (es decir, aplicar los cambios de entorno definidos) usando la carga de módulos.
- Descarga un archivo de módulo (es decir, deshaz sus cambios de entorno) con module unload.
- Cambia entre archivos de módulo usando el interruptor de módulo.
- Ver los archivos de módulo disponibles con module avail
- Muestra el contenido de un archivo de módulo usando la visualización de módulos.
- Lista los archivos de módulo cargados actualmente con la lista de módulos.
- Guarda los archivos de módulo cargados actualmente en una colección usando module save.
- Restaurar el entorno descrito por una colección con el módulo restore
- Habilitar una ruta de módulo con uso de módulo
Ejemplos de uso
Cree archivos de módulo de ejemplo en una ruta de módulo específica del usuario:
$ mkdir -p $HOME /privatemodules/test $ echo '#%Module' > $HOME /privatemodules/test/1.0 $ echo '#%Module' > $HOME /privatemodules/test/2.0 $ module use $HOME /privatemodules Visualización de los módulos disponibles:
$ module avail ---- /home/user/privatemodules --------------------------- test/1.0 test/2.0---- /usr/share/Modules/modulefiles ------------------------ punto module-git module-info modules null use.ownCargando un módulo:
$ prueba de carga del módulo /2.0 Lista de módulos cargados:
$ lista de módulos Archivos de módulo cargados actualmente: 1) test/2.0Cambiando de versión:
$ módulo switch test/2.0 test/1.0 Descargando todos los módulos cargados:
$ purga del móduloDefina una versión predeterminada para el módulo de prueba de muestra :
$ echo '#%Module' > $HOME /privatemodules/test/.modulerc $ echo 'module-version test/1.0 default' >> $HOME /privatemodules/test/.modulerc Cargar módulo de prueba predeterminado:
$ module load test $ module list Archivos de módulo cargados actualmente: 1) test/1.0Disponibilidad
Environment Modules se distribuye en una amplia gama de sistemas operativos Linux y Unix . [ 14 ] Está disponible bajo el nombre de paquete environment-modules en Debian , Ubuntu , Red Hat Enterprise Linux y Fedora . El software también se distribuye para macOS a través del proyecto Homebrew , y existe una versión para sistemas Windows . Cuando no se proporcionan distribuciones preempaquetadas, el proyecto ofrece el código fuente y la documentación para facilitar la instalación y configuración manual. [ 15 ] [ 16 ]
Referencias
- ↑ Furlani, John L. (30 de septiembre - 3 de octubre de 1991). "Módulos: Proporcionando un entorno de usuario flexible" (PDF) . Actas de la Quinta Conferencia de Administración de Sistemas de Grandes Instalaciones (LISA V) . San Diego, CA: 141-152 . Consultado el 9 de febrero de 2014 .
- ↑ "Ya está disponible la versión beta 1 del módulo 3.0" . SourceForge . 4 de octubre de 1996.
- ↑ "Módulos 3.1.0 casi listos" . SourceForge . 28 de junio de 2000.
- ↑ "Descripción de los módulos Kraken de soporte al usuario de NICS" . Instituto Nacional de Ciencias Computacionales (NICS) . Laboratorio Nacional de Oak Ridge - Departamento de Energía. 22 de mayo de 2011. Archivado del original el 22 de febrero de 2014. Consultado el 9 de febrero de 2014 .
- ↑ "Entorno de software de módulos NERSC" . Centro Nacional de Computación Científica para la Investigación Energética (NERSC) . Oficina de Ciencia - Departamento de Energía. 7 de febrero de 2014. Archivado del original el 7 de noviembre de 2012. Consultado el 3 de septiembre de 2025 .
- ↑ "Uso de módulos para acceder a múltiples versiones de software" . Configuración básica . Programa de modernización de computación de alto rendimiento del Departamento de Defensa (HPCMP). 20 de marzo de 2008. Archivado del original el 22 de febrero de 2014. Consultado el 9 de febrero de 2014 .
- ↑ "Implementación pura en TCL del módulo" . SourceForge . 29 de octubre de 2002.
- ↑ "Presentamos Lmod: Un nuevo sistema de módulos" . SourceForge . 16 de octubre de 2008.
- ↑ "Módulos 4.0.0 publicados" . SourceForge . 16 de octubre de 2017.
- ↑ "Nuevas funciones" . Consulta la documentación . 25 de noviembre de 2025.
- ↑ "La High Performance Software Foundation da la bienvenida a los módulos como proyecto HPSF" . HPSF . 10 de noviembre de 2025.
- ↑ "módulo" . Lea la documentación . 25 de noviembre de 2025.
- ↑ "archivo de módulo" . Lea la documentación . 25 de noviembre de 2025.
- ↑ "Versiones para módulos de entorno" . Repology . Consultado el 4 de septiembre de 2025 .
- ↑ "Instalación de módulos en Unix" . Lea la documentación . 25 de noviembre de 2025.
- ↑ "Instalación de módulos en Windows" . Lea la documentación . 25 de noviembre de 2025.
Enlaces externos
- Sitio web oficial
- módulos en GitHub
- John L. Furlani, Módulos: Proporcionando un entorno de usuario flexible. Actas de la Quinta Conferencia de Administración de Sistemas de Grandes Instalaciones (LISA V) , págs. 141-152, San Diego, CA, 30 de septiembre - 3 de octubre de 1991.
- Guía del usuario de los módulos ambientales de PennState
- ¡Lleva tu entorno de diseño a los años 90 a la fuerza con Modules! - SNUB Boston 2001 - Erich Whitney, Axiowave Networks, Mark Sprague, ATI Research
- Entornos de software Xsede . El entorno extremo para el descubrimiento de ciencia e ingeniería — Fundación Nacional de Ciencias
- cmod ― Implementación alternativa en C desarrollada en la década de 1990
- Lmod : sistema de módulos basado en Lua
- Spack : gestor de paquetes flexible para software HPC.
- EasyBuild ― Marco de compilación e instalación de software para gestionar software en sistemas HPC
- Software libre programado en Tcl.
- Software Unix
- Software científico
- Administración del sistema
- Software que utiliza la Licencia Pública General de GNU.