Ubuntu 20.04 LTS の sks パッケージのバグ

Ubuntu 20.04 LTS の sks パッケージのバグ

Ubuntu 20.04 LTS に含まれる sks パッケージには、小さいながらも重大なバグがあります。このパッケージは、ソケット ファイルを /var/run/sks に書き込もうとします。ただし、そのようなディレクトリは存在しません。まず、/var/run は /run に移動され、次に、tmpfs であるため、以前に作成されていない限り、/run に sks ディレクトリが存在するとは限りません。

今のところ、私は sks と sks-recon 用の追加サービスを作成することでこれを回避しています。このサービスは、/var/run が存在するかどうかをチェックし、存在しない場合は /run を /var/run にシンボリックリンクし、次に /var/run/sks が存在するかどうかを確認し、存在しない場合はそれを作成して、その所有者を sks が実行される debian-sks ユーザーに変更します。

誰かが実際にそのようなアイデアをパッケージ管理者に転送してくれるとありがたいです。存在しないディレクトリが原因で、sks がソケットをバインドできないと文句を言い続け、おそらく別のプロセスがすでにバインドしているということを理解するまでに長い時間がかかりました。

参考までに、私がまとめた簡単なスクリプトをここに示します。私の環境では問題なく動作しているようですが、改善の余地があるかもしれません。

#!/bin/sh
[ -d /var/run ] || ln -s /run /var/run
if [ ! -d /run/sks ]; then
  mkdir /run/sks
  chown debian-sks:debian-sks /run/sks
  chmod 770 /run/sks ;
fi

これを起動するための systemd サービス ファイルは次のとおりです。

[Unit]
Description=Directory Maker for SKS - Work around for bug in SKS code that insists on placing files in /var/run/sks
After=network.target
before=sks.service sks-recon.service
StartLimitIntervalSec=0

[Service]
Type=oneshot
User=root
ExecStart=/var/lib/sks/sksdirmaker.sh

[Install]
WantedBy=multi-user.target

おそらく醜い回避策ですが、機能します。最初に /var/run シンボリックリンクまたは /run/sks ディレクトリがないことを確認してから、次のコマンドを実行してテストしました: systemctl start sks sks-dirmaker sks-recon

結果、ディレクトリが存在し、SKS は正常に読み込まれました。

関連情報