执行sudo apt upgrade后出现nodejs相关dpkg覆盖错误,求解决方案
解决sudo apt upgrade时nodejs与libnode72的文件冲突错误
这个错误是因为nodesource提供的nodejs 16.19.0包,尝试覆盖系统默认libnode72包(12.22.9版本)中的/usr/share/systemtap/tapset/node.stp文件,dpkg默认禁止不同包覆盖同一文件,导致升级失败。
以下是几种可行的解决方法:
方法一:强制覆盖冲突文件
直接让dpkg忽略文件冲突,完成nodejs包的安装:
sudo dpkg -i --force-overwrite /var/cache/apt/archives/nodejs_16.19.0-deb-1nodesource1_amd64.deb
安装完成后,修复可能存在的依赖问题并继续升级:
sudo apt upgrade -f
方法二:卸载冲突的旧包后升级
如果不需要系统自带的旧版node相关组件,可以先卸载冲突的libnode72包:
sudo apt remove libnode72
然后重新执行升级命令:
sudo apt upgrade
方法三:清理并重新添加nodesource源
如果是源配置问题导致的冲突,可彻底清理现有nodejs相关包和源,重新安装:
- 卸载现有nodejs并移除源文件:
sudo apt purge nodejs sudo rm -rf /etc/apt/sources.list.d/nodesource.list sudo apt update
- 重新添加nodesource的16.x版本源并安装nodejs:
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - sudo apt install nodejs
补充说明
如果执行上述方法后仍有依赖错误,可运行以下命令修复:
sudo apt --fix-broken install
内容的提问来源于stack exchange,提问作者s.imran
相关产品推荐
相关产品推荐

