Запуск демона для сервера subversion завершается неудачно, но работает в оболочке

2

Я пытаюсь настроить сервер Subversion в OS X (Sierra), используя Subversion, предоставляемый с сервером XCode Я последовал за эти инструкции для настройки демона для автоматического запуска svnserve. Мой файл plist выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
       <string>org.tigris.subversion</string>
    <key>ProgramArguments</key>
       <array>
          <string>/usr/bin/svnserve</string>
          <string>--inetd</string>
          <string>--root=/var/subversion/repositories/</string>
          <string>--listen-host=svn.dev.localnet</string>
       </array>
    <key>UserName</key>
       <string>_svn</string>
    <key>RunAtLoad</key>
       <true/>
</dict>
</plist>

Когда я загружаю plist используя sudo load /Library/LaunchDaemons/org.tigris.suversion.plistСервер Subversion не подходит. В системном журнале написано «Служба завершена с ненормальным кодом: 1».

Пытаясь отследить проблему, я выполнил эту команду в оболочке:

sudo -u _svn /usr/bin/svnserve --inetd --root=/var/subversion/repositories/ --listen-host=svn.dev.localnet 

что я ожидаю, что будет именно то, что launchctl будет начинаться из спецификации plist Однако из оболочки он работает, как и ожидалось, и сервер subversion подходит.

Где моя ошибка?

not2savvy
источник

Ответы:

0

Очевидно, моей ошибкой было не понять, что svnserve --inetd ведет себя иначе, когда запускается как демон, когда он запускается из оболочки.

При запуске из оболочки процесс продолжает работать, пока не будет остановлен с помощью ctrl-c.

При запуске в качестве демона (который фактически предназначен для использования этой опции), он будет не продолжать работать. Вместо этого svnserve запускается по запросу на порту 3690, обрабатывает запрос и затем завершается. Как следствие, svnserve нельзя увидеть в списке активных процессов, если запрос не обрабатывается в тот самый момент.

not2savvy
источник