Debian GNU/Linux 12から13へのアップグレード覚書

はじめに

管理しているサーバが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 Technologies

WordPressのサイトヘルスステータスの機能でいくつかの推奨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関連の設定ファイルはメンテナ推奨の設定ファイルに置き換えておく必要がある。

私の元の設定は以下の通りだった。

大まかには以下の通り

  1. dovecotはIMAPで用いている。
  2. メールは各ユーザディレクトリにメールディレクトリ形式で保存している。
  3. 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

メモ:山上徹也被告と統一教会の年表

【検証 安倍元首相殺害事件】メディアが報じていないファクト 山上被告、自身の報道で「不正確なものも」(楊井人文) - エキスパート - Yahoo!ニュース を読んで、教団に非がないような印象を受けるので、山上氏の生い立ちについて年表形式でまとめてみる。

時期 山上氏年齢 出来事 出典
1979年 -- 兄誕生。脳に腫瘍判明 東洋経済オンライン
1980年 0歳 山上氏9月に誕生 読売オンライン
1984年 4歳 父親が自殺 読売オンライン
1985年 5歳 妹誕生。伯父5万円の仕送り開始 東洋経済オンライン
1987年 7歳 兄片目失明 朝日新聞デジタル
1991年 11歳 母親が統一教会に入信 読売オンライン
1994年 14歳 祖父母に母親が献金していることが発覚(父親の生命保険6000万円のうち5000万円)。伯父が仕送り停止。山上氏母親の入信を知る 読売オンライン東洋経済オンライン朝日新聞デジタル
1995年 15歳 兄大阪の私立高に入学 楊井氏記事
1996年 16歳 山上氏奈良県立郡山高に入学 楊井氏記事
1998年 18歳 母親が祖父の土地を勝手に売却。祖父が包丁持ち出す騒ぎ。祖父死亡。伯父が仕送り再開。兄が母親に暴力を振るい始める 東洋経済オンライン朝日新聞デジタル
1999年 19歳 母親が相続した土地と家を売却、家族で借家へ。山上氏私立大合格も入学せず。 読売オンライン楊井氏記事
2000年 20歳 妹私立高に入学 楊井氏記事
2001年 21歳 公務員試験向け予備校へ通うも消防士試験不合格(伯父が予備校費75万円提供) 東洋経済オンライン
2002年 22歳 母親が破産宣告。山上氏海上自衛隊へ入隊 読売オンライン
2004年 24歳 山上氏母親の破産を知る。兄が伯父へ電話「食べ物が尽きて、何日も食べてない」 朝日新聞デジタル東洋経済オンライン
2005年 25歳 山上氏自殺未遂&海上自衛隊退職、実家へ。母が韓国に長期滞在。統一教会から月30万円~40万円返金開始(計5000万円) 読売オンライン朝日新聞デジタル楊井氏記事
2005年以降 -- 妹私立大に入学 朝日新聞デジタル楊井氏記事
2010年 30歳 山上氏一人暮らし開始(仕送り月13万円) 朝日新聞デジタル楊井氏記事
2011年 31歳 山上氏中央大学法学部(通信制)に入学(母保証人) 朝日新聞デジタル楊井氏記事
2012年 32歳 中央大学法学部(通信制)除籍 朝日新聞デジタル楊井氏記事
2013年 33歳 統一教会からの返金完了 東洋経済オンライン
2014年 34歳 山上氏への仕送り終了。妹が一人暮らし開始 楊井氏記事東洋経済オンライン
2015年 35歳 兄自殺。以降、母妹と疎遠に 朝日新聞デジタル読売オンライン

裁判で明らかになった新事実は楊井氏の記事のとおりかもしれないが、そのまとめ方や既知の事実と合わせると楊井氏の記事が与える印象とはだいぶ異なる。たとえば、祖父が包丁を持ち出したり、子供達に出て行けといったエピソードは子供相手が主たる相手ではなく、母親の方への怒りの発露だったと思われる。勝手に財産処分されたら激昂すると思う。これを虐待と評するのはどうかと思う。

山上が子供時代に、母から食事を与えられないとか、信仰の強制といった「母による虐待」の事実は出てこなかった。

