如何在清除后安装npm

6
由于我需要更新NodeJS的版本,我首先移除旧版本... 方法如下:
 apt-get remove --purge nodejs
 apt-get remove --purge node
 apt-get autoremove

...在成功安装最新版本的NodeJS之后,我运行了npm安装程序。
 node --version  # now is ok!
 sudo apt-get install npm  # ERROR!!!!

所以,在此情况下如何安装npm(在此清除过程之后)。
编辑:
PS:正如我上面的链接和内联注释所示,nodejs --version是没问题的。这个问题是关于npmapt-get的...现在我看到答案的这部分在这里
错误信息,与此类似的问题相同
The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
       Depends: node-abbrev (>= 1.0.4) 
       Depends: nodejs-dev
       ...
       Depends: ... but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
2个回答

11

......没有人说过,但问题不在于我的NodeJS或我的UBUNTU,问题类似于sudo apt-get install npm中的一个错误,这个命令有一个bug:需要修复消息。

在类似问题中所述npm是由现代NodeJS的安装(!!)安装的,因此apt-get必须说:“好的,没问题,你有一个良好和更新的npm”。

结论:

  1. 只使用带有正确setup_N.x选择的"curl+apt"命令,如所有发布的链接中所示。 nodejs的安装也将安装npm

  2. 不要使用apt-get install npm,避免它。 是一个错误。


注意:典型的"curl+apt"是

 curl -sL https://deb.nodesource.com/setup_5.x | sudo -E bash -
 sudo apt-get install -y nodejs

在成功安装后,请使用以下命令检查 npm 是否存在:

  npm --version

因此, 如果显示一个版本号(如 3.3.12),那么 npm 已经被安装了!

重要提示: 要更新 npm(例如从 3.3.12 到 3.5.2),不要使用 apt-get,请使用 npm 本身。

 sudo npm install npm -g

2017年更新

今天,即2017年,在UBUNTU 16 LTS上,只使用apt(比apt-get更友好)就可以实现...

sudo apt update
sudo apt install nodejs  # need it first!
sudo apt install npm

... 但是它是“最新版的缓慢LTS版本”,请检查每个版本!...

按照特定版本选择的步骤(以v6.x为例),请参考此教程

  1. curl -sL https://deb.nodesource.com/setup_6.x -o nodesource_setup.sh

  2. sudo bash nodesource_setup.sh

  3. atp install nodejs


2

卸载nodejs并修复损坏的软件包。

sudo apt-get --purge remove nodejs node npm
sudo apt-get clean
sudo apt-get autoclean
sudo apt-get -f install
sudo apt-get autoremove

使用PPA安装Nodejs

curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs

创建一个符号链接以便使用node命令,因为许多Node.js工具都使用这个名称来执行。
sudo ln -s /usr/bin/nodejs /usr/bin/node

如果您想要从npm编译和安装本地插件,您可能还需要安装构建工具:

sudo apt-get install -y build-essential

谢谢,一切都可以工作(nodejsnode等),如我所示的链接(并不是node 4.X而是node 5.X)。并且,当我更加仔细地查看类似错误的链接时,我的npm没有问题,它就在那里!问题出在UBUNTU上,它在apt-get出了问题:现在用nodejs安装了npm - Peter Krauss
我猜sudo apt-get autoremove是非常危险的。 - Punit Vara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接