Ubuntu 22.04中无hold标记却出现软件包kept back的新问题
Ubuntu 22.04中无hold标记却出现软件包kept back的新问题
最近升级到Ubuntu 22.04后,我碰到了个头疼的问题——有些软件包明明没有被标记hold,却被系统提示“kept back”,而且找不到明确原因。比如刚才执行apt-get dist-upgrade时,终端输出是这样的:
# apt-get dist-upgrade Reading package lists... Done Building dependency tree... Done Reading state information... Done Calculating upgrade... Done The following packages have been kept back: qemu-block-extra qemu-system-common qemu-system-data qemu-system-gui qemu-system-x86 qemu-utils
之前在另一台机器上升级的时候,几天前也遇到过其他包出现同样的情况。我特意检查过这些包的hold状态,确认没有被标记锁定,连Discover软件中心也完全无视这些待升级的包。
我试着加了-V参数用verbose模式运行升级命令,结果也没得到更多有用信息,输出依然只是重复列出那些被kept back的包:
# apt-get dist-upgrade -V Reading package lists... Done Building dependency tree... Done Reading state information... Done Calculating upgrade... Done The following packages have been kept back: qemu-block-extra (1:6.2+dfsg-2ubuntu6.17 => 1:6.2+dfsg-2ubuntu6.18) qemu-system-common (1:6.2+dfsg-2ubuntu6.17 => 1:6.2+dfsg-2ubuntu6.18) qemu-system-data (1:6.2+dfsg-2ubuntu6.17 => 1:6.2+dfsg-2ubuntu6.18) qemu-system-gui (1:6.2+dfsg-2ubuntu6.17 => 1:6.2+dfsg-2ubuntu6.18) qemu-system-x86 (1:6.2+dfsg-2ubuntu6.17 => 1:6.2+dfsg-2ubuntu6.18) qemu-utils (1:6.2+dfsg-2ubuntu6.17 => 1:6.2+dfsg-2ubuntu6.18)
可能的解决办法
遇到这种无hold标记却被kept back的情况,通常有这几个常见原因和对应方案,你可以逐一尝试:
依赖需要新增但dist-upgrade未自动处理
直接用apt-get install手动指定这些包升级,它会自动处理所需的新依赖:sudo apt-get install qemu-block-extra qemu-system-common qemu-system-data qemu-system-gui qemu-system-x86 qemu-utils本地缓存过期或源配置异常
先更新软件包缓存,再重新执行升级:sudo apt update && sudo apt dist-upgrade如果还是不行,可以检查
/etc/apt/sources.list文件,确保没有无效或过期的源地址。软件包处于半安装/损坏状态
先修复损坏的包,再清理冗余文件后尝试升级:sudo apt --fix-broken install sudo apt autoremove && sudo apt autoclean sudo apt dist-upgrade尝试更灵活的依赖解析工具
如果apt的处理效果不佳,可以试试aptitude,它的依赖逻辑有时候更智能:sudo apt install aptitude sudo aptitude dist-upgrade
备注:内容来源于stack exchange,提问作者Netch
相关产品推荐
相关产品推荐

