Como definir o caminho para o MPICH para SSH?

1

Eu tenho teses de doutorado e sigo os passos deste manual: Construindo um Cluster de Beowulf em apenas 13 passos .

Eu tenho um problema com o passo 11:

Now we'll define the path to MPICH for SSH. Run the following command:

sudo echo /home/mpiuser/mpich1/bin >> /etc/environment

Mas o comando acima retorna esta saída:

bash: /etc/environment: Permission denied

Como resolver este problema?

    
por Stanislav 03.03.2017 / 12:51

1 resposta

1

Seu comando não funciona porque o redirecionamento da saída ( > / >> ) não é executado pelo sudo. Existem várias maneiras de resolver isso. Por exemplo:

  • Você pode usar canal ( | ) e executar por sudo tee com --append opção:

    echo /home/mpiuser/mpich1/bin | sudo tee -a /etc/environment
    
  • Outra abordagem é executar o comando inteiro como sudo :

    sudo bash -c 'echo /home/mpiuser/mpich1/bin >> /etc/environment'
    

Em resultado, o conteúdo de /etc/environment será parecido com:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
/home/mpiuser/mpich1/bin

Referências:


EDIT 1:

No entanto, acho que esta nova linha em /etc/environment não fará nada por si só. Para ter algum significado, este "caminho" deve ser anexado ao valor de $PATH envvar.

Documentação do Ubuntu diz que :

Variable expansion does not work in /etc/environment.

Então, para acrescentar /home/mpiuser/mpich1/bin ao valor de $PATH , via comando único, você pode usar este:

cat /etc/environment | sed 's/\"$/:\/home\/mpiuser\/mpich1\/bin\"/' | sudo tee /etc/environment

Onde: (1) cat /etc/environment imprimirá o conteúdo do arquivo; (2) sed '...' substituirá a última marca de aspas ( " ) por :/home/mpiuser/mpich1/bin" ; (3) sudo tee /etc/environment irá reescrever o arquivo.

Em resultado, o conteúdo de /etc/environment será parecido com:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/mpiuser/mpich1/bin"

Por favor, vá até o final.

Referências:


EDIT 2:

Eu fiz uma pequena pesquisa e encontrei alguns conselhos como isso :

However, if you need to set that environment variable for all users, I would still not recommend touching /etc/environment but creating a file with the file name ending in .sh in /etc/profile.d. The /etc/profile script and all scripts in /etc/profile.d are the global equivalent of each user's personal ~/.profile and executed as regular shell scripts by all shells during their initialization.

E isso :

Please avoid modifing system files. Instead you should place an executable script in /etc/profile.d (scripts in here got executed for every user) to change $PATH value.

De acordo com esses avisos, vamos supor que você queira criar um arquivo chamado mpich-path.sh , que é colocado no diretório /etc/profile.d/ . Isso pode ser feito pelo comando:

echo 'export PATH="$PATH:/home/mpiuser/mpich1/bin"' | sudo tee /etc/profile.d/mpich-path.sh

Em resultado, o conteúdo do novo arquivo /etc/profile.d/mpich-path.sh será assim:

export PATH="$PATH:/home/mpiuser/mpich1/bin"

Efetue logout e login novamente no sistema e digite echo $PATH para verificar o resultado.


EDIT 3:

Eu não sei sobre as outras etapas do manual que você segue, mas além da etapa 11, a etapa 10 também não parece completamente clara.

Esta parte:

export PATH=/home/mpiuser/mpich1/bin:$PATH    # assigns a new value and exports the variable
export PATH                                   # exports the variable

deve ser:

PATH=/home/mpiuser/mpich1/bin:$PATH           # assigns a new value
export PATH                                   # exports the variable

ou apenas:

export PATH=/home/mpiuser/mpich1/bin:$PATH    # assigns a new value and exports the variable

E ele produzirá o mesmo resultado do passo 11. Portanto, essa parte é desnecessária.

A novidade aqui é essa parte:

LD_LIBRARY_PATH="/home/mpiuser/mpich1/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH

Mas, talvez, ele possa ser incluído no arquivo - /etc/profile.d/mpich-path.sh - que criamos acima.

    
por pa4080 03.03.2017 / 13:34