我刚刚使用标准do-release-upgrade
流程将 14.04 服务器升级到 16.04。现在当我尝试再次运行它以升级到 18.04 时,出现“未找到新版本”提示。
尝试过的事情:
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
sudo apt full-upgrade
sudo do-release-upgrade
(“未找到新版本。”)sudo do-release-upgrade -d
(“仅从最新支持的版本才可以升级到开发版本。”)sudo do-release-upgrade -p
(“未找到新版本。”)wget http://changelogs.ubuntu.com/meta-release
(成功获取文件,它显示正确的数据,包括 18.04 信息)sudo apt install update-manager-core
(“update-manager-core 已经是最新版本 (1:16.04.17)。”)vim /etc/update-manager/release-upgrades
(提示符按预期设置为“lts”)
问题:
- 为什么找不到 18.04 并无法升级?我不明白
do-release-upgrade
底层是如何工作的,为什么在成功访问元版本文件、文件包含正确数据且有较新的 LTS 版本并有指定版本时,它会抛出“未找到新版本”的错误。 - 我该如何升级这台机器?最佳且最安全的解决方法是什么?
答案1
请尝试安装 ca-certificates 包,然后运行“do-release-upgrade”。此问题的修复正在进行中,您可以通过以下方式关注https://launchpad.net/bugs/1796940。
答案2
也许这会对某些人有所帮助:
在我的特定情况下,当我尝试从 Xenial 升级到 Bionic 并使用我自己的 apt-mirror 与 Bionic 存储库时,我遇到了do-release-upgrade
找不到任何新版本的问题:
root@<my_host>:~# do-release-upgrade -c
Checking for a new Ubuntu release
No new release found.
我发现了一个源代码启用调试模式:
root@<my_host>:/root# export DEBUG_UPDATE_MANAGER=True
并确定了我的根本原因,即 apt-mirror 主机上的证书已过期:
root@<my_host>:/usr/bin# do-release-upgrade -c
Checking for a new Ubuntu release
MetaRelease.__init__() useDevel=False useProposed=False
/etc/update-manager/meta-release: https://<my-apt-mirror>/meta-release
/etc/update-manager/meta-release: https://<my-apt-mirror>/meta-release-lts
/etc/update-manager/meta-release: -development
/etc/update-manager/meta-release: -proposed
metarelease-uri: https://<my-apt-mirror>/meta-release-lts
MetaRelease.download()
result of meta-release download: '<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)>'
NO self.metarelease_information
No new release found.
答案3
由于防火墙、tls 配置、ca 证书等原因,下载元发布文件可能会失败。
我发现最简单的解决方法是打开文件 /etc/update-manager/meta-release,手动下载 URI_LTS 的文件并将其上传到其他地方(最好是无需 https 即可访问的地方),然后将新的 URL 放入该文件中:URI_LTS =http://my.own.server.example.com/copy-of-meta-release-lts
此后,升级对我来说效果很好。