Назад | Перейти на главную страницу

svnserve больше не работает после обновления до OS X Yosemite

Я обслуживаю компьютеры и пишу программное обеспечение для управления экспериментами и сбора данных в исследовательской лаборатории, где я работаю. Я запускаю сервер Subversion (установленный вместе с brew) на машине OS X на моем столе. Это позволяет мне вносить изменения в программное обеспечение на любом лабораторном компьютере и синхронизировать все станции. Сервер подрывной деятельности на моем компьютере был настроен и запущен в / Library / LaunchDaemons в течение нескольких лет, первоначально под 10.5 на G5 PowerMac и в конечном итоге перенесен на мой текущий Intel iMac. Я обновился до Йосемити и сделал brew upgrade и теперь svnserve больше не отвечает клиентам. Вот мой текущий файл org.apache.subversion.svnserve.plist из / Library / LaunchDaemons:

<?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>KeepAlive</key>
        <true/>
        <key>StandardErrorPath</key>
        <string>/Users/Shared/subversion/svnserve_err.log</string>
        <key>Umask</key>
        <integer>2</integer>
        <key>UserName</key>
        <string>steve</string>
        <key>GroupName</key>
        <string>everyone</string>
        <key>Label</key>
        <string>org.apache.subversion.svnserve</string>
        <key>RunAtLoad</key>
        <true/>
        <key>Program</key>
        <string>/usr/local/bin/svnserve</string>
        <key>ProgramArguments</key>
        <array>
                <string>svnserve</string>
                <string>--inetd</string>
                <string>--root=/Users/Shared/subversion</string>
                <string>--log-file=/Users/Shared/subversion/svn.log</string>
        </array>
        <key>ServiceDescription</key>
        <string>SVN Version Control System</string>
        <key>Sockets</key>
        <dict>
                <key>Listeners</key>
                <array>
                        <dict>
                                <key>Bonjour</key>
                                <true/>
                                <key>SockServiceName</key>
                                <string>svn</string>
                        </dict>
                </array>
        </dict>
        <key>inetdCompatibility</key>
        <dict>
                <key>Wait</key>
                <false/>
        </dict>
</dict>
</plist>

Вроде при запуске запускается:

/Library/LaunchDaemons 502 $  sudo launchctl list | grep svnserve
82245   0   org.apache.subversion.svnserve

Если я запускаю команду svn от клиента (включая машину, на которой запущена svnserve), требующей ответа от сервера, она зависает. Если я сделаю sudo launchctl unload org.apache.subversion.svnserve.plist пока клиент завис, команда клиента завершается ошибкой:

svn: E000054: Unable to connect to a repository at URL 'svn://steveimac.local/igor/trunk'
svn: E000054: Can't read from connection: Connection reset by peer

Так что, похоже, есть какая-то попытка общения. Если я сделаю sudo launchctl unload org.apache.subversion.svnserve.plist и попробуйте запустить команду svn client, я получаю Can't connect to host 'steveimac.local': Connection refused как и ожидалось.

Брандмауэр отключен в настройках безопасности и конфиденциальности устройства.

В svn.log и svnserve_err.log файлы оба пусты.

Я добавил StandardOutPath ключ к списку. Файл stdout был заполнен множеством копий ( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops atomic-revprops partial-replay inherited-props ephemeral-txnprops file-revs-reverse ) ) ). Более мегабайта стоит примерно через тридцать секунд. Не знаю, нормально ли это.

версия svnserve:

/Library/LaunchDaemons 503 $  /usr/local/bin/svnserve --version
svnserve, version 1.8.13 (r1667537)
   compiled Jun  5 2015, 19:21:21 on x86_64-apple-darwin14.3.0

Copyright (C) 2014 The Apache Software Foundation.
This software consists of contributions made by many people;
see the NOTICE file for more information.
Subversion is open source software, see http://subversion.apache.org/

The following repository back-end (FS) modules are available:

* fs_fs : Module for working with a plain file (FSFS) repository.

Cyrus SASL authentication is available.

Я не знаю, что делать дальше, чтобы попытаться устранить неполадки.

Ответы на вопросы в комментариях:

Разрешения выглядят нормально:

/Users/Shared/subversion 495 $  ls -l ig*
igor:
total 16
-rw-r--r--   1 steve  wheel  229 Dec  8  2008 README.txt
drwxr-xr-x   5 steve  wheel  170 Dec  8  2008 conf
drwxr-xr-x   2 steve  wheel   68 Dec  8  2008 dav
drwxr-xr-x  12 steve  wheel  408 Jul 15 10:33 db
-r--r--r--   1 steve  wheel    2 Dec  8  2008 format
drwxr-xr-x  11 steve  wheel  374 Dec  8  2008 hooks
drwxr-xr-x   4 steve  wheel  136 Dec  8  2008 locks

igor-mike:
total 16
-rw-r--r--   1 steve  wheel  229 Jan 25  2011 README.txt
drwxr-xr-x   5 steve  wheel  170 Jan 25  2011 conf
drwxr-xr-x  16 steve  wheel  544 Oct  2  2013 db
-r--r--r--   1 steve  wheel    2 Jan 25  2011 format
drwxr-xr-x  11 steve  wheel  374 Jan 25  2011 hooks
drwxr-xr-x   4 steve  wheel  136 Jan 25  2011 locks

igorniscope:
total 16
-rw-r--r--   1 steve  wheel  229 Aug 16  2013 README.txt
drwxr-xr-x   5 steve  wheel  170 Aug 16  2013 conf
drwxr-xr-x  16 steve  wheel  544 Sep 13  2013 db
-r--r--r--   1 steve  wheel    2 Aug 16  2013 format
drwxr-xr-x  11 steve  wheel  374 Aug 16  2013 hooks
drwxr-xr-x   4 steve  wheel  136 Aug 16  2013 locks

sudo launchctl print-cache | grep svn ничего не возвращает.


Я не уверен, как использовать launchctl plist в этой ситуации. Он хочет использовать Mach-O в качестве аргумента.


С помощью localhost вместо того steveimac.local проявляет те же симптомы.


Доступ через file протокол на хост-машине работает нормально:

~/Documents/deleteme 491 $  svn co file:///Users/Shared/subversion/igor/trunk igor
A    igor/AcousticControl.ipf
...
A    igor/AmplitudeSweep.ipf
A    igor/PowerMonitor.ipf

Я попытался svn info svn://steveimac.local и svn info svn://localhost который не должен иметь доступа к какому-либо конкретному репозиторию, и он также завис. Таким образом, это проблема со связью, а не с репозиторием. Порт 3690 вроде открыт. С загруженным демоном я попробовал telnet localhost 3690 и смог подключиться. Когда демон выгружен, telnet localhost 3690 вернулся Connection refused.