я использую PM2 для запуска процессов моего узла в производственной среде (в Ubuntu 14.04). После обновления с узел 0.12.x к nodejs 4.4.x, команда для запуска узла (js) изменилась с node
к nodejs
. Я выполнил инструкции по установке дистрибутива nodeource.
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
PM2 все еще хочет позвонить node
, хотя в более новой версии используется команда nodejs
. Я взломал его, заменив двоичный файл узла на сим-ссылку, например:
mv /opt/bitnami/nodejs/bin/node /opt/bitnami/nodejs/bin/node.old
ln -s /usr/bin/nodejs /opt/bitnami/nodejs/bin/node
и это, кажется, работает нормально. Но предпочел бы просто изменить конфигурацию в PM2, чтобы указать на новый двоичный файл.
Как лучше всего сделать pm2 совместимым с обновлением до nodejs 4.4.x?
Обновить: это места, где node
существует на этом сервере
root@ip-172-30-1-190:/usr/bin# find / -name "node" -type f
/opt/bitnami/nodejs/bin/node
/var/lib/dpkg/alternatives/node
/usr/local/bin/node
/usr/local/n/versions/node/4.4.1/bin/node
Изначально я пытался обновить узел с помощью npm и n
пакет используя этот учебник, что составляет /usr/local/n/versions/node/4.4.1/bin/node
линия.
Используйте NVM, который является менеджером пакетов NodeJS с множеством участников и принят сообществом NodeJS. https://github.com/creationix/nvm
На этот вопрос также ответят в Stackoverflow: https://stackoverflow.com/a/12570971/404699
Предостережение: nvm
устанавливается в домашний каталог пользователя. Поэтому, если вы используете другой инструмент для управления процессами узлов, например pm2, то вам нужно указать новое имя процесса узла (nodejs
против node
), чтобы испытать наборы версий nvm (например, при переходе с v0.12.x на v4.x). Это потому, что ссылки nvm node
к nodejs
только под установленным профилем пользователя.
Если у тебя есть node
и nodejs
в вашей системе, почему вы удалили node
?
Что /opt/bitnami/nodejs/bin/node
? Это не официальный путь ни к одному из node
ни nodejs
.
При установке node.js 4.x Ubuntu настроил вашу систему так, чтобы node
это просто альтернативное название для нового nodejs
бинарный, чтобы не ломать существующие системы. Итак, в вашем случае вам не нужно было создавать символическую ссылку.
Вот как должна быть настроена ваша система:
root@server:~# update-alternatives --get-selections | grep node
js auto /usr/bin/nodejs
node auto /usr/bin/nodejs
Поскольку вы вручную удалили node
ссылка, выходные данные вышеуказанной команды могут быть такими же, но, вероятно, не работают. Если вам не нужен Программа узла любительского пакетного радио (узел), Я бы посоветовал вам отремонтировать его и позволить Ubuntu поддерживать символические ссылки, определяющие команды по умолчанию.
# Remove the symlink and remove the rest of a broken "update-alterantive" configuration:
unlink /opt/bitnami/nodejs/bin/node
unlink /opt/bitnami/nodejs/bin/node.old
update-alternatives --remove-all node
update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10