Ubuntu 20.04 LTS sks 패키지의 버그

Ubuntu 20.04 LTS sks 패키지의 버그

Ubuntu 20.04 LTS에 포함된 sks 패키지에는 작지만 치명적인 버그가 있습니다. 소켓 파일을 /var/run/sks에 쓰려고 시도합니다. 그러나 그러한 디렉토리가 없습니다. 우선, /var/run은 /run으로 이동되었고, 둘째, tmpfs로서 /run은 이전에 만들어지지 않는 한 반드시 sks 디렉토리를 가질 필요는 없습니다.

지금은 /var/run이 존재하는지 간단히 확인하는 sks 및 sks-recon에 대한 추가 서비스를 생성하여 이 문제를 해결했습니다. 그렇지 않은 경우 /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

이를 실행하는 시스템 서비스 파일은 다음과 같습니다.

[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가 제대로 로드되었습니다.

관련 정보