apt-get upgrade失败求助:依赖问题排查方向咨询
看起来你遇到了典型的Ubuntu软件包版本混合冲突问题——你的系统里compiz相关组件版本不统一:部分包(compiz-plugins、compiz-plugins-default、libcompizconfig0)试图使用Ubuntu 17.10(Artful Aardvark)的版本(1:0.9.13.1+17.10.20170901-0ubuntu1),但核心的compiz-core还停留在Ubuntu 16.04(Xenial Xerus)的旧版本(1:0.9.12.2+16.04.20160823-0ubuntu1),直接导致依赖链断裂。下面是一步步的排查和解决思路:
1. 先确认系统发行版与软件源是否混乱
首先得搞清楚你当前在用的Ubuntu版本,以及是否误加了其他发行版的软件源:
- 查看当前发行版信息:
lsb_release -a - 检查软件源中是否混入了Artful(17.10)的仓库:
cat /etc/apt/sources.list /etc/apt/sources.list.d/*.list | grep -i artful
如果输出里有带artful的源,这就是问题的核心——你的系统是Xenial,但源里混进了Artful的仓库,导致apt试图拉取更高版本的compiz包,却因为依赖关系无法完成核心包的升级。
2. 修复软件源(若存在跨版本源)
如果发现了Artful的源,需要立即清理:
- 编辑主源文件:
sudo nano /etc/apt/sources.list,把所有包含artful的行前面加#注释掉 - 检查额外源目录:
sudo nano /etc/apt/sources.list.d/*.list,同样注释掉所有Artful相关的源 - 更新源缓存,让apt识别最新的源配置:
sudo apt-get update
3. 强制降级冲突包到当前发行版版本
现在需要把那些误升级到Artful版本的compiz包,强制降级回Xenial的匹配版本:
- 先确认哪些包是Artful版本:
dpkg -l | grep compiz | grep 0.9.13.1 - 执行降级命令,把所有版本不匹配的包指定为Xenial的版本号:
sudo apt-get install compiz-plugins=1:0.9.12.2+16.04.20160823-0ubuntu1 compiz-plugins-default=1:0.9.12.2+16.04.20160823-0ubuntu1 libcompizconfig0=1:0.9.12.2+16.04.20160823-0ubuntu1 - 降级完成后,再次运行依赖修复命令确认问题解决:
sudo apt-get -f install
4. 排查第三方PPA导致的版本混乱
如果上面的步骤没解决问题,可能是第三方PPA提供了更高版本的compiz包:
- 查看compiz-core的源优先级和可用版本:
sudo apt-cache policy compiz-core
如果输出里除了官方源,还有其他PPA提供0.9.13.1版本,需要禁用这个PPA:
sudo add-apt-repository --remove ppa:<ppa-name> sudo apt-get update
然后重复步骤3的降级操作。
5. 兜底方案:彻底重装compiz组件
如果前面的方法都无效,可以尝试彻底清除所有compiz相关包后重新安装(注意备份你的compiz自定义配置,通常在~/.config/compiz-1/目录):
sudo apt-get purge compiz* libcompizconfig0 sudo apt-get autoremove sudo apt-get install compiz compiz-plugins-default compiz-core libcompizconfig0
内容的提问来源于stack exchange,提问作者NoMann

