※弊社記事はたぶんにPRが含まれますので
話半分で受け取ってください。

サーバを Debian 12 bookworm にアップグレードした

Debian 12 bookworm がリリースされてたのでサーバの Debian をアップグレードしました。

1. アップグレードの下準備

1.1. 稼働中のDebianのバージョン確認

 以下のコマンドで現在動いている Debian のバージョンを確認できます。

$ cat /etc/debian_version 
11.7

またはこちらのコマンド。

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 11 (bullseye)
Release:	11
Codename:	bullseye

1.2. 稼働中のDebianのアップグレード

 現在動いている Debian を最新の状態にアップグレードしておきます。

# apt update
# apt upgrade
# apt dist-upgrade

 apt update すると最後のほうに以下のようなメッセージ出るかもですが、これは Debian 12 bookworm のリリースに伴い、11 bullseye が stable ブランチから oldstable になったというお知らせです。

N: Repository 'http://security.debian.org bullseye-security InRelease' changed its 'Suite' value from 'stable-security' to 'oldstable-security'
N: Repository 'http://ftp.jp.debian.org/debian bullseye InRelease' changed its 'Version' value from '11.6' to '11.7'
N: Repository 'http://ftp.jp.debian.org/debian bullseye InRelease' changed its 'Suite' value from 'stable' to 'oldstable'

1.3. gpgvのインストール

 APT は bookworm のリリース署名に使われている鍵を照合するのに gpgv バージョン 2 以降を必要とします。適宜アップデートをしていればたぶん入ってると思いますが、一応、インストールコマンドを叩いておきます。

# apt install gpgv

1.4. アンインストールされたパッケージの設定ファイルの削除

 以下のコマンドで設定ファイルをシステムに残して削除されたパッケージの一覧をリストしてくれます。

$ apt list '~c'

 これらのパッケージをすっきり完全に削除したい場合は apt purge で削除できます。

# apt purge '~c'

1.5. 不要な設定ファイルの削除

 過去のアップグレードなどで生じた不要なデフォルトの設定ファイルを削除しておきます。以下のコマンドを実行するとデフォルトの設定ファイルをリストしてくれます。

# find /etc -name '.dpkg-' -o -name '.ucf-' -o -name '*.merge-error'

2. アップグレード

2.1. sources.list の書き換え

 /etc/apt/sources.list を開いて bullseye を bookworm に書き換えます。

deb http://deb.debian.org/debian bookworm main
#deb-src http://deb.debian.org/debian bookworm main

#updates
deb http://deb.debian.org/debian bookworm-updates main
#deb-src http://deb.debian.org/debian/ bookworm-updates main

#security
deb http://deb.debian.org/debian-security bookworm-security main
#deb-src http://deb.debian.org/debian-security bookworm-security main

 deb-srcはたぶん使わないのでコメントアウトしてあります。必要な人はコメントはずしてください。

 また、これまでレポジトリの場所は ftp.jp.debian.org を使っていたのですが、deb.debian.org にするとCDNからの配信になるらしいので変えました。security.debian.org も同様。

2.2. アップグレード作業

 以下の順でコマンドを実行してアップグレードします。

# apt update
# apt upgrade --without-new-pkgs
# apt full-upgrade

2.3. アプデの確認

 アップグレードされたことを確認します。

$ cat /etc/debian_version 
12.0

3. おまけ

3.1. php8.2のインストール

 アップグレードによって php7.4 がアンインストールされ、代わりに8.2がインストールされます。が、なんか中途ハンパなので、 dpkg -l | grep php とかでインストールされてないphp8.2のパッケージを確認して追加でインストールしましょう。
 WordPressを使うならこのあたりを追加インストールしておけば大丈夫だと思います。

# apt install php-curl php-fpm php-intl php-json php-mbstring php-mysql php-xml php-zip

 nginx で php-fpm を使ってる場合は、socket が php8.2-fpm.sock に変わるので変更しておきましょう。

hostnameの変更

 VPSの場合、OSのアップグレードに伴い、ホストネームが初期のホストネーム(さくらのVPSの場合ならxxx-123-45678みたいなやつ)に戻ります。このままだとどのサーバに入ってるのかわかりにくいし、なんか長いので必要に応じて変更します。

# hostnamectl set-hostname <HOSTNAME>

 設定後、ターミナルを立ち上げ直すとホストネームが更新されているはずです。
 また、以下のコマンドでも設定されたホストネームを確認できます。

$ hostnamectl | grep hostname
 Static hostname: <HOSTNAME>

4. 後始末

 設定ファイルをシステムに残して削除されたパッケージを完全に削除します。list で確認、purge で削除です。

$ apt list '~c'
# apt purge '~c'

 完全削除に伴って生じる依存関係がなくなったパッケージを apt autoremove で削除します。

# apt autoremove

 autoremove で削除されたパッケージの掃除のため、ふたたび purgeautoremove--purge オプション付けて実行しとけばいいのかも?

# apt purge '~c'

 以上でアプデ作業は完了です。

参考

関連する記事