はじめに
管理しているサーバがDebian12のため、13にアップグレードする。その際のメモ。
いかに従ってアップグレードする。
Debian12を最新へ
最新の状態にする。
% export LANG=C % sudo apt update % sudo apt upgrade -y % cat /etc/debian_version 12.13
利用されなくなったパッケージを削除する。
4.9. 利用されなくなったパッケージに従って、利用されなくなったパッケージを削除する。以下のコマンドで表示されたパッケージを削除する。
% apt list '?obsolete' % sudo su # apt purge '?obsolete'
Debian 由来でないパッケージを削除する
% sudo apt install apt-forktracer % apt list '?narrow(?installed, ?not(?origin(Debian)))' % apt-forktracer | sort
上記で表記されたパッケージを削除する。
% sudo apt purge パッケージ名
sources.listをdeb822書式に合わせる
既存のsources.listを保存し、推奨のファイルに変更する。参考:4.3. APT sources ファイルの準備。
% cd /etc/apt % sudo cp -p sources.list sources.list.bookworm % sudo mv sources.list sources.list.d/debian.sources
deb822書式版に従いdebian.sourcesを以下のように書き直す(参考:SOURCES.LIST(5))。
Types: deb URIs: http://cdn.debian.net/debian/ Suites: trixie trixie-updates Components: main contrib non-free non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg Types: deb URIs: http://security.debian.org/debian-security Suites: trixie-security Components: main contrib non-free non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
aptを用いたアップグレード
% sudo apt update % sudo apt upgrade --without-new-pkgs % sudo apt full-upgrade
私の環境にはdovecotが稼働しており、このdovecotのためfull-upgradeが途中でとまった。たぶん、Debian13ではdovecotの設定ファイルの書式が変わるため(参考:5.1.18. Dovecot configuration changes)。dovecotの設定ファイルについては、メンテナの推奨版に置き替えておく。
再度、full-upgradeを実行したら完了した。
% sudo apt full-upgrade
再起動する。
アップグレード後の後始末
バージョンを確認する。
% export LANG=C % cat /etc/debian_version 13.3 % uname -a Linux rook 6.12.74+deb13+1-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.74-2 (2026-03-08) x86_64 GNU/Linux
不要になったパッケージを削除する。
% sudo apt update % sudo apt upgrade % sudo apt autoremove % sudo apt autoclean
削除したパッケージの設定ファイルを削除する。
% apt list '?config-files' % sudo apt purge '?config-files'
WordPressへの対応
Debian12から13へのアップグレードにともない、動いていたWordPress 6.9.4 が動かなくなった。アップグレード前の「利用されなくなったパッケージを削除する」および「Debian 由来でないパッケージを削除する」でPHPを削除したこと、および、Debian13ではphpのバージョンが8.4になったので、それに合わせたライブラリー(libapache2-mod-php8.4)がインストールされていないため。
phpをインストールする(私の環境ではApache 2がインストール済みのため、libapache2-mod-php8.4は自動でインストールされる)。
% sudo apt install -y php php-mysql
% php -v
PHP 8.4.16 (cli) (built: Dec 18 2025 21:19:25) (NTS)
Copyright (c) The PHP Group
Built by Debian
Zend Engine v4.4.16, Copyright (c) Zend Technologies
with Zend OPcache v8.4.16, Copyright (c), by Zend TechnologiesWordPressのサイトヘルスステータスの機能でいくつかの推奨PHPモジュールが足りないというメッセージがでていたので追加した。
% sudo apt install php-curl % sudo apt install php-dom % sudo apt install php-imagick % sudo apt install php-mbstring % sudo apt install php-zip % sudo apt install php-gd % sudo apt install php-intl % sudo systemctl restart apache2
gitlab-ceのアップグレード
GitLabをDebian 10から11へアップグレードするに従い、gitlab-ceをaptで更新できるようにしていた。Debian13用に対応させる。
まず、GPG鍵を最新版に更新する。GitLab:Manual Installationのページに記載のあるコマンドを参考にGPG鍵をダウンロードする。今回は /usr/share/keyrings/gitlab-ce.gpg として保存する。
% sudo su # curl -fsSL https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey | gpg --dearmor > /usr/share/keyrings/gitlab-ce.gpg # exit
続いて、deb822書式のソースファイルを/etc/apt/sources.list.d/gitlab-ce.sources として作成する。gitlab-ce.sourcesの中身は以下のようにする。
Types: deb URIs: https://packages.gitlab.com/gitlab/gitlab-ce/debian/ Suites: trixie Components: main Signed-By: /usr/share/keyrings/gitlab-ce.gpg
gitlab-ceをアップグレードする。エラーがでて失敗した。
% sudo apt update % sudo apt upgrade ~省略~ gitlab preinstall: It seems you are upgrading from 18.7 to 18.9. gitlab preinstall: It is required to upgrade to the latest 18.8.x version first before proceeding. gitlab preinstall: Please follow the upgrade documentation at https://docs.gitlab.com/ee/update/index.html#upgrade-paths dpkg: アーカイブ /var/cache/apt/archives/gitlab-ce_18.9.2-ce.0_amd64.deb の処理中にエラーが発生しました (--unpack): new gitlab-ce package pre-installation script subprocess returned error exit status 1 処理中にエラーが発生しました: /var/cache/apt/archives/gitlab-ce_18.9.2-ce.0_amd64.deb Error: Sub-process /usr/bin/dpkg returned an error code (1)
Debian12(bookworm)上でのgitlab-ceのバージョンが18.7で、Debian13(trixie)上のバージョンが18.9のため、うまくいかなかった様子。現在のgitlab-ceのバージョンを確かめるために以下のコマンドを実行したところ、データベースの方にも問題が。
% sudo gitlab-rake gitlab:env:info WARNING: database "データベース名" has a collation version mismatch DETAIL: The database was created using collation version 2.36, but the operating system provides version 2.41. HINT: Rebuild all objects in this database that use the default collation and run ALTER DATABASE データベース名 REFRESH COLLATION VERSION, or build PostgreSQL with the right library version. WARNING: database "データベース名" has a collation version mismatch DETAIL: The database was created using collation version 2.36, but the operating system provides version 2.41. HINT: Rebuild all objects in this database that use the default collation and run ALTER DATABASE データベース名 REFRESH COLLATION VERSION, or build PostgreSQL with the right library version. WARNING: database "データベース名" has a collation version mismatch DETAIL: The database was created using collation version 2.36, but the operating system provides version 2.41. HINT: Rebuild all objects in this database that use the default collation and run ALTER DATABASE データベース名 REFRESH COLLATION VERSION, or build PostgreSQL with the right library version. System information System: Debian 13 Current User: git Using RVM: no Ruby Version: 3.2.8 Gem Version: 3.7.1 Bundler Version:2.7.1 Rake Version: 13.0.6 Redis Version: 7.2.11 Sidekiq Version:7.3.9 Go Version: unknown WARNING: database "データベース名" has a collation version mismatch DETAIL: The database was created using collation version 2.36, but the operating system provides version 2.41. HINT: Rebuild all objects in this database that use the default collation and run ALTER DATABASE データベース名 REFRESH COLLATION VERSION, or build PostgreSQL with the right library version. GitLab information Version: 18.7.0 Revision: ef8306c4594 Directory: /opt/gitlab/embedded/service/gitlab-rails DB Adapter: PostgreSQL DB Version: 16.10 URL: https://hogehoge.jp HTTP Clone URL: https://hogehoge.jp/some-group/some-project.git SSH Clone URL: git@hogehoge.jp:some-group/some-project.git Using LDAP: no Using Omniauth: yes Omniauth Providers: GitLab Shell Version: 14.45.5 Repository storages: - default: unix:/var/opt/gitlab/gitaly/gitaly.socket GitLab Shell path: /opt/gitlab/embedded/service/gitlab-shell Gitaly - default Address: unix:/var/opt/gitlab/gitaly/gitaly.socket - default Version: 18.7.0 - default Git Version: 2.50.1
【PostgreSQL】database has a collation version mismatchへの対処法およびOmnibus gitlab-ce Debian 13 (trixie)を参考にPostgreSQLのインデックスをリフレッシュする。
% sudo su # /opt/gitlab/bin/gitlab-psql > ALTER DATABASE データベース名 REFRESH COLLATION VERSION; > \q # exit
データベースに関するエラーが出ないか確かめる。
% sudo gitlab-rake gitlab:env:info
エラーが出ないことを確認したら、現在のgitlab-ceのバージョン18.7の次のバージョン18.8をインストールする。18.8の最新パッケージ名を
https://packages.gitlab.com/gitlab/gitlab-ce から探す。今回は 18.8.6-ce.0 だった。以下のコマンドで18.8へアップグレードする。
% sudo apt install gitlab-ce=18.8.6-ce.0
続いて、最新版へアップグレードする。
% sudo apt update % sudo apt upgrade
無事、GitLabをアップグレードできた。
dovecotの設定ファイルの修正
Debian12ではdovecot 2.3だが、Debian13ではdovecot 2.4に変更されている。
dovecotは2.3から2.4で設定ファイルの書式が変わっているため、修正が必要となる。
このため、Debian12から13へのアップグレード時(apt full-upgrade)の際にdovecot関連の設定ファイルはメンテナ推奨の設定ファイルに置き換えておく必要がある。
私の元の設定は以下の通りだった。
大まかには以下の通り
- dovecotはIMAPで用いている。
- メールは各ユーザディレクトリにメールディレクトリ形式で保存している。
- IMAPのログインにpamを利用している。
dovecotの設定ファイルは /etc/dovecot に置いてある。
- /etc/dovecot/dovecot.conf (メンテナ推奨の設定ファイル、修正せず)
- /etc/dovecot/conf.d/10-auth.conf(メンテナ推奨の設定ファイル、修正)
- /etc/dovecot/conf.d/10-logging.conf(メンテナ推奨の設定ファイル、修正せず)
- /etc/dovecot/conf.d/10-mail.conf(メンテナ推奨の設定ファイル、修正)
- /etc/dovecot/conf.d/10-master.conf(メンテナ推奨の設定ファイル、修正)
- /etc/dovecot/conf.d/10-ssl.conf(メンテナ推奨の設定ファイル、修正)
- /etc/dovecot/conf.d/15-lda.conf(メンテナ推奨の設定ファイル、修正せず)
- /etc/dovecot/conf.d/20-lmtp.conf(メンテナ推奨の設定ファイル、修正せず)
- /etc/dovecot/conf.d/20-pop3.conf(メンテナ推奨の設定ファイル、修正せず)
- /etc/dovecot/conf.d/90-quota.conf(メンテナ推奨の設定ファイル、修正せず)
- /etc/dovecot/conf.d/auth-system.conf.ext(メンテナ推奨の設定ファイル、修正せず)
メンテナ推奨の設定ファイルを10-auth.conf.orgとしている。基本はコメントアウトしているだけ。
% diff 10-auth.conf.org 10-auth.conf
10c10
< #auth_allow_cleartext = yes
---
> auth_allow_cleartext = yes
40c40
< #auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
---
> auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
49c49
< #auth_username_format = %{user|username|lower}
---
> auth_username_format = %{user|username|lower}
93c93
< #auth_mechanisms = plain login
---
> auth_mechanisms = plain loginメンテナ推奨の設定ファイルを10-mail.conf.orgとしている。デフォルトはメールボックス式だが、メールディレクトリ式に変更している。
% diff 10-mail.conf.org 10-mail.conf
36,39c36,42
< mail_driver = mbox
< mail_home = /home/%{user | username}
< mail_path = %{home}/mail
< mail_inbox_path = /var/mail/%{user}
---
> #mail_driver = mbox
> #mail_home = /home/%{user | username}
> #mail_path = %{home}/mail
> #mail_inbox_path = /var/mail/%{user}
> mail_driver = maildir
> mail_path = ~/Maildir
>メンテナ推奨の設定ファイルを10-master.conf.orgとしている。IMAPとSMPT認証の設定をしている。
% diff 10-master.conf.org 10-master.conf
22,23c22,23
< #port = 993
< #ssl = yes
---
> port = 993
> ssl = yes
29c29
< #service_restart_request_count = 1
---
> service_restart_request_count = 1
40c40
< #port = 110
---
> port = 110
43,44c43,44
< #port = 995
< #ssl = yes
---
> port = 995
> ssl = yes
58,59c58,61
< unix_listener lmtp {
< #mode = 0666
---
> unix_listener /var/spool/postfix/private/dovecot-lmtp {
> mode = 0666
> group = postfix
> user = postfix
110,112c112,116
< #unix_listener /var/spool/postfix/private/auth {
< # mode = 0666
< #}
---
> unix_listener /var/spool/postfix/private/auth {
> mode = 0666
> user = postfix
> group = postfix
> }メンテナ推奨の設定ファイルを10-ssl.conf.orgとしている。Dovecot 2.4からDH鍵は不要になったとのこと。
diff 10-ssl.conf.org 10-ssl.conf 18c18,19 < ssl_server_cert_file = /etc/dovecot/private/dovecot.pem --- > #ssl_server_cert_file = /etc/dovecot/private/dovecot.pem > ssl_server_cert_file = サーバ認証ファイルの絶対パス表記 20c21,22 < ssl_server_key_file = /etc/dovecot/private/dovecot.key --- > #ssl_server_key_file = /etc/dovecot/private/dovecot.key > ssl_server_key_file = サーバ鍵ファイルの絶対パス表記
/etc/dovecot/conf.d/10-director.conf を削除する。
% cd /etc/dovecot/conf.d/ % sudo mv 10-director.conf 10-director.conf.org
ちゃんと動くか確かめる。
% sudo systemctl start dovecot
うまく動かない場合は以下のコマンドでまずいところを確認し、適宜修正する。
% sudo systemctl status dovecot --no-pager