Ubuntu16.04LTS无法升级Node,npm及@angular/cli安装受阻求助
解决Node.js相关问题及apt源错误
一、先确认Node.js的正确验证命令
首先要注意,验证Node.js版本的正确命令是 node --version(或者简写node -v),而不是nodejs --version——这很可能就是你遇到命名冲突的直接原因!Ubuntu默认仓库里有个叫node的包(是一款业余无线电工具),而Node.js官方包通常用nodejs命名,这种命名差异很容易导致混淆。
二、修复apt-get update的404错误
你执行sudo apt-get update时遇到的http://extras.ubuntu.com/ubuntu xenial源404问题,是因为Ubuntu Xenial(16.04)已经停止官方支持,这个额外源已经被移除了。解决步骤如下:
- 打开系统软件源配置文件:
sudo nano /etc/apt/sources.list - 找到所有包含
http://extras.ubuntu.com/ubuntu xenial的行,在行首添加#将其注释掉,或者直接删除这些行。 - 保存并退出编辑器(按
Ctrl+O后回车确认保存,再按Ctrl+X退出)。 - 重新执行更新命令:
sudo apt-get update
这样就能解决源的404错误了。
三、解决Node.js的命名冲突问题
如果确实是node包和nodejs包的命名冲突导致异常,你可以按以下步骤处理:
- 先卸载冲突的
node包(如果已经安装):sudo apt-get remove --purge node - 为
nodejs创建软链接,让系统识别node命令:sudo ln -s /usr/bin/nodejs /usr/bin/node - 现在再验证Node.js版本:
此时应该能正常显示Node.js的版本号了。node --version
另外,如果你想升级Node.js到最新稳定版本,推荐使用官方维护的NodeSource仓库,操作步骤如下:
- 先添加NodeSource的GPG密钥:
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/nodesource.gpg - 添加对应版本的仓库(以Node.js 20.x为例,你可以根据需求替换为其他主版本号):
NODE_MAJOR=20 echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list - 更新软件源并安装/升级Node.js:
sudo apt-get update sudo apt-get install nodejs
补充:你提到的npm安装问题的截图显示相关报错,解决完上述核心问题后,npm的使用应该也会恢复正常——因为npm通常会随Node.js安装包一起自动部署。
内容的提问来源于stack exchange,提问作者beingmanish
相关产品推荐
相关产品推荐

