2025年9月1日月曜日

Ubuntu 22.04.5 LTS から 24.04.3 LTS に do-release-upgrade できない

結論

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)