今天,当我决定在 nodejs 应用程序目录中使用时,我遇到了一个问题npm update -g
。这是一个糟糕的决定,因为它导致我遇到了npm 常见且严重的问题。
解决方案是重新安装 nodejs 和 npm。不幸的是,当我使用它安装 npm 时,sudo apt-get install npm
它不起作用。
终端中的完整错误在这里:
Some packages could not be installed. This may mean that you have requested
an impossible situation or if you are using the unstable distribution that
some required packages have not yet been created or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
npm : Depends: nodejs but it is not going to be installed
Depends: node-abbrev (>= 1.0.4) but it is not going to be installed
Depends: node-ansi but it is not going to be installed
Depends: node-archy but it is not going to be installed
Depends: node-block-stream but it is not going to be installed
Depends: node-fstream (>= 0.1.22) but it is not going to be installed
Depends: node-fstream-ignore but it is not going to be installed
Depends: node-github-url-from-git but it is not going to be installed
Depends: node-glob (>= 3.1.21) but it is not going to be installed
Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
Depends: node-inherits but it is not going to be installed
Depends: node-ini (>= 1.1.0) but it is not going to be installed
Depends: node-lockfile but it is not going to be installed
Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
Depends: node-gyp (>= 0.10.9) but it is not going to be installed
Depends: node-nopt (>= 2.1.1) but it is not going to be installed
Depends: node-npmlog but it is not going to be installed
Depends: node-once but it is not going to be installed
Depends: node-osenv but it is not going to be installed
Depends: node-read but it is not going to be installed
Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
Depends: node-request (>= 2.25.0) but it is not going to be installed
Depends: node-retry but it is not going to be installed
Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
Depends: node-semver (>= 2.1.0) but it is not going to be installed
Depends: node-sha but it is not going to be installed
Depends: node-slide but it is not going to be installed
Depends: node-tar (>= 0.1.18) but it is not going to be installed
Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
我该怎么做才能正确安装并再次运行 npm?
谢谢。
答案1
更新
关于这个答案下方的 William Entriken 的评论,有一种更好的方法可以将 Node.js 作为 snap 包本地安装在 Ubuntu 中。
Node.js 以 snap 包的形式出现在所有当前支持的 Ubuntu 版本中。具体到 Node.js,开发人员可以从一个或多个当前支持的版本中进行选择,并直接从 NodeSource 获取定期自动更新。Node.js 版本 6、8、9、10、11、13、14、15、16、17 和 18 目前可用,Snap Store 会在 Node.js 发布后数小时或数分钟内更新。
Node 可以使用单个命令来安装,例如:
sudo snap install node --classic --channel 9/stable
可以通过命令访问节点捕捉node
,例如:
$节点-v v9.9.0
最新版本的 npm 将作为 node snap 的一部分进行安装。npm 应该在 node repl 之外的常规 shell 中运行。安装 node snap 后,运行以下命令以启用 npm 更新检查:
sudo chown -R $USER:$(id -gn $USER) /home/您的用户名/.config
代替 your-username
在上面的命令中使用您自己的用户名。然后运行npm -v
以检查 npm 的版本是否是最新的。作为示例,我检查了 npm 是否是最新的,使用命令检查了已安装的名为 yarn 的包的版本npm list yarn
,然后使用命令将现有的 yarn 包更新为最新版本npm update yarn
用户可以随时在 Node.js 版本之间切换,而无需借助 nvm(Node 版本管理器)等额外工具,例如:
sudo snap refresh node --channel=8/stable
用户可以通过以下方式测试从最新边缘通道安装的 Node.js 的最新版本:
sudo snap switch node --edge
这种方法仅推荐给愿意参与上游测试和错误报告的用户。
原始答案
要在所有当前支持的 Ubuntu 版本中安装 Node.js(nodejs)和 Node.js 包管理器(npm)的最新 LTS 版本,请打开终端并运行以下命令:
sudo apt-get remove nodejs npm ## remove existing nodejs and npm packages
sudo apt-get install curl
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
如果您要复制这三个命令,请不要忽略第二个命令末尾的连字符。
该nodejs
软件包包含nodejs
二进制文件和npm
,因此您无需npm
单独安装。但是,为了使某些npm
软件包正常工作(例如那些需要从源代码构建的软件包),您需要安装该build-essential
软件包:
sudo apt-get install build-essential
LTS 计划
Node.js 的新 semver-major 版本每六个月发布一次master
。新的偶数版本(例如 v6、v8、v10 等)在四月发布。新的奇数版本(例如 v5、v7、v9)在十月发布。
当新的奇数主要版本发布时,先前的偶数主要版本将过渡到长期支持计划。
LTS 计划涵盖的每个主要版本都将从进入 LTS 覆盖范围之日起积极维护 18 个月。在 18 个月的积极支持之后,主要版本将转入“维护”模式,持续 12 个月。
非 LTS 安装
截至 2017 年 3 月,安装最新非 LTS 版本 Node.js(发布时为 v8)的命令如下:
sudo apt-get remove nodejs npm ## remove existing nodejs and npm packages
sudo apt-get install curl
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
Node.js LTS 计划
发布 | 地位 | 代码名称 | 初始发行 | LTS 开始 | 维护开始 | 维护结束 |
---|---|---|---|---|---|---|
6.x | 停产 | 硼 | 2016-04-26 | 2016-10-18 | 2018-04-30 | 2019-04-30 |
7.x | 停产 | 2017-05-30 | 2017-06-30 | |||
8.x | 停产 | 碳 | 2016-10-25 | 2017-10-31 | 2019-01-01 | 2019-12-31 |
9.x | 停产 | 2017-10-01 | 2018-06-30 | |||
10.x | 停产 | 钚 | 2018-04-24 | 2018-10-30 | 2020-05-19 | 2021-04-30 |
11.x | 停产 | 2018-10-23 | 2019-06-01 | |||
12.x | 维护 LTS | 铒 | 2019-04-23 | 2019-10-21 | 2020-11-301 | 2022-04-30 |
13.x | 停产 | 2019-10-22 | 2020-06-01 | |||
14.x | 维护 LTS | 镄 | 2020-04-21 | 2020-10-27 | 2021-10-30 | 2023-04-30 |
16.x | 主动长期支持 | 镓 | 2021-04-20 | 2021-10-26 | 2022-10-18 | 2024-04-30 |
17.x | 当前的 | 2021-10-19 | 2022-04-01 | 2022-06-01 | ||
18.x | 当前的 | 2022-04-19 | 2022-10-25 | 2023-10-18 | 2025-04-30 |