ただ、祖父が包丁を持ち出したり、子供達に出て行けと言ったことはあった(11月19日妹証言、11月20日被告人質問)。こうした祖父の行為が虐待に当たる可能性はある。
楊井氏記事より)

 中学2年の時、祖父から、母親が入信し、祖父の不動産を無断で売却して教団への献金にしようとしていたことを知らされた、と証言した。

 祖父は「いずれは全て財産を持っていってしまうぞ」と脱会を強く勧め、親族を呼んで説得したが、母親は聞かなかったという。山上被告は法廷で「どうしていいか分からないのが、正直なところでした」と述べた。

 祖父からは経営する会社を畳みたいから家を出ていくよう言われたといい、「中学生なので自活はできないので、何時間か外を歩いたり、駅のホームで座っていたりということはありました」と証言した。
朝日新聞デジタル:第30回【詳報】山上被告「生きているべきでなかった」「多額献金なければ」より)

母の献金に反対する祖父は「全財産を持っていかれる」と家族会議で包丁を持ち出したり、母を家から閉め出したり。母が「開けて」と何度も玄関をノックし、被告が中に入れたこともあったという。

被告「祖父は『誰が開けたのか』と。黙っていたが、何もかもが嫌になりました」
朝日新聞デジタル:第32回母の入信知り「人生観」一変、夢は「石ころ」 山上被告が語った半生より)

山上氏が飲まず食わずの貧困に陥っていたというイメージは間違っているという主旨だろうけど、何かなぁと感じる。

余談

産経新聞は元号つかって日付を説明するのね。
www.sankei.com

リンク:暇空騒動

リンク

SSH接続時に公開鍵認証してからパスワード認証する設定

はじめに

SSHに接続した際に以下の順番で2つの認証をパスしてログインできるようにしたい。

  1. 公開鍵認証
  2. パスワード認証

環境

以下のとおり。

% cat /etc/debian_version
12.12

% ssh -V
OpenSSH_9.2p1 Debian-2+deb12u7, OpenSSL 3.0.17 1 Jul 2025

設定手順

当該サーバにログインし、以下のコマンドで設定する。

% cd /etc/sshd
% sudo cp -p sshd_config sshd_config.YYYYMMDD (YYYYMMDDは今日の日付)
% sudo vi sshd_config
% diff sshd_config.20251121 sshd_config
59c59
< PasswordAuthentication no
---
> #PasswordAuthentication no
124a125,129
>
> # For login with public key and password
>
> PasswordAuthentication yes
> AuthenticationMethods publickey,password

これまではパスワード認証をゆるさず、公開鍵認証のみだった。
これを「AuthenticationMethods」の設定で、公開鍵認証の後にパスワード認証をするようにしている。

このメソッドはメモ:Google Authenticatorを用いたSSHの2要素認証でも使っていた。

ロンドン市長がムスリムだと豚骨ラーメン屋は閉店する?

以下のポストを見た。そうなの?



現ロンドン市長

2016年から現在(2025年11月)までロンドン市長とのこと。

サー・サディク・アマーン・カーン(Sir Sadiq Aman Khan[1]、1970年10月8日 - )は、イギリスの政治家、現ロンドン市長。欧州連合加盟国の首都の市長に当選した初のイスラム教徒である[2][3]。

ja.wikipedia.org

ロンドン市の豚骨ラーメン屋

2017年の記事。この記事によると2012年のロンドン五輪から豚骨ラーメンが登場したとのこと。

ロンドンに現在のようなラーメンブームが到来したのは、ロンドン五輪が開催された2012年だった。じつは、それまでロンドンには、日本で人気があるラーメン屋と同じようなラーメンを食べられる店はほぼ無かった。ところが2012年末に、イギリス初の本格派博多とんこつラーメン店「昇竜」が、英ジャパンセンター(英老舗日本食料品店)の経営で、博多出身の在英日本人シェフによりロンドン中心部ピカデリー・サーカス近くにオープン。同店は即座に「行列ができる店」となり、ロンドンのとんこつラーメンブームの火付け役となった。

www.excite.co.jp


2019年の記事
topics.tbs.co.jp


2024年の記事
www.whhunternow.com

ネットの情報を見る限り、ロンドンで豚骨ラーメンは引き続き食べられる様子。