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 加载正常。

相关内容