El comando "módulo de carga" no funciona

12

Estoy tratando de compilar el "Modelo climático global" con los siguientes comandos.

module unload pgi gcc
module load gcc/4.6.3 pgi/11.8

Cuando los ejecuto, el terminal responde con command not found.

¿Qué estoy haciendo mal? ¿Cuál es la forma correcta de hacer esto?

uzair mannan
fuente
¿Puedes explicar qué es el "Modelo Climático Global"? ¿De dónde sacas esas instrucciones?
Oli
1
Hubiera puesto esta respuesta en un comentario, pero no puedo debido a la falta de reputación :( Parece que environment-modulesno está disponible en 12.04, pero a partir de 12.10 en adelante: < packages.ubuntu.com/search?keywords=environment-modules >
tssch

Respuestas:

25

Solo para resumir los comentarios y respuestas anteriores y agregar un poco de experiencia de instalación de primera mano :

Está buscando el modulecomando proporcionado por el paquete de Módulos de entorno . Es una herramienta para modificar el entorno de shell (PATH pero también alias, etc.) y común a muchos clústeres multiusuario como los clústeres de computación de alto rendimiento.

Las instrucciones que recibió probablemente provenían de algún clúster de HPC, ya que desea ejecutar un modelo climático global. Lea más sobre los módulos de entorno en HPC aquí.

Ahora, para algo relacionado con Ubuntu : en realidad no es tan difícil configurar módulos de entorno en Ubuntu. Lo hice en menos de 10 minutos para Ubuntu 14.10 y el shell Bash.

Como se menciona en otras publicaciones, puede instalar módulos de entorno desde los repositorios (paquete environment-modules).

Entonces corres add.modules. Pondrá algunas líneas en su archivo de inicialización de shell, en este caso ~/.bashrc:

case "$0" in
          -sh|sh|*/sh)  modules_shell=sh ;;
       -ksh|ksh|*/ksh)  modules_shell=ksh ;;
       -zsh|zsh|*/zsh)  modules_shell=zsh ;;
    -bash|bash|*/bash)  modules_shell=bash ;;
esac
module() { eval `/usr/Modules/$MODULE_VERSION/bin/modulecmd $modules_shell $*`; }
#module() { eval `/usr/bin/modulecmd $modules_shell $*`; }

Debe descomentar la última línea y comentar o eliminar la penúltima. Esta línea define el modulecomando que estaba buscando. Efectivamente se ejecuta modulecmd bashmás los argumentos que le das.

Tengo la sensación de que esta función en realidad no es muy segura porque evalúa todo lo que le proporcionas en sus argumentos. Algunos usuarios tal vez puedan comentar sobre cómo mejorar esto.

Ahora solo necesita crear un directorio que contenga el llamado modulefilesy agregarlo $MODULEPATH, por ejemplo, con module use /path/to/your/modulefiles. Hay ejemplos de archivos de módulos en las interwebs.

Considero que esta es una herramienta muy útil, no solo para clústeres de usuarios múltiples. Lo uso para cambiar entre diferentes distribuciones de Python.

j08lue
fuente
1
Creo que esta debería ser la respuesta aceptada a la pregunta
credondo
el enlace de archivos de módulo de ejemplo está muerto
muenalan
1
Requerir que cada usuario ejecute /usr/share/modules/bin/add.modulesparece ser un inconveniente. Agregué ". /Etc/profile.d/modules.sh" al comienzo del archivo /etc/bash.bashrc. Esa podría ser una solución para los usuarios que tienen bash como su shell de inicio de sesión. Tenga en cuenta que esto solo era necesario para iniciar sesión en la GUI. SSH-login ya estaba funcionando antes del cambio. ¿Qué crees que es una buena solución o recomiendas algo más?
Erik Sjölund
Puedo ver que el paquete de módulos de entorno ha cambiado históricamente el método para obtener la función 'módulos' en su shell. En un sistema Red Hat más antiguo, es /etc/profile.d/modules.shnecesario que obtenga la función de los módulos (solía rpm -ql environment-modulesentender qué archivos estaban disponibles). En Ubuntu, eso sería dpkg-query -S /usr/share/modules, eso solo lo ayudará a comprender lo que proporciona el paquete.
qneill
6

Para aquellos que "leen" (mirándote, Seth): NO ES UNA PREGUNTA SOBRE LOS MÓDULOS DE KERNEL. Se trata de manipular variables de entorno de shell utilizando una herramienta llamada ENIRONMENT-MODULES. Si está familiarizado con los módulos del núcleo, se dará cuenta de que no existe una herramienta estándar del núcleo (script o de otro tipo) llamada "módulo". Todas las herramientas de manipulación de módulos abrevian el módulo como mod (lsmod, insmod, modprobe, etc.). Y no hay ningún módulo llamado gcc.

Environment-modules ( http://modules.sourceforge.net/ ) es otra herramienta de entorno para cambiar entornos de ejecución en el shell. Ayuda a las personas que necesitan Python 2.4 y Python 2.7 en la misma máquina. O ayuda a las personas a administrar compiladores y bibliotecas Intel v. GNU.

Desafortunadamente, environment-modules no es un paquete para Ubuntu 12.04 LTS.

Las opciones incluyen la instalación desde la fuente (siga el enlace anterior), la actualización a 14.04 LTS o la búsqueda de archivos deb. De los tres, instalaría desde la fuente. El archivo deb depende de libtcl8.6 que está en la misma situación, no disponible en 12.04LTS.

Brian
fuente
4

Probablemente esté intentando utilizar un paquete de software que no esté instalado en su máquina. Por supuesto, no puedo estar seguro, pero supongo que estás tratando de usar módulos de entorno . Si eso es correcto, puede instalar módulos de entorno desde los repositorios estándar de Ubuntu.

Pero tenga en cuenta que los módulos de entorno es un programa bastante antiguo. La página de inicio señala la última actualización de una herramienta auxiliar a partir de 2011, el aviso de copyright no va más allá de 1999. Por lo tanto, no hay garantía de que este paquete de software funcione sin problemas con las versiones actuales de Ubuntu. Podría, pero no puedes estar seguro.

Henning Kockerbeck
fuente
2
Es un gran problema configurarlo, pero funciona extremadamente bien y es un estándar de facto en clústeres multiusuario.
Emmet
0

No es un caso de module loadno funcionar , module loadno es un comando estándar en Ubuntu.

Si está intentando cargar un módulo existente, sudo modprobe <modulename>es el comando que está buscando. Y puede usar rmmodo modprobe -rdescargar un módulo.

Oli
fuente
Oli estoy recibiendo estas instrucciones de una guía de usuario del modelo climático global "ECHAM6". Las líneas mencionadas anteriormente 'carga del módulo' se mencionan en el manual para cargar el compilador desde el terminal ...
uzair mannan
44
Está tratando de usar el programa de módulos de entorno (normalmente instalado en clústeres) que gestiona las variables de entorno para diferentes compiladores, implementaciones de MPI, etc., no para cargar módulos del núcleo.
Emmet
en realidad existe, lo usamos todos los días en nuestra empresa: P
Bruno Pereira
modulees una herramienta utilizada para cambiar la herramienta y la versión de libs de una a otra, al igual que virtualenv es a python, pero en cambio cambia sus rutas y variables para reflejar otras configuraciones, por ejemplo: módulo de carga gcc-4.8 cargará gcc-4.8, módulo cargar gcc-4.7 cargará 4.7, etc.
Bruno Pereira
0

simplemente agregue esto a la primera línea de su script. Entonces el comando del módulo será leído por tsch.

#!/bin/tcsh
Javad Mehrmashhadi
fuente