在最新的 Ubuntu (18.04) 安装中,NPM 的版本不正确

Bla*_*g23 26 package-management apt nodejs npm software-installation

正常安装是sudo apt install nodejs先安装 Node.js,然后再sudo apt install npm安装 Node Package Manager。然而,在这样做时,npm -v3.5.2。要正常升级,我会做sudo npm install -g npm,它更新到最新版本(在撰写本文时为6.0.1)。

当我执行 a 时which npm,我得到/usr/local/bin/npm,但是apt/usr/bin/npm. 如果我sudo apt purge npm删除 npm,它仍然会将 npm 的 npm 版本保留在/usr/local/bin/npm,但是npm -v-bash: /usr/bin/npm: No such file or directory.

很多文章都说使用PPA来安装nodejs,但我认为应该有一种通过apt.

DigitalOcean 关于正常安装和通过 PPA 的安装说明: https : //www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-18-04

通过 PPA 安装的 TecAdmin 说明: https ://tecadmin.net/install-latest-nodejs-npm-on-ubuntu/

kru*_*ubo 54

TLDR:这个问题是由于Bash 缓存npm命令的路径引起的,可以通过hash -d npm. apt purge除非你愿意,否则你甚至不需要处理。

解释

这是我npm在 Ubuntu 上获取新版本的步骤。首先,按照 OP 描述进行安装:

$ 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)
Run Code Online (Sandbox Code Playgroud)

你可以看到,新版本已经在工作的罚款/usr/local/bin/npm,但不幸的是,猛砸缓存仍然有/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)
Run Code Online (Sandbox Code Playgroud)

要解决此问题,请从 Bash 缓存中清除它(在所有打开的 shell 中执行此操作):

$ hash -d npm
Run Code Online (Sandbox Code Playgroud)

现在新版本可以正常工作:

$ npm -v
6.4.1
$ command -v npm
/usr/local/bin/npm
Run Code Online (Sandbox Code Playgroud)


Bla*_*g23 12

我发现的方法是通过 清除 npm sudo apt purge npm,然后通过ln -s /usr/local/bin/npm /usr/bin/npm. 修复后,按预期npm -v返回6.0.1

  • 在 Android 6.0.1 上使用通过 [UserLAnd](https://play.google.com/store/apps/details?id=tech.ula) 运行的 Ubuntu 18.04。谢谢!:) (2认同)