12

修复 Ubuntu 无法进行版本更新的错误

 3 years ago
source link: https://beginor.github.io/2021/01/10/fix-ubuntu-do-release-upgrade-error.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

将 Ubuntu 服务器从 18.04 升级到 20.04 , 在执行 do-release-upgrade 时提示无法检查新版本, 完整的错误信息如下:

Checking for a new Ubuntu release
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings
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.

于是先用 ping 命令测试网络连接性:

ping -c 4 changelogs.ubuntu.com

PING changelogs.ubuntu.com (91.189.88.185) 56(84) bytes of data.
64 bytes from 91.189.88.185 (91.189.88.185): icmp_seq=1 ttl=46 time=235 ms
64 bytes from 91.189.88.185 (91.189.88.185): icmp_seq=2 ttl=46 time=237 ms
64 bytes from 91.189.88.185 (91.189.88.185): icmp_seq=3 ttl=46 time=235 ms
64 bytes from 91.189.88.185 (91.189.88.185): icmp_seq=4 ttl=46 time=235 ms

--- changelogs.ubuntu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 234.613/235.262/237.087/1.054 ms

可以 ping 通, 网络是没问题的。 用 curl 测试一下 https://changelogs.ubuntu.com/meta-release-lts , 看是不是 Ubuntu 的 changelogs 服务器问题

curl https://changelogs.ubuntu.com/meta-release-lts

Dist: dapper
Name: Dapper Drake
Version: 6.06 LTS
Date: Thu, 01 Jun 2006 9:00:00 UTC
Supported: 0
Description: This is the Dapper Drake release
Release-File: http://old-releases.ubuntu.com/ubuntu/dists/dapper/Release
ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement
UpgradeTool: http://old-releases.ubuntu.com/ubuntu/dists/dapper/main/dist-upgrader-all/current/dapper.tar.gz
UpgradeToolSignature: http://old-releases.ubuntu.com/ubuntu/dists/dapper/main/dist-upgrader-all/current/dapper.tar.gz.gpg

可以用 curl 获取到内容, changelogs 服务器看来也是没问题的。

因为是用 https 访问 changelogs 服务器, 突然想到会不会是因为 https 证书没有同步的导致的呢? 于是再尝试刷新一下服务器上的证书:

sudo update-ca-certificates --verbose --fresh
export SSL_CERT_DIR=/etc/ssl/certs

刷新完 https 证书之后, 再次运行 do-release-upgrade , 还是提示同样的错误。

经过一番搜索, 发现修改 MetaRelease.py 文件可以忽略证书的错误

sudo nano /usr/lib/python3/dist-packages/UpdateManager/Core/MetaRelease.py

修改内容如下:

from __future__ import absolute_import, print_function

+ import ssl
+ ssl._create_default_https_context = ssl._create_unverified_context

import apt
import apt_pkg

保存修改过后的 MetaRelease.py , 再次运行 do-release-upgrade , 终于可以进行更新了。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK