Módulos del Entorno
Introducción
Cuando se tienen varios programas que cumplen la misma función (por ejemplo, servidores SMTP como sendmail, exim y postfix; o servidores de impresión como lprng y cups), es habitual utilizar alternativas. Las alternativas permiten tener instalados simultáneamente varios tipos de software que cumplen la misma función y que comandos como mail y lpr apunten a las versiones deseadas.
Sin embargo, cuando hay múltiples variantes que cada una sirve las necesidades de algún usuario y por tanto debe estar disponible simultáneamente por los usuarios, las alternativas del sistema simplemente no es suficiente ya que es por todo el sistema. Esto ha sido realmente en supercomputación y clúster para eones, y múltiples implementaciones de una solución ha sido desarrollada: módulos de entorno y Lmod. Actualmente Fedora emplea esto primariamente para manipular interruptores entre diferentes implementaciones de MPI.
Los módulos de entorno también son útiles cuando un paquete desea instalar binarios que usan nombres comunes y podrían generar conflictos con el archivo /usr/bin o contaminarlo. Es necesario cargar un módulo de entorno antes de poder usar esos programas.
Uso de módulos de entorno
Para ver los módulos disponibles, ejecute $ module avail. Para cargar un módulo, ejecute, por ejemplo, $ module load mpi/openmpi-x86_64. Para descargar un módulo, ejecute, por ejemplo, $module unload mpi/openmpi-x86_64.
La documentación actual para el comando del módulo está disponible aquí o con man module.
Creación de módulos de entorno
Para instalar un módulo de entorno, coloque un archivo de módulo en %{_modulesdir}, el cual evaluaría /usr/share/modulefiles. Esta macro está disponible en Fedora y EPEL 7+. El directorio /usr/share/Modules/modulefiles está para utilizarse solo para módulos internos de environment-modules. /etc/modulefiles está disponible para el uso de administrador del sistema local.
Los archivos del módulo son texto simple con sintaxis tcl opcional, por ejemplo, un módulo de entorno para OpenMPI de 64-bit mpi/openmpi-x86_64:
#%Module 1.0 # # Módulo OpenMPI para utilizar con el paquete 'environment-modules': # conflict mpi prepend-path PATH /usr/lib64/openmpi/bin prepend-path LD_LIBRARY_PATH /usr/lib64/openmpi/lib prepend-path PYTHONPATH /usr/lib64/python2.7/site-packages/openmpi prepend-path MANPATH /usr/share/man/openmpi-x86_64 setenv MPI_BIN /usr/lib64/openmpi/bin setenv MPI_SYSCONFIG /etc/openmpi-x86_64 setenv MPI_FORTRAN_MOD_DIR /usr/lib64/gfortran/modules/openmpi-x86_64 setenv MPI_INCLUDE /usr/include/openmpi-x86_64 setenv MPI_LIB /usr/lib64/openmpi/lib setenv MPI_MAN /usr/share/man/openmpi-x86_64 setenv MPI_PYTHON_SITEARCH /usr/lib64/python2.7/site-packages/openmpi setenv MPI_COMPILER openmpi-x86_64 setenv MPI_SUFFIX _openmpi setenv MPI_HOME /usr/lib64/openmpi
El archivo del módulo comienza con la cookie mágica +#%Module +, donde `es la versión del archivo del módulo utilizada. La versión actual es la 1.0.
Los comandos anteriores anteponen la ruta con el bindir de OpenMPI de 64 bits (compilado con GCC) y añaden la ruta de la biblioteca correspondiente. A continuación, configuran diversas variables de entorno.
También es posible configurar CFLAGS y LDFLAGS de la manera descrita anteriormente, pero en el caso de compiladores MPI no es necesario, ya que se invocan con los envoltorios mpicc, mpicxx, mpif77 y mpif90, que ya contienen las rutas de inclusión y biblioteca necesarias. Además, en el caso de paquetes de desarrollo, no es recomendable anular CFLAGS o LDFLAGS, ya que podría causar problemas al compilar RPM al anular %{optflags}.
La documentación ascendente para los archivos de módulo está disponible en aquí o con man modulefile.
Cambiar entre implementaciones de módulos
El cambio entre los módulos de entorno y las implementaciones de Lmod se realiza mediante alternativas. Los scripts de inicio del shell /etc/profile.d/modules.\{csh,sh} son enlaces a /etc/alternatives/modules.\{csh.sh} y pueden manipularse con el comando alternativo.
Lmod
Lmod es una implementación de módulos de entorno escrita en Lua y puede usar archivos de módulo escritos tanto en Lua como en Tcl. Estos archivos tienen la extensión ".lua". Sin embargo, estos archivos no deben instalarse en /usr/share/modulefiles para evitar problemas al usar el paquete environment-modules. En su lugar, instálelos en %{_datadir}/lmod/lmod/modulefiles/Core.
Want to help? Learn how to contribute to Fedora Docs ›