升级Ubuntu 18.04至18.10时出现错误:“请在升级之前安装所有可用的更新。”

在一台联想笔记本上,我想从Ubuntu 18.04升级到Ubuntu 18.10(budgie)。
当我在更新管理器中选择升级时,对话框消失了,但没有任何反应。升级没有开始。
注意-今天早上我用另一台笔记本执行了相同的步骤,Ubuntu成功升级了。
do-release-upgrade无法升级,并显示以下错误:
Please install all available updates for your release before upgrading.

如何才能成功升级系统?

2重新启动你的系统。打开一个终端。尝试执行命令 do-release-upgrade。如果失败,请编辑你的问题,包括完整的终端输出。 - user535733
1终端回复:“请在升级之前安装所有可用的更新版本。” - dupont
3在终端中输入“sudo apt-get update”和“sudo apt-get dist-upgrade”,然后启动更新管理器,我找到了解决方案并开始升级。 - dupont
2请注意,如果您通过apt-mark hold命令保留了任何软件包,您将需要取消保留或删除它们以避免出现此错误。 - Mahn
10个回答

允许从LTS版本升级到非LTS版本(20.04到20.10,18.04到18.10)

在20.04版本中,他们对失败的sudo do-release-upgrade添加了更清晰的提示信息:

Checking for a new Ubuntu release
There is no development version of an LTS available.
To upgrade to the latest non-LTS develoment release 
set Prompt=normal in /etc/update-manager/release-upgrades.

以前,例如从18.04到18.10,有时会给出一个不明确的错误消息,正如问题发布者所报告的那样。
Please install all available updates for your release before upgrading

解决这两个问题的方法是进入以下内容:
software-properties-gtk

或者通过Windows键的破折号访问,它被命名为:
软件和更新
然后:
- "更新"选项卡 - "通知我有新的Ubuntu版本"下拉菜单 - "对于任何新版本"

enter image description here

然后像往常一样:
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
sudo do-release-upgrade

截至22.04,为了使上述工作顺利进行,您可能还需要解决Ubuntu拒绝修复的ZFS空间问题,这真让人疲倦:引导zpool空间不足,无法再运行更新
zfs list -t snapshot -r  | grep auto | cut -f1 -d' ' | xargs -n 1 sudo zfs destroy

没有设置对于任何新版本,它无法找到新版本,具体如下:
No new release found.

由于某种原因,apt-get错过了其中一个升级,结果我得到了:
Please install all available updates for your release before upgrading."

只有apt起作用。 从19.10升级到20.04:手动安装任何未自动升级的软件包 我在尝试从19.10升级到20.04时遇到了这个问题,它显示了相同的错误信息:请在升级之前安装所有可用的更新,所以我也会在这里提供解决方案给谷歌用户。
当我尝试通常的方法时:
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
sudo do-release-upgrade

sudo apt upgrade 告诉我:

The following packages have been kept back:
  libomp-dev
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

然后do-release-upgrade出现了错误:请在升级之前安装所有可用的更新。 解决方法是手动安装libomp-dev
sudo apt install libomp-dev

这给了我一些冲突解决的选项,我选择了其中一个,然后do-release-upgrade就成功了! sudo apt upgrade libomp-dev没有成功,只有apt install才行,upgrade失败了,错误信息如下:
The following packages have unmet dependencies:
 libomp-dev : Depends: libomp-9-dev (>= 9~) but it is not going to be installed
E: Broken packages

do-release-upgrade -d启用了开发版本,这通常不是您想要的

我建议不要使用do-release-upgrade -d,除非您确切知道自己在做什么,因为它会升级到不稳定的开发版本,而这不是大多数用户所希望的。

升级只能在ISO发布几天/几周后才可用

还请注意,升级并不会在18.10光盘发布的同时发布,似乎您必须等待几天,直到18.10.1发布后才能进行升级。

如果您在此之前尝试sudo do-release-upgrade,您仍将获得以下消息:

No new release found.

".0"版本的ISO通常也更容易出现错误。例如,当我尝试使用21.04版本的ISO时,界面会随机崩溃,很可能是由于Wayland引起的:Ubuntu UI screen image freezes randomly during usage after fresh 21.04 install, suspecting Wayland or Nouveau所以,除非你想帮助调试,否则最好等待.1版本发布。

12+1 关于使用apt而不是apt-get的末尾注释正是我所需要的。 - Phlarx
4有趣的是,我发现自己遇到了相反的问题,“apt” 给了我全清的结果,但是“apt-get” 却显示有一个被保留的软件包。 - n8chz
1这边也遇到了同样的问题。解决办法是先用 apt 运行 updateupgrade,然后再用 apt-get 来更新。 - Eerik Sven Puudist
执行这个命令有助于清理系统: sudo apt-get autoremove - Eugene Kovalev
6sudo apt update 提示有一个可升级的软件包,并建议使用 apt list --upgradable 命令查看。这个软件包是 virtualenvwrapper。然后我使用 sudo apt install virtualenvwrapper 进行了升级。这解决了我的问题。 - akaihola
@akaihola 在阅读了你的评论后,我注意到我在升级到20.04时遇到了类似的问题,然后根据你的建议解决了它。谢谢! - Ciro Santilli OurBigBook.com
对我来说,升级从19.10到20.04没有问题。你是怎么发现libomp-dev出了问题的呢? - FirePapaya
@BurningPapaya sudo apt upgrade 告诉我,就像答案中提到的那样 :-) - Ciro Santilli OurBigBook.com
在“但它不会被安装”之后,你只是轻描淡写地跳过了这个话题,转而谈论下一个话题。我没有损坏的软件包,而那个无法安装的软件包之所以无法安装,是因为它坚持要删除其他重要的软件包。 - Mark Jeronimus

