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?
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 Sudo
tee
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.