如何修复更新问题(Ubuntu 20.04)

如何修复更新问题(Ubuntu 20.04)

我已经完成了对 Ubuntu 20.04 的更新,并尝试更新软件包,但遇到了一个错误,其中一个软件包被保留了。这是运行“sudo apt upgrade”后的输出:

Reading package lists...
Done Building dependency tree
Reading state information...
Done Calculating upgrade... 
Done The following packages have been kept back:   
gdb gir1.2-peas-1.0 libpeas-1.0-0 libsmbclient libwbclient0 samba-libs 
0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.

我尝试运行多个命令来清除损坏的包/依赖项,包括:

sudo apt clean
sudo apt autoclean
sudo apt autoremove

似乎没有任何效果(甚至 dist-upgrade 也没有任何作用),当我尝试手动更新软件包时,我收到以下消息:

sudo apt-get install gdb

The following packages have unmet dependencies:
 gdb : Depends: libpython3.8 (>= 3.8.0~a1) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

我尝试了很多方法但都没有任何结果,所以我想知道我有什么选择。

运行apt cache policy gbd libpython3.8产生输出:

gdb:
  Installed: 8.1-0ubuntu3.2
  Candidate: 9.1-0ubuntu1
  Version table:
     9.1-0ubuntu1 500
        500 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
 *** 8.1-0ubuntu3.2 100
        100 /var/lib/dpkg/status
libpython3.8:
  Installed: (none)
  Candidate: 3.8.2-1ubuntu1
  Version table:
     3.8.2-1ubuntu1 500
        500 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages

答案1

我也遇到了这个问题,这就是我解决它的方法

首先不要忘记这两点:

-- 1 -- 完成所有步骤前请勿重启电脑

-- 2 -- 不要忘记在重启之前通过执行以下命令来更新 grub: sudo update-grub2

这里的问题是,当你将 ubuntu 从 18.04 升级到 20.04 时,系统并没有用 focal 替换 bionic 的每个实例:它没有用 libpython3.8-stdlib(= 3.8.2-1ubuntu1.1)替换 libpython3.8-stdlib(3.8.2-1+bionic1)所以解决方案是手动替换它:) 执行此操作的步骤如下:

1 - 将依赖于该库的包的名称保存在文本文件中,以便稍后重新安装它们运行:sudo apt-get autoremove libpython3.8-stdlib 一条消息将显示所有这些包:

(( apg apparmor apport apport-gtk ...xserver-xorg-video-vmware xwayland yelp yelp-xsl))

将它们复制到文本文件中,然后点击“是”以卸载 libpython3.8-stdlib 的仿生版本

2- 安装焦点版本:

sudo apt-get install libpython3.8-stdlib

3-现在逐个安装保存在文本文件中的软件包:您可以创建一个这样的脚本文件:((...

sudo apt-get install gir1.2-gck-1
sudo apt-get install gir1.2-gcr-3
sudo apt-get install gir1.2-gdm-1.0
sudo apt-get install gir1.2-geoclue-2.0
sudo apt-get install gir1.2-gnomebluetooth-1.0

... ))

如果包文本文件中没有 ubuntu-desktop,请不要忘记安装它 sudo apt-get install ubuntu-desktop(非必填)

4-更新你的 grub,运行: sudo update-grub2

5- 最后重启你的电脑

就这样 :)

答案2

由于使用 deadsnakes ppa,我也遇到了这个问题,并通过几个简单的步骤解决了它:

