メリークリナックス!今回は Ubuntu ディストリビューションのアップグレードに関するお話です。
先日まで、恥ずかしながら数ヶ月前にサポート切れした Ubuntu 環境(23.10)を使っていました。LTS ではないのでサポート期間が短いことは分かっていたんですが、その環境は研究で使用しており、実験環境に影響が出うるなどの不安事項によりアップグレードを怠っていました。
普通に apt
でアップグレードすればいいじゃないか、と思われるかもしれないですが、Ubuntu の場合はそのバージョンのサポートが切れると、apt
のリポジトリからもパッケージリストが削除されてしまうのです。つまり、apt update できなくなります。
今回はその対処をしたときの話です。
環境
- Ubuntu 23.10.1
アップグレードできない問題
ずばり、apt update
しようとしたときに 404 Not Found が発生してしまいます。ネットワークには接続できているのに、一部のパッケージリストにアクセスできないと言われているのです。
$ sudo apt update
無視:1 http://ports.ubuntu.com/ubuntu-ports mantic InRelease
無視:2 http://ports.ubuntu.com/ubuntu-ports mantic-updates InRelease
無視:3 http://ports.ubuntu.com/ubuntu-ports mantic-security InRelease
ヒット:4 https://download.opensuse.org/repositories/home:/npreining:/debian-ubuntu-onedrive/xUbuntu_24.04 ./ InRelease
エラー:5 http://ports.ubuntu.com/ubuntu-ports mantic Release
404 Not Found [IP: 2620:2d:4000:1::16 80]
エラー:6 http://ports.ubuntu.com/ubuntu-ports mantic-updates Release
404 Not Found [IP: 2620:2d:4000:1::16 80]
エラー:7 http://ports.ubuntu.com/ubuntu-ports mantic-security Release
404 Not Found [IP: 2620:2d:4000:1::16 80]
パッケージリストを読み込んでいます... 完了
E: リポジトリ http://ports.ubuntu.com/ubuntu-ports mantic Release には Release ファイルがありません。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
E: リポジトリ http://ports.ubuntu.com/ubuntu-ports mantic-updates Release には Release ファイルがありません。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
E: リポジトリ http://ports.ubuntu.com/ubuntu-ports mantic-security Release には Release ファイルがありません。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
(ログが流れてしまったので上記は再現です。細かいところが違うかもしれません)
原因
23.10 Mantic Minotaur のサポート期限が切れ、ubuntu-ports のリポジトリから削除されてしまったのが原因です。
サポートが切れると apt update
もできなくなるんですね。
アップグレードする
サポートが切れてるならさっさとディストリビューションをアップグレードして、その後 apt update
するか…と思ってもできません(このままでは)。なぜなら do-release-upgrade
では、事前に apt update
と apt upgrade
によって全パッケージの更新が済んでないとアップグレードが中断されてしまうからです。これは詰んだ!
$ sudo do-release-upgrade
Checking for a new Ubuntu release
Your Ubuntu release is not supported anymore.
For upgrade information, please visit:
http://www.ubuntu.com/releaseendoflife
Please install all available updates for your release before upgrading.
対処
Ubuntu では、サポートが切れたディストリビューションのリポジトリは old-releases.ubuntu.com
に移動します。
よって、apt
のソースリストを編集し、リポジトリの URL を old-releases.ubuntu.com
に変更すれば OK です。
まずは /etc/apt/sources.list
のバックアップを取っておき、エディタで開きます。
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
$ sudo vim /etc/apt/sources.list
私の環境では内容は以下の通りになっていました。
deb http://ports.ubuntu.com/ubuntu-ports mantic main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports/mantic-updates main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports/mantic-security main restricted universe multiverse
deb http://archive.raspberrypi.org/debian/ buster main
deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
deb http://ftp.de.debian.org/debian buster main
このうち、ports.ubuntu.com
を old-releases.ubuntu.com
に変更します。サードパーティ製のリポジトリ(この場合は archive.raspberrypi.org/
など)は変更しなくてよいです。
deb http://old-releases.ubuntu.com/ubuntu mantic main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ mantic-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ mantic-security main restricted universe multiverse
deb http://archive.raspberrypi.org/debian/ buster main
deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
deb http://ftp.de.debian.org/debian buster main
これで保存し、さらに apt
のパッケージ情報のキャッシュをクリアしておきます。
$ sudo rm -rf /var/lib/apt/lists/*
再度 apt update してみる
これで apt update
できるか試してみました。
別の opensuse のサードパーティリポジトリで署名無効のエラーが発生しましたが、これについては下記の記事に従い対処しました。今回の本題とは無関係ですので、ここでは触れません。
なんとかサポート切れしたディストリビューションでも apt update
が叶いました。
今度こそアップグレードする
以降、do-release-upgrade
でアップグレードを試みました。
特に何の問題もなくアップグレードが進みました。無事 Ubuntu 24.04.1 LTS にアップグレード完了。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.1 LTS
Release: 24.04
Codename: noble
/etc/apt/sources.list
も新しいバージョンにリポジトリ URL に書き換わっていました。
deb http://ports.ubuntu.com/ubuntu-ports/ lnoble main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ lnoble-updates main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ lnoble-security main restricted universe multiverse
おわりに
サポートが切れてしまったら apt
のリポジトリを old-releases.ubuntu.com
に置き換えよう。置き換えたらササッとディストリビューションをアップグレードしよう。
というかサポートが切れる前にこまめにアップグレードしよう。自分への戒めです。