#apt##Ubuntu##Debian#
1、问题现象
今天在升级软件的时候遇到一个错误,如下:
root@x:~# apt --fix-broken install正在读取软件包列表... 完成正在分析软件包的依赖关系树 正在读取状态信息... 完成 正在修复依赖关系... 完成下列软件包是自动安装的并且现在不需要了: compiz-plugins-default compiz-plugins-extra fcitx-libs initramfs-tools-bin libfcitx-qt0 libllvm10 lz4 multiarch-support python3-compizconfig使用'apt autoremove'来卸载它(它们)。将会同时安装下列软件: libqtcore4建议安装: libicu57下列【新】软件包将被安装: libqtcore4升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 13 个软件包未被升级。有 257 个软件包没有被完全安装或卸载。需要下载 0 B/1,597 kB 的归档。解压缩后会消耗 5,215 kB 的额外空间。您希望继续执行吗? [Y/n] y(正在读取数据库 ... 系统当前共安装有 341476 个文件和目录。)准备解压 .../libqtcore4_4%3a4.8.7.1+dfsg-1+dde_amd64.deb ...正在解压 libqtcore4:amd64 (4:4.8.7.1+dfsg-1+dde) ...dpkg: 处理归档 /var/cache/apt/archives/libqtcore4_4%3a4.8.7.1+dfsg-1+dde_amd64.deb (--unpack)时出错: 正试图覆盖 /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf,它同时被包含于软件包 libqt5core5a:amd64 5.12.8+dfsg-0ubuntu1在处理时有错误发生: /var/cache/apt/archives/libqtcore4_4%3a4.8.7.1+dfsg-1+dde_amd64.debE: Sub-process /usr/bin/dpkg returned an error code (1)
2、问题分析
从大致的一个描述来看,这是因为某个包无法正常安装,如果不去深入了解的话,最简单粗暴的解决方式就是强制安装这个安装出错的包,所以我们可以根据提示的信息进行安装:
3、解决问题
deb包的强制安装命令方法为:
sudo dpkg -i --force-overwrite ${deb_file}
从提示信息我们可以知道,我们需要安装的包为:
/var/cache/apt/archives/libqtcore4_4%3a4.8.7.1+dfsg-1+dde_amd64.deb
所以命令就是:
sudo dpkg -i --force-overwrite /var/cache/apt/archives/libqtcore4_4%3a4.8.7.1+dfsg-1+dde_amd64.deb
此时,提示另一个错误,我们需要先配置好另一个包才行:
apt install -d qtcore4-l10nls /var/cache/apt/archives/ | grep ^qtcoresudo dpkg -i --force-overwrite /var/cache/apt/archives/qtcore4-l10n_4%3a4.8.7.1+dfsg-1+dde_all.deb
然后再安装:
sudo dpkg -i --force-overwrite /var/cache/apt/archives/libqtcore4_4%3a4.8.7.1+dfsg-1+dde_amd64.deb
此时可以看到已经安装成功了,然后继续执行升级指令:
apt upgrade
然后继续出现同样的错误
然后继续根据前面的方法安装
sudo dpkg -i --force-overwrite /var/cache/apt/archives/libjpeg8_8d2-*
到这里,问题就解决了,下面我们来简单分析一下原因:
4、问题总结
由于我之前想通过添加deepin的官方源来安装QQ、微信等,于是我就手动添加了deepin的源,然后在提示无法安全的验证源的情况下,通过手动导入gpg验证使其可用,后来一直没有把这个源移除,最后导致在安装升级的过程中部分包就从deepin的源中获取了一些跟Ubuntu不完全匹配的软件包,所以就劝各位不要随意使用不同系统发行版的源,否则很容易出现意外。