I use PM2 to run my node processes in production (on Ubuntu 14.04). After upgrading from node 0.12.x to nodejs 4.4.x, the command to run node(js) changed from node
to nodejs
. I followed the instructions on the nodesource distribution installation instructions.
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
PM2 still wants to call node
, even though the newer version uses the command nodejs
. I hacked it by replacing the node binary with a sim link like this:
mv /opt/bitnami/nodejs/bin/node /opt/bitnami/nodejs/bin/node.old
ln -s /usr/bin/nodejs /opt/bitnami/nodejs/bin/node
and this seems to work fine. But would prefer to simply change a config in PM2 to point to the new binary.
What is the best way to make pm2 compatible with an upgrade to nodejs 4.4.x?
Update: these are the places where node
exists on this server
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
I originally tried to upgrade node using npm and the n
package using this tutorial, which accounts for the /usr/local/n/versions/node/4.4.1/bin/node
line.
If you had
node
andnodejs
on your system, why did you removenode
?What is
/opt/bitnami/nodejs/bin/node
? That is no official path to neithernode
nornodejs
.When installling node.js 4.x, Ubuntu configured your system so that
node
is just an alternative name for the newnodejs
binary to not break existing systems. So in your case, you should not have had to create the symlink.This is how your system should be configured:
Since you manually deleted the
node
link, the output of the above command may be the same, but it is probably broken. Unless you need the Amateur Packet Radio Node program (node), I would suggest that you repair it and let Ubuntu maintain symbolic links determining default commands.Use NVM, which is a NodeJS package manager with many contributors and acceptance by the NodeJS community. https://github.com/creationix/nvm
This question is also answered on Stackoverflow: https://stackoverflow.com/a/12570971/404699
Caveat:
nvm
installs into a user's home directory. So if you use another tool to manage node processes, such as pm2, then you need to specify the new name of the node process (nodejs
vsnode
) in order to experience the version nvm sets (if going from v0.12.x to v4.x for example). This is because nvm linksnode
tonodejs
only under the installed user's profile.