web-dev-qa-db-fra.com

Comment définir le chemin vers MPICH pour SSH?

J'ai une thèse de diplôme et suis les étapes de ce manuel: Construire un cluster Beowulf en seulement 13 étapes .

J'ai un problème avec l'étape 11:

Nous allons maintenant définir le chemin vers MPICH pour SSH. Exécutez la commande suivante:

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

Mais la commande ci-dessus renvoie cette sortie:

bash: /etc/environment: Permission denied

Comment résoudre ce problème?

1
Stanislav

Votre commande ne fonctionne pas car la redirection de la sortie (>/>>) n'est pas interprété par Sudo. Il existe plusieurs façons de résoudre ce problème. Par exemple:

  • Vous pouvez utiliser pipe (|) et effectuée par Sudotee commande avec --append option:

    echo /home/mpiuser/mpich1/bin | Sudo tee -a /etc/environment
    
  • Une autre approche consiste à exécuter la commande entière en tant que Sudo:

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

En conséquence, le contenu de /etc/environment ressemblera à quelque chose comme:

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

Les références:


ÉDITER 1:


Cependant, je pense que cette nouvelle ligne dans /etc/environment ne fera rien par lui-même. Pour avoir un sens, ce "chemin" doit être ajouté à la valeur de $PATH envvar.

Documentation Ubuntu dit que :

L'expansion variable ne fonctionne pas dans /etc/environment.

Donc, pour ajouter /home/mpiuser/mpich1/bin à la valeur de $PATH, via une seule commande, vous pouvez utiliser celle-ci:

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

Où: (1) cat /etc/environment imprimera le contenu du fichier; (2) sed '...' remplacera le dernier guillemet (") avec :/home/mpiuser/mpich1/bin"; (3) Sudo tee /etc/environment réécrira le fichier.

En conséquence, le contenu de /etc/environment ressemblera à quelque chose comme:

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

Faites défiler jusqu'à la fin.

Les références:


EDIT 2:


J'ai fait quelques recherches et trouvé quelques conseils comme this :

Cependant, si vous devez définir cette variable d'environnement pour tous les utilisateurs, je ne recommanderais toujours pas de toucher /etc/environment mais en créant un fichier dont le nom se termine par .sh dans /etc/profile.d . Le /etc/profile script et tous les scripts dans /etc/profile.d sont l'équivalent global des données personnelles de chaque utilisateur ~/.profile et exécuté en tant que scripts Shell standard par tous les shells lors de leur initialisation.

Et ceci :

Veuillez éviter de modifier les fichiers système. Au lieu de cela, vous devez placer un script exécutable dans /etc/profile.d (les scripts ici ont été exécutés pour chaque utilisateur) pour changer $PATH valeur.

Selon ces conseils, supposons que vous souhaitiez créer un fichier nommé mpich-path.sh qui est placé dans le répertoire /etc/profile.d/. Cela peut être fait par la commande:

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

En conséquence, le contenu du nouveau fichier /etc/profile.d/mpich-path.sh ressemblera à ceci:

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

Déconnectez-vous et reconnectez-vous au système et tapez echo $PATH pour vérifier le résultat.


MODIFIER 3:


Je ne connais pas les autres étapes du manuel que vous avez suivies, mais à part l'étape 11, l'étape 10 ne semble pas non plus complètement claire.

Cette partie:

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

doit être:

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

ou juste:

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

Et cela produira le même résultat qu'à l'étape 11. Cette partie n'est donc pas nécessaire.

La nouvelle chose ici est cette partie:

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

Mais, peut-être, il peut être inclus dans le fichier - /etc/profile.d/mpich-path.sh - qui nous avons créé ci-dessus.

1
pa4080