Il comando "module load" non funziona


12

Sto cercando di compilare il "Modello climatico globale" con i seguenti comandi.

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

Quando li eseguo, il terminale risponde con command not found.

Che cosa sto facendo di sbagliato? Qual è il modo giusto per farlo?


Puoi spiegare cos'è il "modello climatico globale"? Dove stai ricevendo quelle istruzioni?
Oli

1
Avrei inserito questa risposta in un commento, ma non posso a causa della mancanza di reputazione :( Sembra che environment-modulesnon sia disponibile in 12.04, ma dal 12.10 in poi: < pacchetti.ubuntu.com/search?keywords=environment-modules >
martedì

Risposte:


25

Giusto per riassumere i commenti e le risposte precedenti e aggiungere un po 'di prima mano esperienza di installazione:

Stai cercando il modulecomando fornito dal pacchetto Moduli Ambiente . È uno strumento per modificare l'ambiente di shell (PATH ma anche alias ecc.) E comune a molti cluster multiutente come i cluster di elaborazione ad alte prestazioni.

Le istruzioni che hai ricevuto probabilmente provenivano da alcuni cluster HPC, poiché desideri eseguire un modello climatico globale. Maggiori informazioni sui moduli di ambiente su HPC qui.

Ora per qualcosa in realtà legato a Ubuntu : in realtà non è poi così difficile impostare i moduli di ambiente sotto Ubuntu. L'ho fatto in meno di 10 minuti per Ubuntu 14.10 e la shell Bash.

Come menzionato in altri post, è possibile installare i moduli di ambiente dai repository (pacchetto environment-modules).

Quindi corri add.modules. Inserirà alcune righe nel file di inizializzazione della shell, in questo 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 $*`; }

Devi decommentare l'ultima riga e commentare o eliminare la penultima. Questa riga definisce il modulecomando che stavi cercando. Funziona efficacemente modulecmd bashpiù gli argomenti che gli dai.

Ho la sensazione che questa funzione in realtà non sia molto sicura perché valuta qualsiasi cosa tu le fornisca nei suoi argomenti. Alcuni utenti possono forse commentare come migliorarlo.

Ora devi solo creare una directory contenente il cosiddetto modulefilese aggiungerlo $MODULEPATH, ad esempio con module use /path/to/your/modulefiles. Ci sono esempi di file di moduli là fuori negli interwebs.

Lo trovo uno strumento molto utile non solo per i cluster multiutente. Lo uso per passare tra diverse distribuzioni Python.


1
Penso che questa dovrebbe essere la risposta accettata alla domanda
credondo

il link dei file del modulo di esempio è morto
muenalan,


1
Richiedere l'esecuzione di ogni utente /usr/share/modules/bin/add.modulessembra essere scomodo. Ho aggiunto ". /Etc/profile.d/modules.sh" all'inizio del file /etc/bash.bashrc Potrebbe essere una soluzione per gli utenti che hanno bash come shell di accesso. Nota, questo era necessario solo per l'accesso alla GUI. L'accesso SSH funzionava già prima della modifica. Cosa ne pensi, è una buona soluzione o mi consiglia qualcos'altro?
Erik Sjölund,

Vedo che il pacchetto environment-modules ha storicamente cambiato il metodo per inserire la funzione 'modules' nella tua shell. Su un vecchio sistema Red Hat, /etc/profile.d/modules.shdevo procurarmi il sorgente per fornire la funzione dei moduli (ho usato rpm -ql environment-modulesper capire quali file erano disponibili). Su Ubuntu, sarebbe dpkg-query -S /usr/share/modules- che ti aiuterà a capire cosa offre il pacchetto.
qneill

6

Per coloro che "scremano" (guardandoti Seth): NON È UNA DOMANDA SUI MODULI DI KERNEL. È una domanda sulla manipolazione delle variabili di ambiente shell utilizzando uno strumento chiamato ENIRONMENT-MODULES. Se hai familiarità con i moduli del kernel, ti renderai conto che non esiste uno strumento del kernel standard (script o altro) chiamato "modulo". Tutti gli strumenti di manipolazione del modulo abbreviano modulo come mod (lsmod, insmod, modprobe, ecc.). E non esiste un modulo chiamato gcc.

Environment-module ( http://modules.sourceforge.net/ ) è un altro strumento ambientale per cambiare gli ambienti di esecuzione nella shell. Aiuta le persone che hanno bisogno di Python 2.4 e Python 2.7 sulla stessa macchina. Oppure aiuta le persone a gestire compilatori e librerie Intel v. GNU.

Sfortunatamente, i moduli di ambiente non sono un pacchetto per Ubuntu 12.04 LTS.

Le opzioni includono l'installazione dal sorgente (segui il link sopra), l'aggiornamento a 14.04 LTS o la visualizzazione dei file deb. Dei tre, installerei dalla fonte. Il file deb dipende da libtcl8.6, che è nella stessa situazione, non disponibile su 12.04LTS.


4

Probabilmente stai cercando di utilizzare un pacchetto software che non è installato sul tuo computer. Ovviamente non posso esserne sicuro, ma la mia ipotesi sarebbe che tu stia provando a usare i moduli di ambiente . Se ciò è corretto, è possibile installare moduli ambiente dai repository Ubuntu standard.

Ma attenzione: i moduli di ambiente sono un programma piuttosto vecchio. La homepage rileva l'ultimo aggiornamento di uno strumento di supporto a partire dal 2011, la nota sul copyright non va oltre il 1999. Quindi non c'è garanzia che questo pacchetto software funzioni perfettamente con le attuali versioni di Ubuntu. Potrebbe, ma non puoi esserne sicuro.


2
È una vera seccatura da configurare, ma funziona estremamente bene ed è di fatto uno standard per i cluster multiutente.
Emmet

0

Non si tratta di module loadnon funzionare , module loadnon è un comando standard in Ubuntu.

Se stai cercando di caricare un modulo esistente, sudo modprobe <modulename>è il comando che stai cercando. E puoi usare rmmodo modprobe -rscaricare un modulo.


Oli, sto ricevendo queste istruzioni da una guida per l'utente del modello climatico globale "ECHAM6". Le righe "modulo load" sopra menzionate sono menzionate nel manuale per caricare il compilatore dal terminale ...
uzair mannan

4
Sta cercando di utilizzare il programma dei moduli di ambiente (in genere installato su cluster) che gestisce le variabili di ambiente per diversi compilatori, implementazioni MPI, ecc. Non per caricare i moduli del kernel.
Emmet

in realtà esiste, lo usiamo tutti i giorni nella nostra azienda: P
Bruno Pereira

moduleè uno strumento usato per cambiare la versione degli strumenti e delle librerie dall'una all'altra, proprio come virtualenv è in python, ma cambia invece i tuoi percorsi e variabili per riflettere altre configurazioni, ad esempio: modulo load gcc-4.8 caricherà gcc-4.8, module load gcc-4.7 caricherà 4.7, etc
Bruno Pereira

0

aggiungilo semplicemente alla prima riga del tuo script. Quindi il comando del modulo verrà letto da tsch.

#!/bin/tcsh
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.