Программа, установленная для одного пользователя, не может быть доступна другому пользователю, даже если указан полный путь.

Программа, установленная для одного пользователя, не может быть доступна другому пользователю, даже если указан полный путь.

У меня установлены все пакеты npm для определенного пользователя (т.е. не root) (/home/otheruser/*)

Я использую monit, чтобы проверить, запущена ли программа. В этом случае это pm2, который находится в

/home/otheruser/.nvm/versions/node/v5.2.0/bin/pm2

Я не могу использовать pm2, даже когда я пытался использовать полный путь от других пользователей в терминале, даже с пользователем root. Это не дало никакого вывода или ничего не произошло, как показано ниже.

root@server:~$ /home/otheruser/.nvm/versions/node/v5.2.0/bin/pm2 list

всякий раз, когда я запускаю модули узлов с разными пользователями, например

root@server:~$ /home/otheruser/.nvm/versions/node/v5.2.0/bin/forever -v
root@server:~$ /home/otheruser/.nvm/versions/node/v5.2.0/bin/db-migrate -v
root@server:~$ /home/otheruser/.nvm/versions/node/v5.2.0/bin/pm2 -v

И я получаю следующее в системном журнале

node[5791]: No AX.25 port data configured
node[5791]: No AX.25 port data configured
node[5791]: No AX.25 port data configured

Как заставить это работать с другими пользователями

решение1

нвмне является настоящей программой. Это функция bash, которая загружается в пользовательский .profile, .bashrc или ..., поэтому sudo не берет ее автоматически из $PATH, как большинство других программ.

Вы можете создать символическую ссылку и затем попытаться получить к ней доступ.

sudo ln -s "/home/otheruser/.nvm/versions/node/v5.2.0/bin/pm2" "/usr/local/bin"

решение2

Вам нужно добавить следующее в переменную окружения вошедшего в систему пользователя (root), под которым вы пытаетесь запустить команду pm2, и тогда это сработает

NVM_DIR="/home/otheruser/.nvm"
NVM_BIN="/home/otheruser/.nvm/versions/node/v15.5.1/bin"
PATH="/home/otheruser/.nvm/versions/node/v10.15.3/bin"

Связанный контент