NPM is incorrect version on latest Ubuntu (18.04) installation
TLDR: This problem is caused by Bash caching the path of the npm
command, and can be solved by hash -d npm
. You don't even need to deal with apt purge
unless you want to.
Explanation
Here were my steps for getting a new npm
version on Ubuntu. First, do the installation as OP describes:
$ sudo apt-get install npm
(...apt installation of npm was successful...)
$ npm -v
3.5.2
$ command -v npm
/usr/bin/npm
$ sudo npm install -g npm
(...npm installation of npm was successful...so far, so good)
You can see that the new version is already working fine in /usr/local/bin/npm
, but unfortunately the Bash cache still has /usr/bin/npm
:
$ /usr/local/bin/npm -v
6.4.1
$ npm -v
3.5.2
$ command -v npm
/usr/bin/npm
$ type npm
npm is hashed (/usr/bin/npm)
To fix the problem, clear it from the Bash cache (do this in all open shells):
$ hash -d npm
Now the new version works as desired:
$ npm -v
6.4.1
$ command -v npm
/usr/local/bin/npm
The way I found is to purge npm through sudo apt purge npm
, then simply recreate a symlink to the global installation via ln -s /usr/local/bin/npm /usr/bin/npm
. After that fix, npm -v
returns 6.0.1
as expected.
To have control on installed npm version, I always use nvm
(node version control). You can install it through the instructions here: https://github.com/creationix/nvm
Then by following command install the latest npm on your computer:
nvm install node