El sistema de Módulos de entorno es una herramienta que ayuda a los usuarios a administrar su entorno de shell Unix o Linux , permitiendo crear o eliminar dinámicamente grupos de configuraciones de variables de entorno relacionadas.
Los módulos existen desde principios de los años 90 [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 de entorno para administrar casi todo el software. [3] Los módulos de entorno se especifican como un requisito de configuración de línea base del equipo de configuración de línea base del proyecto del Programa de Modernización de Computación de Alto Rendimiento (HPCMP) [ 4] del Departamento de Defensa para los Centros de Recursos de Supercomputación (DSRC) participantes del Departamento de Defensa.
El sistema de módulos se basa en archivos de módulos [6] , que especifican grupos de configuraciones de entorno que deben realizarse en conjunto. Los archivos de módulos se pueden instalar en una ubicación central para uso general o en un directorio de usuario para uso personal. Los archivos de módulos de entorno se escriben 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 principal ventaja de los módulos de entorno es que son independientes del shell y admiten todos los shells principales, como bash, ksh, zsh, sh, tcsh y csh. La segunda ventaja clave es que permite utilizar varias versiones del programa o paquete desde la misma cuenta con solo cargar el módulo adecuado. Esas dos ventajas fueron fundamentales para que los módulos de entorno fueran parte de la mayoría de las configuraciones de clúster de HPC. También inspiraron varias implementaciones alternativas, como lmod de la Universidad de Texas, que está escrito en Lua en lugar de TCL.
Los archivos de módulo se crean para cada aplicación y versión. Se pueden cargar, descargar o cambiar de forma dinámica. Además de la capacidad de usar varias versiones del mismo software, también se pueden usar para implementar políticas del sitio con respecto al acceso y uso de las aplicaciones.
La ruta de búsqueda de módulos predeterminada se encuentra en un archivo de configuración oculto que puede visualizar con:
$ cat ${ MODULESHOME } /init/.modulespath /etc/modulefiles # CentOS, Scientific Linux, RHEL /usr/local/Modules/modulefiles # Construir desde la fuente predeterminada
El directorio /etc/modulefiles utilizado por algunas distribuciones (o cualquier otro directorio) se puede usar después de una compilación desde la fuente modificando el archivo ${MODULESHOME}/init/.modulespath .
El módulo ${MODULESHOME}/modulefiles/ use.own realiza esencialmente 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 y ejecución al directorio /etc/modulefiles. Se puede utilizar el directorio $HOME/privatemodules u otro directorio junto con "module use --append" o la modificación del archivo de configuración que especifica la ruta de búsqueda de módulos predeterminada.
El directorio modulefiles predeterminado está vacío inicialmente. Copie el módulo null al directorio modulefiles predeterminado para que se muestre mediante "module avail". 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 module avail y module show:
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 mostrar prueba
Establecer 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 avail módulo mostrar prueba
Después de lo anterior y luego de una nueva instalación desde la fuente, verá lo siguiente:
$ módulo disponible-------------------- /usr/local/Modules/3.2.10/modulefiles --------------------- punto módulo-git información-del-módulo módulos null use.own------------------------------- /etc/modulefiles ------------------------------- null test/1.0 test/2.0(predeterminado)--------------------------- /home/usuario/módulosprivados -------------------------- null$ módulo mostrar prueba ------------------------------------------------------------------- /etc/modulefiles/test/2.0: module-whatis no hace absolutamente nada -------------------------------------------------------------------$ módulo mostrar prueba/1.0 ------------------------------------------------------------------- /etc/modulefiles/test/1.0:module-whatis devuelve todos los diversos valores module-info +++ module-info +++++++++++++++++++++++++++++++++++ flags = 2 mode = display name = test/1.0 specified = test/1.0 shell = bash shelltype = sh version = test/1.0 user = advanced trace = 0 tracepat = -.* symbol = *undef* +++ info ++++++++++++++++++++++++++++++++++++++++++ hostname = localhost level = 1 charged null = 0 library = /usr/local/lib/tcl8.6 nameofexecutable = sharedlibextension = .so tclversion = 8.6 patchlevel = 8.6.1 +++++++++++++++++++++++++++++++++++++++++++++ -------------------------------------------------------------------
Los módulos de entorno de las distribuciones Scientific Linux, CentOS y RHEL en el paquete environment-modules incluyen los scripts modules.csh y modules.sh para el directorio /etc/profile.d que hacen que la inicialización de los módulos sea 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 usuarios de shell bash, ksh, zsh, sh, así como 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 | bash | */bash ) . /usr/local/Módulos/predeterminado/init/bash ;; -ksh | ksh | */ksh ) . /usr/local/Módulos/predeterminado/init/ksh ;; -zsh | zsh | */zsh ) . /usr/local/Módulos/predeterminado/init/zsh ;; * ) . /usr/local/Módulos/predeterminado/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/Módulos $ 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 Scientific Linux, CentOS y RHEL, los módulos de entorno se encuentran en el paquete environment-modules que se puede instalar con:
sudo yum install módulos de entorno
Una vez instalado el paquete la información se puede visualizar con:
rpm -qi módulos de entornorpm -ql módulos de entorno
En Ubuntu o sistemas que utilizan apt-get, los módulos de entorno se pueden instalar con:
sudo apt-get install módulos de entorno
Una vez instalado el paquete la información se puede visualizar con:
dpkg -L módulos de entorno
Aunque la instalación desde un repositorio de distribuciones Linux utilizando el administrador de actualizaciones de esa distribución es la más sencilla, el software se puede instalar desde el código 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 dolorosamente 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 crear módulos de entorno en Linux desde el código fuente. Al crear Tcl desde el código fuente, los archivos necesarios estarán disponibles.
Fuente Tcl: http://sourceforge.net/projects/tcl/files/Tcl/
Extraer el código fuente después de descargar
cd /usr/local/src tar -xvzf ~/Descargas/tcl8.6.1-src.tar.gz
Configurar, hacer, instalar
cd /usr/local/src/tcl8.6.1 unix/configure hacer sudo hacer instalar
Extraer el código fuente después de descargar
cd /usr/local/src tar -xvzf ~/Descargas/modulos-3.2.10.tar.gz
Configurar, hacer, instalar
cd /usr/local/src/modules-3.2.10 CPPFLAGS = "-DUSE_INTERP_ERRORLINE" ./configurehacersudo make install