結論
do-release-upgradeを実行した際、Pythonコード内の urlopen() がタイムアウトしていた。
なぜかここだけ、タイムアウトが5秒でハードコードされていた。
そのため、/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeFetcherCore.py を編集して68行目の socket.setdefaulttimeout(5) を socket.setdefaulttimeout(10) に編集したところ、問題なく動作した。
def showReleaseNotes(self):
if '--frontend=DistUpgradeViewNonInteractive' in self.run_options:
return True
if self.new_dist.releaseNotesURI is not None:
uri = self._expandUri(self.new_dist.releaseNotesURI)
timeout = socket.getdefaulttimeout()
try:
socket.setdefaulttimeout(5)
release_notes = urlopen(uri)
notes = release_notes.read().decode("UTF-8", "replace")
現象
本記事は do-release-upgrade -c が正常に表示されるのに do-release-upgrade が「リリースアナウンスをダウンロードできません」が表示されて実行できない場合を対象とします。
$ sudo do-release-upgrade -c 新しい Ubuntu のリリースをチェックしています 新しいリリース '24.04.3 LTS' が利用可能になっています。 do-release-upgrade' を実行してアップグレードしてください $ sudo do-release-upgrade 新しい Ubuntu のリリースをチェックしています リリースアナウンスをダウンロードできません インターネット接続を確認してください。
あとがき
do-release-upgrade でエラーを検索しまくったのですが同類のエラーは見つからず。。。orz...
結局 DEBUG_UPDATE_MANAGER=1 do-release-upgrade でデバッグ表示してデバッグプリント追加しながら追いかけました。
そもそも urlopen() がなんで5秒以上もかかるのかしら、自分の環境がおかしいのかしら?
(END OF DOCUMENT)