我在npm设置的 Vagrant 盒子中遇到问题。我注意到npm版本有点旧,所以我想检查最新版本的问题。
这是我的理解是,你应该能够更新npm使用npm install -g npm,但该命令对没有影响npm使用感:
vagrant@box:~$ npm -v
1.3.10
vagrant@box:~$ sudo npm install -g npm
npm http GET https://registry.npmjs.org/npm
npm http 200 https://registry.npmjs.org/npm
npm http GET https://registry.npmjs.org/npm/-/npm-2.1.12.tgz
npm http 200 https://registry.npmjs.org/npm/-/npm-2.1.12.tgz
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm@2.1.12 /usr/local/lib/node_modules/npm
vagrant@box:~$ npm -v
1.3.10
Run Code Online (Sandbox Code Playgroud)
我也尝试使用n(如How can I update my nodeJS to the latest version? 中建议的那样?)进行更新,但它既不影响npm也不影响node:
vagrant@box:~$ node -v
v0.10.25
vagrant@box:~$
vagrant@box:~$ sudo npm install -g n
/usr/bin/n -> /usr/lib/node_modules/n/bin/n
n@1.2.9 /usr/lib/node_modules/n
vagrant@box:~$ sudo n stable
install : v0.10.33
mkdir : /usr/local/n/versions/0.10.33
fetch : http://nodejs.org/dist/v0.10.33/node-v0.10.33-linux-x64.tar.gz
installed : v0.10.33
vagrant@box:~$ node -v
v0.10.25
vagrant@box:~$ npm -v
1.3.10
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能将 npm 更新到最新版本?
Der*_*ler 162
我仍然不明白为什么,但我必须运行npm install -g npm 两次才能达到预期的效果:
vagrant@box:~$ npm -v
1.3.10
vagrant@box:~$ sudo npm install -g npm
npm http GET https://registry.npmjs.org/npm
npm http 200 https://registry.npmjs.org/npm
npm http GET https://registry.npmjs.org/npm/-/npm-2.1.12.tgz
npm http 200 https://registry.npmjs.org/npm/-/npm-2.1.12.tgz
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm@2.1.12 /usr/local/lib/node_modules/npm
vagrant@box:~$ npm -v
1.3.10
vagrant@box:~$ sudo npm install -g npm
/usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js
npm@2.1.12 /usr/lib/node_modules/npm
vagrant@box:~$ npm -v
2.1.12
Run Code Online (Sandbox Code Playgroud)
Asf*_*azi 65
当你第一次这样做时npm install -g npm,shell(Bash)会npm在你的路径中搜索,找到/usr/bin/npm被系统安装的包,然后用它来安装新版本的npm. 新版本将安装在/usr/local/bin/npm.
现在,你的路径应该有/usr/local/bin/BEFORE /usr/bin/,所以你会认为它现在会选择 中的更新版本/usr/local/bin/,对吗?错误的。
Bash 会在第一次搜索可执行路径后npm缓存它们,所以当你说第二次时,它仍然使用它第一次找到的缓存版本/usr/bin/npm。
要告诉 Bash 清除此缓存并再次查看路径,您必须执行hash -r.
安装npm并执行此操作后,我的 shell 选择了新版本npm就好了。
谢谢
bla*_*899 43
您可以使用 npm 本身、PPA 或手动更新 nodejs。
纳米:
检查您拥有的当前版本:
node -v
Run Code Online (Sandbox Code Playgroud)
以下内容会清除您的缓存。
sudo npm cache clean -f
Run Code Online (Sandbox Code Playgroud)
安装 n
sudo npm install -g n
Run Code Online (Sandbox Code Playgroud)
您可以告诉它安装特定版本,如下所示:
sudo n 0.8.11
Run Code Online (Sandbox Code Playgroud)
或者只是告诉它安装最新的稳定版本。两者都可能需要一段时间。
sudo n stable
Run Code Online (Sandbox Code Playgroud)
要查看它是否真的升级了,请运行:
node -v
Run Code Online (Sandbox Code Playgroud)
购电协议:
另一个选择是通过 chris-lea的PPA安装它;
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
Run Code Online (Sandbox Code Playgroud)
此 PPA 支持以下发行版:Utopic (14.10)、Trusty (14.04)、Saucy (13.10)、Raring (13.04)、Quantal (12.10)、Precise (12.04)、Oneiric (11.10)、Natty (11.04)、. )。
手动:
您可以随时通过手动下载最新版本并自行安装来更新它!
参考:
小智 22
要升级或更新 npm 的版本,只需在终端中输入:
sudo npm install npm@latest -g
Run Code Online (Sandbox Code Playgroud)
如NPM 文档的页脚所述
Tom*_*wik 12
大多数时候我无法使用全局命令升级它。然而,对我有用的是从所有系统节点模块的源升级包:
找出 npm 的安装位置并进入该文件夹
# Below command shows the destination (remove sed pipe to see the full path of npm-cli)
whereis npm | cut -c 6- | xargs readlink -f | sed 's/.\{19\}$//'
# Go in there and install it manually. In my case it was the folder below...
# NOTE: on mac its in /usr/local/lib
cd /usr/lib
sudo npm install npm@latest
Run Code Online (Sandbox Code Playgroud)
看看每个人(尤其是懒人)的强大单线
cd `whereis npm | cut -c 6- | xargs readlink -f | sed 's/.\{18\}$//'`; cd ..; sudo npm install npm@latest
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
475120 次 |
| 最近记录: |