如何解决Ubuntu 16.04安装libstdc++.so.6.0.9后的未满足依赖问题?
解决Ubuntu 16.04中libstdc++6依赖不匹配的问题
我之前也碰到过类似的系统包依赖版本冲突问题,给你几个逐步排查的解决方法:
方法一:手动升级gcc-5-base到指定版本
错误提示明确指出libstdc++6需要gcc-5-base=5.4.0-6ubuntu1~16.04.9,但当前安装的是旧版本,我们可以直接指定版本安装:
- 先更新源列表确保能找到目标版本:
sudo apt-get update - 安装指定版本的gcc-5-base:
sudo apt-get install gcc-5-base=5.4.0-6ubuntu1~16.04.9 - 完成后再运行依赖修复命令:
sudo apt-get -f install - 最后尝试重新升级:
sudo apt-get upgrade
方法二:移除手动安装的libstdc++.so.6.0.9并恢复系统默认库
如果手动安装的高版本libstdc++库干扰了系统包管理,需要先清理手动安装的文件:
- 找到你手动放置
libstdc++.so.6.0.9的位置(通常是/usr/local/lib或自定义目录),执行删除:sudo rm /usr/local/lib/libstdc++.so.6.0.9 - 恢复系统默认的libstdc软链接(Ubuntu 16.04默认的libstdc6版本是6.0.21,先确认路径存在):
确认后重新建立软链接:ls /usr/lib/x86_64-linux-gnu/libstdc++.so.*sudo ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 - 重新安装系统的libstdc++6包:
sudo apt-get install --reinstall libstdc++6 - 再次运行依赖修复和升级:
sudo apt-get -f install sudo apt-get upgrade
问题原因说明
你手动安装libstdc++.so.6.0.9后,系统包管理工具apt检测到libstdc++6包的依赖项(gcc-5-base)版本不匹配——系统期望的是和libstdc++6配套的补丁版本,但当前安装的gcc-5-base是旧版,从而触发了依赖错误。
内容的提问来源于stack exchange,提问作者Asad Iftikhar




