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 加載得很好。

相關內容