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

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

我回答了这个问题关于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 现在可以下载,如果对此进行澄清就更好了。

答案1

您最初的猜测是正确的。15.04 支持至 2016-02-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它,我们似乎在确定要升级到哪个版本时跳过了不受支持的版本(除非您使用开发人员标志):

    # 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。我还认为我一定是在精神错乱的情况下尝试了do-release-upgrade -p,它试图直接将我带到 16.04。当我意识到它正在将我带到 xenial 时,一切都坏了,我不得不从工厂恢复。最后我决定等到 16.04 发布并进行全新安装。

答案2

do-release-upgrade 对“跳跃版本”一无所知。它只是从 Ubuntu 存储库维护者那里下载升级计划。这在执行发布升级自述文件

2)升级工具必须能够下载更新信息 如何执行升级(例如首先升级某些库等额外步骤)

此外,在规范中自动升级

包含可用发行版信息的元发布文件存储在中央服务器上,每次运行更新管理器时都会进行 If-Modified-Since 测试。如果发现新版本,更新管理器会以可视化方式显示。

这使得 do-upgrade-release 和任何其他工具可以无缝升级。

相关内容