Debian11(bullseye)から12(bookworm)へアップグレード
この間Debian10(buster)から11(bullseye)にアップデートしたばかりのような気もしましたが、あれから1年と9カ月もたったようで、Debian12(bookworm)が登場しました。
そこで今回も、アップグレードをしてみたいと思います。
事前確認
毎回似たような内容になっていますが、それでも変更点が存在します。第4章 Debian 11 (bullseye) からのアップグレードを一度読んでおくのがおすすめです。
ここでは筆者そこに記述のある作業のうち筆者が重要だと思う部分をピックアップして紹介します。
- 接続環境
リモート接続では作業中に接続が途切れることが考えられます。tmuxなどでそれに備えましょう。
- バックアップ
- 最新の状態までアップグレード
- 不要なパッケージを除去
dpkg -l でインストールされているパッケージの一覧を見ることができます。また、APTのフラグを管理する apt-mark コマンドを使い「 apt-mark showmanual 」とすることで手動でインストールのフラグがついたパッケージだけのリストを表示することができます。
- 不要な残存設定の除去
先のページでは次のように残存設定を見つけるように提案されていました。
# find /etc -name '*.dpkg-*' -o -name '*.ucf-*' -o -name '*.merge-error'APT でアップグレードした際に残した元の設定ファイルなどを、退避用のプレフィックスで検索しています。
残存設定があると、アップグレードによる生成される残存設定と混在し、リカバリが必要な際に混乱が生じる可能性があります。
- Debian由来ではないパッケージの削除
apt-forktracerをインストールして、現在サポートされていなかったり、自身でインストールしたパッケージ当を探して除去します。
これらは自動でアップグレードされないので、あとから再設定する必要があります。また残しておくと自動で削除されることがあるようです。
(たとえば、由来ではないパッケージが別の由来パッケージに依存していた場合、その管理はできていない為、apt autoremoveは利用しているパッケージを消してしまうことがあります)
また非公式にバックポートされたようなパッケージも同様です。
- hold状態のパッケージがあれば解除
アップグレードに必要なパッケージがホールドされていると、更新は失敗します。
# apt-mark showholdでホールドされているパッケージを確認できます。
- /etc/apt/sources.listの編集
筆者の場合はコードネームを指定していましたので、 bullseye の部分を新しいコードネーム bookworm に変更しました。
今バージョンから、従来 non-free に所属していたファームウェアパッケージは専用のアーカイブエリア 「 non-free-firmware 」に移動したそうです。
筆者は設定していませんが、bullseye-backports を設定していたらそれを消して bookworm-backports を加えるようにも案内されていました。
sources.list
deb http://deb.debian.org/debian bookworm main contrib non-free-firmware deb http://security.debian.org/debian-security bookworm-security main contrib non-free-firmware
ちなみに、bookworm をクリーンインストールする場合は次のようなリストになっていました。
sources.list
deb http://deb.debian.org/debian/ bookworm main non-free-firmware # -src はソースコードを必要とする際のレポジトリです deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware deb http://security.debian.org/debian-security bookworm-security main non-free-firmware deb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware # -updates は小規模なバクフィックスや、更新用です deb http://deb.debian.org/debian/ bookworm-updates main non-free-firmware deb-src http://deb.debian.org/debian/ bookworm-updates main non-free-firmware
記述を変更したら、「 apt update 」で更新します。
- セッションの記録
/usr/bin/script を使ってアップグレードセッションの記録をすることが推奨されています。
-t はメッセージが表示されたタイミングの出力を指定するもので、これは標準エラーに出力されるので、2>として標準エラーをリダイレクトして保存します。
-a ではシェルのセッションの入出力をアペンド出力します。
-t が標準エラーにデータを出力するのは、通常のメッセージが標準出力に出力されるためそれとタイミングデータを分ける為です。
タイミングデータの取得は必須ではありませんが、これがあると scriptreplay を使ってあとからセッションをリプレイできます。
すべてのログをとり終えたら、exit コマンドで終了させます。
# script -t 2>~/test.time -a ~/script.log Script started, output log file is '/root/script.log', timing file is '/dev/stderr'. root@debian-doc:~# aaa bash: aaa: コマンドが見つかりません root@debian-doc:~# ls -l 合計 0 -rw-r--r-- 1 root root 0 9月 20 20:38 script.log -rw-r--r-- 1 root root 0 9月 20 20:38 test.time root@debian-doc:~# exit
このあと、次のようにscriptreplayコマンドを使うと、入出力があったタイミングを再現されます。
# scriptreplay /root/test.time /root/script.log # aaa ... # exit
- 最小のアップグレード
アップグレードを直接行った場合、残しておきたいパッケージが大量に削除されてしまうことがあります。このため2段階のアップグレードが推奨されています。
このコマンドでは、他のパッケージをインストール・削除する必要がないパッケージだけをアップグレードします。
# apt upgrade --without-new-pkgs - ディスク領域のチェック
最小アップグレードを行った後、次のようにすることで、必要なディスク領域や削除されるパッケージを確認できます。
このコマンドは最小のアップグレードをおこなってからでないとエラーで終了する事があります。
# apt -o APT::Get::Trivial-Only=true full-upgrade必要な領域や削除されるパッケージが表示されたとしても、--trivial-only オプションを付けているので、既存のパッケージを削除やアップグレードする場合はエラーとなります。
この仕組みを使って、実際の full-upgrade の実行を止めています。
- フルアップグレード
問題がなければフルアップグレードをします。
# apt full-upgrade
変更点
Debian Bullseye から Bookworm にアップグレードした際の変更点で、で筆者の気になったものを紹介しておきます。
- ntpsec
ntp パッケージが ntpsecパッケージに変わりました。systemd-timesynct chrony と openntpd は引き続きサポートするようです。
- DNS
DNSでは、systemd-resolved が使われますがデフォルトではインストールされていないようです。明示的にインストールしないと DNS や mDNS が使えません。
- MariaDBのパッケージ名
MariaDBのサーバークライアントのパッケージ名にはこれまでバージョンがついていましたが、バージョン部分が除去されました。
mariadb-server-10.5→mariadb-server
- rsyslogのデフォルトインストール廃止
bookworm からは rsyslogはデフォルトでインストールされません。journalctlに置き換えられます。
なので、通常存在する/var/log/syslogは生成されません。データは/var/log/journal にバイナリの形状で保存されます。これを確認したい時は次のようにします。
# journalctl -nnオプションは行数指定で、数を与えない場合は10行の最新ログを表示します。また-eオプションは最新の1000行を取得します。-fオプションは最新のログだけの表示と、新しいログの追加を待機して表示ます。
ただし、アップグレードではbullseye上にrsyslogが存在してるので、rsyslogはアップグレード後も残ります。
このrsyslogや、意図的にインストールした rsyslog の時刻の精度が上がっています。
- Nonfreeファームウェアの警告
もし、aptによるnon-free-firmwareの警告を消したい場合は次のようにファイルを作成すると警告は消えるそうです。
/etc/apt/apt.conf.d/no-bookworm-firmware.conf
APT::Get::Update::SourceListWarnings::NonFreeFirmware "false";
アップグレード後の apt update で 「 xxxx Key is stored in legacy trusted.gpg keyring 」エラーがでる場合は、リンク先のように修正すると改善されます。