You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 18.04升级至20.04时do-release-upgrade因非官方PPA失败,求助定位并清理问题PPA

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-minimalpython-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

火山引擎 最新活动