Как определить путь к MPICH для SSH?

Я имею тезис диплома и выполняю шаги из этого руководства: Создание Кластера Беовульфа всего на 13 шагах.

У меня есть проблема с шагом 11:

Теперь мы определим путь к MPICH для SSH. Выполните следующую команду:

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

Но выше команды возвращает этот вывод:

bash: /etc/environment: Permission denied

Как решить эту проблему?

1
задан 7 March 2017 в 23:16

1 ответ

Ваша команда не работает потому что перенаправление вывода (>/>>) не выполняется sudo. Существует несколько способов решить это. Например:

  • Можно использовать канал (|) и выполненный sudoteeкомандой с --append опция:

    echo /home/mpiuser/mpich1/bin | sudo tee -a /etc/environment
    
  • Другой подход должен выполнить всю команду как sudo:

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

В результате содержание /etc/environment будут взгляды что-то как:

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

Ссылки:


РЕДАКТИРОВАНИЕ 1:


Однако я думаю эта новая строка в /etc/environment ничего не сделает отдельно. Чтобы иметь некоторое значение, этот "путь" должен быть добавлен к значению $PATH envvar.

В Документации Ubuntu говорится что:

Переменное расширение не работает в /etc/environment.

Таким образом добавлять /home/mpiuser/mpich1/bin к значению $PATH, через единственную команду можно использовать этого:

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

Где: (1) cat /etc/environment распечатает содержание файла; (2) sed '...' заменит последнюю метку кавычки (") с :/home/mpiuser/mpich1/bin"; (3) sudo tee /etc/environment перепишет файл.

В результате содержание /etc/environment будут взгляды что-то как:

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

Прокрутите в конец.

Ссылки:


РЕДАКТИРОВАНИЕ 2:


Я провел немного исследования и нашел немного советов как это:

Однако, если бы необходимо установить ту переменную среды для всех пользователей, я все еще не рекомендовал бы затронуть /etc/environment но создавая файл с именем файла, заканчивающимся в .sh в /etc/profile.d. /etc/profile сценарий и все сценарии в /etc/profile.d глобальный эквивалент каждого персонального пользователя ~/.profile и выполняемый как обычные сценарии оболочки всеми оболочками во время их инициализации.

И это:

Избегайте modifing системных файлов. Вместо этого необходимо поместить исполняемый сценарий в /etc/profile.d (сценарии в здесь выполнялись для каждого пользователя) измениться $PATH значение.

Согласно им советует, давайте предположим, что Вы хотите создать названный файл mpich-path.sh который помещается в каталог /etc/profile.d/. Это может быть сделано командой:

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

В результате содержание нового файла /etc/profile.d/mpich-path.sh будет быть похожим на это:

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

Выйдите из системы и войдите в систему назад в систему и тип echo $PATH проверять результат.


РЕДАКТИРОВАНИЕ 3:


Я не знаю о других шагах в руководстве, что Вы имеете, следуют, но кроме шага 11, шаг 10 также не кажется абсолютно ясным.

Эта часть:

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

должен быть:

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

или просто:

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

И это приведет к тому же результату как шаг 11. Таким образом, эта часть является ненужной.

Новой вещью здесь является эта часть:

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

Но, возможно, это может быть включено в файл - /etc/profile.d/mpich-path.sh - кого мы создали выше.

1
ответ дан 7 December 2019 в 15:39

Другие вопросы по тегам:

Похожие вопросы: