升级到 OS X Yosemite 后 svnserve 不再起作用

升级到 OS X Yosemite 后 svnserve 不再起作用

我负责维护计算机,编写软件来控制实验并收集我工作的研究实验室的数据。我在办公桌上的 OS X 机器上运行一个 subversion 服务器(使用 brew 安装)。这样,我就可以在任何实验室计算机上更改软件,并使所有站点保持同步。我机器上的 subversion 服务器已在 /Library/LaunchDaemons 中设置并运行多年,最初在 G5 PowerMac 上运行 10.5 以下版本,最终转移到我当前的 Intel iMac。我更新到 Yosemite 并执行了,brew upgrade现在 svnserve 不再响应客户端。这是我当前来自 /Library/LaunchDaemons 的 org.apache.subversion.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>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

如果我从客户端(包括运行 svnserve 的机器)运行需要服务器响应的 svn 命令,它会挂起。如果我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 客户端命令,我会得到Can't connect to host 'steveimac.local': Connection refused预期的结果。

计算机的“安全和隐私”偏好设置中已关闭防火墙

svn.log和文件svnserve_err.log都是空的。

我将StandardOutPath密钥添加到 plist 中。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

相关内容