Ubuntu 18.04升级至20.04时do-release-upgrade因非官方PPA失败,求助定位并清理问题PPA
别担心,我来一步步帮你搞定这个升级卡住的问题~ 你的日志里显示Python相关包移除失败,这大概率是某个第三方PPA提供的Python包和官方升级的依赖冲突了,咱们一步步定位并解决:
第一步:先列出系统里所有已添加的PPA
首先看看你系统里装了哪些第三方PPA,执行这条命令:
ls /etc/apt/sources.list.d/
输出的每个.list文件对应一个PPA,文件名里一般包含PPA的所有者和名称(比如deadsnakes-ppa-ubuntu-bionic.list对应的就是ppa:deadsnakes/ppa),先记下来这些可能的候选PPA。
第二步:找出问题包来自哪个PPA
日志里报错的是python-minimal、python-dev这些包,咱们逐个查它们的来源,确认是不是来自第三方PPA:
执行以下命令(每个包单独查):
apt policy python-minimal apt policy python-dev apt policy libpython-dev apt policy libpython-stdlib
看输出里的Candidate那一行,如果显示的源是http://ppa.launchpad.net/xxx/yyy/ubuntu这样的地址,那对应的PPA就是ppa:xxx/yyy——这就是咱们要找的“罪魁祸首”。
举个例子,如果输出里有:
Candidate: 2.7.18-1~18.04.1
Version table:
2.7.18-1~18.04.1 500
500 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu bionic/main amd64 Packages
那这个包就来自ppa:deadsnakes/ppa,这就是需要清理的PPA。
第三步:用ppa-purge清理问题PPA
找到对应的PPA后,执行ppa-purge命令把它的包恢复成官方版本并移除PPA:
sudo ppa-purge ppa:xxx/yyy
把上面的ppa:xxx/yyy换成你找到的实际PPA地址就行。
第四步:重新尝试升级
清理完PPA后,先更新源并修复可能的依赖问题,再重新升级:
sudo apt update && sudo apt upgrade -y sudo do-release-upgrade
补充说明
你日志里的那些failed to remove行并不是对应每个PPA,而是这些包因为来自第三方PPA,版本和升级所需的官方包冲突,导致系统无法正常移除它们。只要找到提供这些包的PPA并清理,就能解决依赖冲突问题啦。
备注:内容来源于stack exchange,提问作者WesR




