我在 VPS 实例上运行 Debian,该实例用于一个小型网站/项目,由少数用户不定期使用。服务器大部分时间处于闲置状态,但我偶尔会尝试登录以保持软件包最新。今天我意识到我已经很长时间没有登录服务器了,于是登录运行apt-get update && apt-get upgrade
。
除了有大量可用更新软件包之外,一切似乎都很顺利,直到升级过程突然停止并出现以下消息:
Processing triggers for man-db ...
Errors were encountered while processing:
/var/cache/apt/archives/mime-support_3.58_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
第二次运行apt-get upgrade
显示,大部分需要更新的软件包被“mime-support”阻止了。
Preparing to replace mime-support 3.48-1 (using .../mime-support_3.58_all.deb) ...
dpkg: error processing /var/cache/apt/archives/mime-support_3.58_all.deb (--unpack):
triggers ci file contains unknown directive `interest-noawait'
configured to not write apport reports
Errors were encountered while processing:
/var/cache/apt/archives/mime-support_3.58_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
稍微谷歌一下就会发现,mime-support 更新依赖于 dpkg 功能“interest-noawait”,而事实上,该功能包含在被 mime-support 阻止的 dpkg 更新中……
在我看来,我无法将 dpkg 升级到最新版本,因为它依赖于 mime-support,而 mime-support 又由于依赖于较新版本的 dpkg 而无法升级?
是否可以手动安装最新版本的 dpkg 来解决此错误?我尝试删除 mime-support,但由于存在许多其他依赖项,因此无法完成。
答案1
我也遇到过类似的问题。我发现别处解决方案是将旧的 dpkg 可执行文件替换为新版本。对我来说,这个方法有效。
首先您需要下载当前版本的 dpkg:
i386 版本
获得https://launchpad.net/ubuntu/+archive/primary/+files/dpkg_1.18.4ubuntu1.1_i386.deb
或者
amd64 版本
获得https://launchpad.net/ubuntu/+archive/primary/+files/dpkg_1.18.4ubuntu1.1_amd64.deb
之后,提取新的 dpkg 二进制文件并将其放置在旧二进制文件的位置:
ar x dpkg_1.18.4ubuntu1.1_amd64.deb tar -xfvz data.tar.gz
sudo cp ./usr/bin/dpkg /usr/bin/
sudo apt-get update
sudo apt-get install --reinstall dpkg
这招很管用。