为什么`do-release-upgrade`会跳过一个版本?


14

我回答这个问题,关于do-release-upgrade不允许的14.10至15.04的升级才15.10,我认为这是由于15.04生活的幸福终点。

一个用户(@xangua)发布了使用不能跳过发行版的信息do-release-upgrade,因此我通过在14.04框上运行命令来查看此信息,但这就是混乱的开始。

我的14.04想要直接升级到15.04?

当然,这使我的答案无效,因为15.04是寿命终止,但是如果不是基于寿命终止,为什么此命令似乎正在跳过版本?

没有迹象表明升级后会下载14.10中的任何内容,并且software-updater说Ubuntu 15.04现在可以下载了,对此做些澄清就好了。


2
14.04系统要升级到15.04是不正常的,因为不支持此操作。例如,15.04的发行说明仅提及从14.10升级。当我do-release-upgrade在14.04系统上运行时,它会说“未找到新版本”,这是正常现象,因为14.04系统只能升级到14.10,但是14.10现在已经停产。
fkraiem '16

1
因此,您的系统上一定有异常。您的版本是ubuntu-release-upgrader-core
fkraiem '16

1
我无法再提供此信息,由于混乱了该命令,安装已消失,重新安装比纠正由于停止升级而导致的错误更容易。
Mark Kirby

1
实际上,@ fkraiem支持跳过版本,因为存储库管理器可以“编写”脚本。
Braiam '16

Answers:


12

您最初的猜测是正确的。在2016年2月4日之前支持15.04,因此do-release-upgrade与您所拥有的版本相比,正在尝试将您升级到下一个受支持的版本。

这是来自的正常升级提示模式的说明/etc/update-manager/release-upgrades

检查是否有新版本可用。如果找到多个新发行版,发行版升级程序将尝试升级到立即替代当前正在运行的发行版的发行版。

因此,如果我使用的是14.04,则应该尝试将我带到14.10,但现在do-release-upgrade尝试将OP(和我)带到15.04。

因此,通读/usr/lib/python3/dist-packages/DistUpgrade/MetaRelease.py它似乎在确定要升级到哪个版本时会跳过不支持的版本(除非您使用的是developer标志):

    # then see what we can upgrade to
    upgradable_to = ""
    for dist in dists:
        if dist.date > current_dist.date:
            # Only offer to upgrade to an unsupported release if running
            # with useDevelopmentRelease, this way one can upgrade from an
            # LTS release to the next supported non-LTS release e.g. from
            # 14.04 to 15.04.
            if not dist.supported and not self.useDevelopmentRelease:
                continue
            upgradable_to = dist
            self._debug("new dist: %s" % upgradable_to)
            break

我应该补充一点,我不建议您尝试通过解决这个问题do-release-upgrade -d。当我尝试使用时prompt=normal,我得到了404,因为14.10是EoL。我也认为在del妄中我一定已经尝试过do-release-upgrade -p,试图将我直接带到16.04。到我意识到将自己带到Xenial的时候,一切都坏了,我不得不从工厂中恢复。最后,我决定等到16.04发布并重新安装。


1
您有什么要备份的,还是您只是猜到了?
肯·夏普

1
添加了详细信息。我遇到了与OP相同的问题。
mmaluff '16

3
我认为一个问题的答案很明确:)
Mark Kirby

2
此出色答案中描述的行为仍然适用,并且适用于通过Software Updater和进行的升级do-release-upgrade。当前,16.04 LTS系统会自动提供升级到17.04的功能,并且会直接升级,而跳过16.10,因为它已过期。这些答案将受益于此更正-或可以发布一个完整描述当前行为的新答案。您要发布什么吗?
伊利亚·卡根

5

do-release-upgrade对“跳转版本”一无所知。它只是从Ubuntu存储库维护者下载升级计划。这在do-release-upgrade README中指定:

2)升级工具必须能够下载如何执行升级的更新信息(例如,诸如首先升级某些库之类的其他步骤)

另外,在有关自动升级的规范中:

包含有关可用发行版信息的元发行文件存储在中央服务器上,并且在每次运行更新管理器时都经过If-Modified-Since测试。如果找到新版本,则update-manager会直观地显示出来。

这就是允许do-upgrade-release和任何其他工具进行无缝升​​级的原因。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.