# sudo apt list --upgradable
  Listing... Done
  gdb/focal-updates 9.2-0ubuntu1~20.04 amd64 [upgradable from: 8.1.1-0ubuntu1]
  gir1.2-peas-1.0/focal,focal 1.26.0-2 amd64 [upgradable from: 1.22.0-2]
  libpeas-1.0-0/focal,focal 1.26.0-2 amd64 [upgradable from: 1.22.0-2]
  libsmbclient/focal-updates,focal-security 2:4.11.6+dfsg-0ubuntu1.6 amd64 [upgradable from: 2:4.7.6+dfsg~ubuntu-0ubuntu2.21]
  libwbclient0/focal-updates,focal-security 2:4.11.6+dfsg-0ubuntu1.6 amd64 [upgradable from: 2:4.7.6+dfsg~ubuntu-0ubuntu2.21]
  samba-libs/focal-updates,focal-security 2:4.11.6+dfsg-0ubuntu1.6 amd64 [upgradable from: 2:4.7.6+dfsg~ubuntu-0ubuntu2.21]

# python3 --version
  Python 3.8.8

# sudo apt list | grep python3.8
  ==> few entries were pointing to bionic

# sudo rm -f /etc/apt/sources.list.d/deadsnakes-ubuntu-ppa*

# sudo apt-get install gdb/focal gir1.2-peas-1.0/focal libpeas-1.0-0/focal python3.8/focal python3.8-minimal/focal libpython3.8/focal libpython3.8-minimal/focal libpython3.8-stdlib/focal

# sudo apt update

# sudo apt list --upgradable

# sudo apt upgrade

# sudo apt upgrade samba-libs

# sudo apt list --upgradable 
  Listing... Done
# sudo apt update
  Reading package lists... Done
  Building dependency tree       
  Reading state information... Done
  All packages are up to date.

# sudo apt list | grep python3.8
  ==> all entries should point to focal

答案3

我遇到了类似的情况,因为我从死蛇PPA 在 18.04 中,因此系统 Python 3.8 软件包被保留。我不得不运行

sudo apt-get purge libpython3*

摆脱死蛇包。

谨防!正如穆罕默德·阿里警告的那样,这将删除大部分 Ubuntu 软件包并使你的系统无法使用。重新安装系统之前请勿重新启动。

然后我重新安装了系统

sudo apt install ubuntu-desktop

全新启动后,现在一切都运行良好。

答案4

我今天能够升级一个系统,并且在此过程中我注意到了一些我将与大家分享的事情......

我从 18.04 升级到 20.04 的一个系统需要几组(大约 5 组)更新 && 升级。在最后两组更新过程中,我收到通知说除了我已经完成的操作之外,还有更多需要更新的内容和文件上传的指示。在终端中执行最后一个“sudo apt upgrade”命令时,我收到了大量升级的通知。它没有表明它们是升级到 20.04,但事实证明它们是。要实现这一点,需要将更新设置为“适用于任何版本”。这台机器正在运行!

第二台电脑我直接清空了。只将数据备份到另一块磁盘,插入一个活动的 USB,然后按照说明操作。在收到多次错误消息,提示软件包损坏和文件丢失后,我这样做了。我需要结束这种沮丧。

第三台机器是旧的。这台笔记本电脑已从 14.04 升级到 16.04,再升级到 18.04(所有 LTS)。有很多遗留的东西,包括一些 i386 文件和程序。这台不会升级!随机错误消息包括一个文件未升级;7 个文件未升级;12 个文件未升级;只有最新支持的版本才能升级到开发版本;转到软件更新程序(GUI),我会收到需要加载其他文件的通知,有时是 3 个,有时是 6 个,以及介于两者之间的每个数字;我收到通知说我的互联网连接或服务器有问题;等等。其中大部分与我使用第一台计算机所经历的过程相同。

而且,这是我的猜测……20.04 版本太新了,下载的人太多了,服务器无法处理流量(我尝试过其他服务器,结果相同)。更新和升级被零碎地输入到我的电脑中。以下是我所做的:- 在终端中 - sudo update && upgrade,然后 sudo do-release-upgrade -d - 在更新程序(GUI)中 - 单击设置,然后单击更新,交替将更新设置为“...任何新版本”,然后设置为“...长期支持版本”;也尝试不同的服务器。

这很令人恼火,但我认为我们唯一能做的就是继续使用计算机,输入相同的命令;交替使用终端和更新程序(GUI),直到最终我们找到圣杯......然后升级!

相关内容