我在从18.10升级到19.04时遇到了相同的问题。我遇到这个问题的原因是某些软件包被标记为“kept back”。在这种情况下,它们与MSSQL相关。
szymon@szymon-Lenovo-Z580:~$ sudo apt upgrade 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  libodbc1 unixodbc
0 to upgrade, 0 to newly install, 0 to remove and 2 not to upgrade.

我只是移除了它们及其依赖项。
szymon@szymon-Lenovo-Z580:~$ sudo apt remove unixodbc libodbc1
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  odbcinst odbcinst1debian2
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED
freetds-bin libodbc1 msodbcsql17 mssql-tools unixodbc

然后,接下来的一系列命令使我成功升级了:
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
sudo do-release-upgrade

编辑:后来我发现了类似问题的详细答案,可能会帮助实现相同的目标。这里是迈克尔的回答

3啊,是的,这个方法有效。原来升级只有在你电脑上升级所有软件包之后才能生效。我猜这是为了防止升级出现问题而采取的预防措施,这很合理 - 对我来说,移除Wine并升级它解决了问题。 - exts
1这个效果非常好! - Jilber Urbina
1先生,您是一位英雄。 - Sanjay Prajapat
同样的解决方案也适用于21.x到22 LTS的升级!太棒了! - attaboyabhipro
这些都不起作用。有没有一种强制升级或强制重置的方法,而不需要从USB重新安装? - mathtick
Ubuntu使用分阶段更新,这就是为什么有些更新会被推迟。有关更多详细信息,请参阅:https://askubuntu.com/q/1431940/2355(混淆的措辞“被推迟”是由于[此错误](https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1988819)) - undefined

安装所有更新,然后通过终端执行系统升级,应该可以解决问题。
sudo apt-get update && sudo apt-get upgrade
sudo apt dist-upgrade
sudo do-release-upgrade

10注意,-d 是升级到开发版本的选项,对于大多数用户来说可能是个糟糕的主意。请查看这个选项代替:https://askubuntu.com/questions/1085295/upgrade-form-18-04-to-18-10-issue/1100915#1100915 - Ciro Santilli OurBigBook.com
10在执行do-release-upgrade之前,还需要调用apt dist-upgrade - kap
11即使执行了dist-upgrade,仍然出现错误提示:“在升级之前,请安装所有可用的更新。” - Cerin

我遇到了一些Wine软件包的“保留”问题,但是我并不需要它们,所以只需执行apt-get remove (软件包),然后再执行apt-get autoremove,问题就解决了。

1这个答案节省了我大量在互联网上研究这个错误的时间。 - Diego Alberto Zapata Häntsch
1很高兴能帮到你! - mahemoff


我在我的联想ThinkPad X240上遇到了完全相同的问题。 在终端中运行 sudo apt-get update && sudo apt-get upgrade 之后,图形化的更新管理器(软件更新)正常工作...

此外,还要手动检查一下当你使用sudo apt update时,它是否显示All packages are up to date
因为,即使你使用sudo apt upgrade,系统可能不会升级所有内容。
在我的特定情况下,Wine根本没有升级,正因为如此,我无法成功执行sudo do-release-upgrade。所以,我移除了Wine,然后执行sudo apt autoremove
之后,我可以轻松地更新我的发行版本。

只是在讨论中补充我的一分建议:在我的情况下,有一个单独的“kept-back”软件包(webp),它没有被apt“看到”。我尝试了sudo apt update && sudo apt full-upgrade/dist-upgrade,一切都很好,也是最新的。同时,sudo apt-get update && sudo apt-get full-upgrade/dist-upgrade也没有显示任何异常。
然后我尝试了sudo apt-get upgrade,最终找到了问题所在。
The following packages have been kept back:
 webp

现在我可以升级了!

Checking for a new Ubuntu release
You have not rebooted after updating a package which requires a reboot. Please reboot before upgrading.

重启后显然...

你说的“现在”是什么意思?你做了什么? - mathtick
我不记得sudo apt-get upgrade是否建议升级webp(可能是的,所以我只是按下了Y),或者我是否需要执行sudo apt remove webp ; sudo apt install webp,但在最新的数据包更新后,我能够升级到新版本。 - Avio

投票者注意:Ubuntu 18.04是最后一个具有支持的32位升级路径的Ubuntu版本。后续版本的升级路径已被禁用。这不是“不是答案”或类似情况,而是已经确认的禁用升级路径的活动情况。32位(i386)的Ubuntu在18.04之后不再支持升级。-- Thomas Ward,Ubuntu核心开发人员和Ask Ubuntu的版主
请问您使用的操作系统版本是32位还是64位? 我在我的Lubuntu机器上使用sudo do-release-upgrade命令后,终端的输出结果是:
apt architecture is i386 

Upgrades from 18.04 on the i386 architecture are not supported at 
this time.

(命令sudo do-release-upgrade -d用于升级到最新的开发版本!而且只能从最新版本进行升级。)

在我的情况下,运行了apt-get dist-upgrade之后,我能够继续执行do-release-upgrade
apt-get update
apt-get upgrade
apt-get dist-upgrade 
do-release-upgrade