O comando "module load" não funciona

12

Estou tentando compilar o "Modelo Global do Clima" com os seguintes comandos.

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

Quando eu os executo, o terminal responde com command not found.

O que estou fazendo de errado? Qual é a maneira certa de fazer isso?

uzair mannan
fonte
Você pode explicar o que é o "Modelo Global do Clima"? Onde você está recebendo essas instruções?
Oli
1
Eu colocaria essa resposta em um comentário, mas não posso devido à falta de reputação :( Parece que environment-modulesnão está disponível no 12.04, mas a partir das 12.10 em diante: < packages.ubuntu.com/search?keywords=environment-modules >
tssch

Respostas:

25

Apenas para resumir os comentários e respostas anteriores e adicionar um pouco da experiência de instalação em primeira mão :

Você está procurando o modulecomando fornecido pelo pacote Environment Modules . É uma ferramenta para modificar o ambiente de shell (PATH, mas também aliases etc.) e comum a muitos clusters multiusuários, como clusters de computação de alto desempenho.

As instruções que você recebeu foram provavelmente de algum cluster HPC, pois você deseja executar um modelo climático global. Leia mais sobre módulos de ambiente no HPC aqui.

Agora, algo realmente relacionado ao Ubuntu : na verdade, não é tão difícil configurar Módulos de Ambiente no Ubuntu. Eu fiz isso em menos de 10 minutos para o Ubuntu 14.10 e o shell Bash.

Conforme mencionado em outras postagens, você pode instalar os Módulos de Ambiente a partir dos repositórios (pacote environment-modules).

Então você corre add.modules. Ele colocará algumas linhas no seu arquivo de inicialização de shell, neste 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 $*`; }

Você precisa remover o comentário da última linha e comentar ou excluir a segunda última. Esta linha define o modulecomando que você estava procurando. Ele efetivamente roda modulecmd bashmais os argumentos que você fornece.

Tenho a sensação de que essa função não é realmente muito segura, porque avalia tudo o que você fornece em seus argumentos. Alguns usuários podem talvez comentar sobre como melhorar isso.

Agora você só precisa criar um diretório contendo o chamado modulefilese adicioná-lo $MODULEPATH, por exemplo, com module use /path/to/your/modulefiles. Existem exemplos de arquivos de módulo nas interwebs.

Acho isso uma ferramenta muito útil, não apenas para clusters de multiusuários. Eu o uso para alternar entre diferentes distribuições Python.

j08lue
fonte
1
Acho que este é deve ser a resposta aceite para a questão
credondo
exemplo arquivos de módulo ligação está morto
muenalan
1
Exigir a execução de todos os usuários /usr/share/modules/bin/add.modulesparece ser inconveniente. Adicionei ". /Etc/profile.d/modules.sh" ao início do arquivo /etc/bash.bashrc Essa pode ser uma solução para usuários que têm o bash como shell de logon. Observe que isso era necessário apenas para o login da GUI. O login SSH já estava funcionando antes da alteração. O que você acha, é uma boa solução ou recomenda outra coisa?
Erik Sjölund
Eu posso ver que o pacote environment-modules mudou historicamente o método para colocar a função 'modules' no seu shell. Em um sistema Red Hat mais antigo, é necessário /etc/profile.d/modules.shque eu forneça a fonte para fornecer a função de módulos (eu costumava rpm -ql environment-modulesentender quais arquivos estavam disponíveis). No Ubuntu, isso seria dpkg-query -S /usr/share/modules- isso apenas o ajudará a entender o que o pacote fornece.
Qneill 3/05
6

Para quem "roça" (olhando para você, Seth): Esta NÃO É UMA PERGUNTA SOBRE MÓDULOS KERNEL. É uma pergunta sobre como manipular variáveis ​​de ambiente do shell usando uma ferramenta chamada ENIRONMENT-MODULES. Se você estiver familiarizado com os módulos do kernel, perceberá que não existe uma ferramenta padrão do kernel (script ou outra) chamada "module". Todas as ferramentas de manipulação de módulos abreviam o módulo como mod (lsmod, insmod, modprobe, etc). E não há módulo chamado gcc.

Environment-modules ( http://modules.sourceforge.net/ ) é mais uma ferramenta de ambiente para alternar ambientes de execução no shell. Ajuda as pessoas que precisam do Python 2.4 e Python 2.7 na mesma máquina. Ou ajuda as pessoas a gerenciar os compiladores e bibliotecas Intel v. GNU.

Infelizmente, environment-modules não é um pacote para o Ubuntu 12.04 LTS.

As opções incluem a instalação a partir do código-fonte (siga o link acima), a atualização para 14.04 LTS ou a visualização de arquivos deb. Dos três, eu instalaria da fonte. O arquivo deb depende da libtcl8.6, que está na mesma situação, indisponível no 12.04LTS.

Brian
fonte
4

Você provavelmente está tentando usar um pacote de software que não está instalado na sua máquina. Claro que não tenho muita certeza, mas meu palpite é que você está tentando usar módulos de ambiente . Se isso estiver correto, você poderá instalar módulos de ambiente a partir dos repositórios padrão do Ubuntu.

Mas lembre-se de que environment-modules é um programa bastante antigo. A página inicial observa a última atualização de uma ferramenta auxiliar a partir de 2011, o aviso de direitos autorais não vai além de 1999. Portanto, não há garantia de que este pacote de software funcione perfeitamente nas versões atuais do Ubuntu. Pode, mas você não pode ter certeza.

Henning Kockerbeck
fonte
2
É muito difícil de configurar, mas funciona extremamente bem e é um padrão de fato em clusters de multiusuários.
Emmet
0

Não é um caso de module loadnão funcionar , module loadnão é um comando padrão no Ubuntu.

Se você está tentando carregar um módulo existente, sudo modprobe <modulename>é o comando que você está procurando. E você pode usar rmmodou modprobe -rdescarregar um módulo.

Oli
fonte
Estou recebendo essas instruções de um guia do usuário do modelo global de clima "ECHAM6". As linhas acima mencionadas 'carga do módulo' são mencionadas no manual para carregar o compilador a partir do terminal ...
uzair mannan
4
Ele está tentando usar o programa de módulos de ambiente (normalmente instalado em clusters) que gerencia variáveis ​​de ambiente para diferentes compiladores, implementações de MPI, etc., e não carrega módulos do kernel.
Emmet
ele realmente existe, vamos usá-lo todos os dias em nossa empresa: P
de Bruno Pereira
moduleé uma ferramenta usada para alterar a versão da ferramenta e das bibliotecas de uma para outra, assim como virtualenv é para python, mas muda seus caminhos e variáveis ​​para refletir outras configurações, por exemplo: module load gcc-4.8 carregará gcc-4.8, module carga gcc-4.7 carregará 4.7, etc
de Bruno Pereira
0

basta adicionar isso à primeira linha do seu script. Em seguida, o comando do módulo será lido por tsch.

#!/bin/tcsh
Javad Mehrmashhadi
fonte