El sistema Environment Modules es una herramienta para ayudar a los usuarios a administrar su entorno de shell Unix o Linux , al permitir que grupos de configuraciones de variables de entorno relacionadas se realicen o eliminen dinámicamente.
Los módulos existen desde principios de la década de 1990 [1] y se utilizan en algunos de los centros informáticos más grandes [2] para implementar múltiples versiones de diferentes herramientas de software para los usuarios. El Centro Nacional de Computación Científica de Investigación Energética (NERSC) informa que utilizan módulos ambientales para administrar casi todo el software. [3] Los módulos de entorno se especifican como un requisito de configuración de referencia del Programa de modernización de informática de alto rendimiento (HPCMP) del DoD [4] Configuración de referencia del proyecto [5] equipo para los Centros de recursos de supercomputación (DSRC) del DoD participantes.
El sistema de módulos se basa en archivos de módulos, [6] que especifican grupos de configuraciones ambientales que deben realizarse juntas. Los Modulefiles se pueden instalar en una ubicación central para uso general o en un directorio de usuario para uso personal. Los archivos de módulo de los módulos de entorno están escritos en Tcl (lenguaje de comandos de herramientas) y son interpretados por el programa modulecmd a través de la interfaz de usuario del módulo [7] .
La ventaja clave de los módulos de entorno es que es independiente del shell y admite todos los shells principales, como bash, ksh, zsh, sh, tcsh y csh. La segunda ventaja clave es que permite utilizar múltiples versiones del programa o paquete desde la misma cuenta simplemente cargando el módulo adecuado. Esas dos ventajas fueron fundamentales para que los módulos de entorno formaran parte de la mayoría de las configuraciones de clústeres de HPC. También inspiró varias implementaciones alternativas, como lmod de la Universidad de Texas, que está escrita en Lua en lugar de TCL.
Los archivos de módulo se crean por aplicación y por versión. Se pueden cargar, descargar o cambiar dinámicamente. Además de la capacidad de utilizar múltiples versiones del mismo software, también se puede utilizar para implementar políticas del sitio con respecto al acceso y uso de aplicaciones.
La ruta de búsqueda de módulos predeterminada se encuentra en un archivo de configuración oculto que puede mostrar con:
$ cat ${ MODULESHOME } /init/.modulespath /etc/modulefiles # CentOS, Scientific Linux, RHEL /usr/local/Modules/modulefiles # Compilación desde el código fuente predeterminado
El directorio /etc/modulefiles utilizado por algunas distribuciones (o cualquier otro directorio) se puede utilizar después de una compilación desde el código fuente modificando el archivo ${MODULESHOME}/init/.modulespath .
El módulo ${ MODULESHOME }/modulefiles/use.own esencialmente realiza estos pasos:
mkdir $HOME /privatemodules cp ${ MODULESHOME } /modulefiles/null $HOME /privatemodules uso del módulo --append $HOME /privatemodules
Los comandos de esta sección requieren acceso de lectura/escritura/ejecución al directorio /etc/modulefiles. En su lugar, se puede usar $HOME/privatemodules u otro directorio junto con "module use --append" o la modificación del archivo de configuración especificando la ruta de búsqueda de módulos predeterminada.
El directorio de archivos de módulo predeterminado está vacío inicialmente. Copie el módulo nulo en el directorio de archivos de módulo predeterminado para que se muestre como "módulo disponible". A continuación se utilizan los módulos null y module-info para mostrar el uso de un archivo de versión dentro de una organización jerárquica y su efecto en la disponibilidad y presentación del módulo:
mkdir /etc/modulefiles/test cp ${ MODULESHOME } /modulefiles/null /etc/modulefiles/test/2.0 cp ${ MODULESHOME } /modulefiles/module-info /etc/modulefiles/test/1.0 módulo disponible módulo muestra prueba
Establezca la primera versión como predeterminada:
echo '#%Module' > /etc/modulefiles/test/.version echo 'set ModulesVersion "1.0"' >> /etc/modulefiles/test/.version módulo disponible módulo mostrar prueba módulo mostrar prueba/2.0
Cambie a la versión más nueva como predeterminada con:
rm /etc/modulefiles/test/.version echo '#%Module' > /etc/modulefiles/test/.version echo 'set ModulesVersion "2.0"' >> /etc/modulefiles/test/.version módulo disponible módulo muestra prueba
Después de lo anterior, después de una instalación nueva desde la fuente, verá:
$ módulo disponible-------------------- /usr/local/Modules/3.2.10/modulefiles ------------------ --- dot module-git module-info módulos null use.own------------------------------- /etc/modulefiles ------------------------ ---------------- prueba nula/prueba 1.0/2.0 (predeterminado)--------------------------- /home/usuario/módulosprivados ----------------- --------- nulo$ módulo mostrar prueba ---------------------------------------------- --------------------- /etc/modulefiles/test/2.0: módulo-whatis no hace absolutamente nada -------------------------------------------- -----------------------$ módulo mostrar prueba/1.0 -------------------------------------------- ----------------------- /etc/modulefiles/test/1.0:module-whatis devuelve todos los valores de información del módulo +++ module-info +++++++++++++++++++++++++++++++ banderas = 2 modo = nombre para mostrar = prueba/1.0 especificado = prueba/1.0 shell = bash tipo de shell = sh versión = prueba/1.0 usuario = seguimiento avanzado = 0 tracepat = -.* símbolos = *undef* +++ info ++++++ +++++++++++++++++++++++++++++++ nombre de host = nivel de host local = 1 cargado nulo = 0 biblioteca = /usr/local/lib /tcl8.6 nombredelejecutable = extensiónlibrecompartida = .so tclversion = 8.6 nivel de parche = 8.6.1 ++++++++++++++++++++++++++++++++++ ++++++++++++++ ----------------------------------- --------------------------------
Los módulos de entorno en las distribuciones Scientific Linux, CentOS y RHEL en el paquete de módulos de entorno incluyen scripts module.csh y module.sh para el directorio /etc/profile.d que hacen que la inicialización de los módulos forme parte de la inicialización predeterminada del shell. Una de las ventajas de los módulos de entorno es un único archivo de módulo que admite bash, ksh, zsh, sh, así como usuarios de shell tcsh y csh para la configuración e inicialización del entorno. Esto hace que la gestión de entornos complejos sea un poco menos complicada.
Para una compilación de origen, la automatización para todos los usuarios se puede configurar manualmente.
/etc/profile.d/modules.sh del archivo etc/global/profile.modules en el directorio de compilación de módulos 3.2.10.
trampa "" 1 2 3 caso " $0 " en -bash | fiesta | */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 ;; # trampa esac predeterminada 1 2 3
Copie el archivo etc/global/profile.modules del directorio de compilación de módulos 3.2.10 al directorio de inicialización del sistema:
$ sudo cp etc/global/profile.modules /etc/profile.d/modules.sh
Agregue un enlace simbólico de la versión 3.2.10 para las direcciones genéricas anteriores:
$ cd /usr/local/Modules $ sudo ln -sT 3 .2.10 predeterminado
Un enlace simbólico /etc/profile.d/modules.csh al archivo etc/global/profile.modules en el directorio de compilación de módulos 3.2.10 puede habilitar la inicialización automática de módulos para estos usuarios.
En las distribuciones de Scientific Linux, CentOS y RHEL, los módulos de entorno se encuentran en el paquete de módulos de entorno que se pueden instalar con:
sudo yum instalar módulos-entorno
Una vez instalado, la información del paquete se puede ver con:
rpm -qi módulos-de-entornorpm -ql módulos-de-entorno
En Ubuntu o sistemas que usan apt-get, los módulos de entorno se pueden instalar con:
sudo apt-get install módulos-entorno
Una vez instalado, la información del paquete se puede ver con:
dpkg -L módulos-de-entorno
Aunque la instalación desde un repositorio de distribuciones de Linux utilizando ese administrador de actualizaciones de distribuciones es la más fácil, el software se puede instalar desde la fuente. Resolver dependencias es la tarea más difícil para una instalación desde el código fuente. El ciclo típico de configuración, creación e instalación puede volverse tremendamente lento ya que cada mejora de configuración revela otra dependencia que no está disponible en su entorno predeterminado. Esta sección incluye los pasos para instalar el paquete de módulos de entorno en el código fuente, incluida la compilación de Tcl (lenguaje de comandos de herramientas) desde el código fuente como una dependencia.
Aunque los repositorios de PCLinuxOS de 64 bits incluyen Tcl (Lenguaje de comandos de herramientas), no incluyen un paquete de desarrollo con los archivos de configuración necesarios para construir módulos de entorno en Linux desde el código fuente. Al compilar Tcl desde el código fuente, los archivos necesarios estarán disponibles.
Fuente Tcl: http://sourceforge.net/projects/tcl/files/Tcl/
Extraer la fuente después de la descarga
cd /usr/local/src tar -xvzf ~/Downloads/tcl8.6.1-src.tar.gz
Configurar, crear, instalar
cd /usr/local/src/tcl8.6.1 unix/configure hacer sudo make install
Extraer la fuente después de la descarga
cd /usr/local/src tar -xvzf ~/Descargas/modules-3.2.10.tar.gz
Configurar, crear, instalar
cd /usr/local/src/modules-3.2.10 CPPFLAGS = "-DUSE_INTERP_ERRORLINE" ./configurehacersudo hacer instalar