fragen stichworte

Svnserve wird auf Snow Leopard automatisch gestartet

Ich habe Subversion auf meinem iMac installiert, auf dem Snow Leopard ausgeführt wird. Ich habe jedoch Probleme, svnserve automatisch starten zu lassen. Wenn ich es verstehe (ich bin immer noch ziemlich grün mit OSX), ist der beste Weg, dies zu tun, die Verwendung von launchd. Zu diesem Zweck habe ich die folgende .plist-Datei im Ordner/Library/LaunchDaemons erstellt. Wenn ich launchctl zum Ausführen dieser Datei verwende, wird svnserve wie erwartet gestartet, aber beim Start des Systems oder beim Anmelden nicht automatisch gestartet.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>Label</key>
<string>org.tigris.subversion.svnserve</string>
<key>UserName</key>
<string>Dave</string>
<key>ProgramArguments</key>
<array>
    <string>/opt/subversion/bin/svnserve</string>
    <string>--inetd</string>
    <string>--root=/Users/Shared/SVNrep</string>
</array>
<key>ServiceDescription</key>
<string>Subversion Standalone Server</string>
<key>Sockets</key>
<dict>
    <key>Listeners</key>
    <array>
        <dict>
            <key>SockFamily</key>
            <string>IPv4</string>
            <key>SockServiceName</key>
            <string>svn</string>
            <key>SockType</key>
            <string>stream</string>
        </dict>
        <dict>
            <key>SockFamily</key>
            <string>IPv6</string>
            <key>SockServiceName</key>
            <string>svn</string>
            <key>SockType</key>
            <string>stream</string>
        </dict>
    </array>
</dict>
<key>inetdCompatibility</key>
<dict>
    <key>Wait</key>
    <false/>
</dict>
</dict>
</plist>

Wenn jemand hier Vorschläge machen könnte, wie das funktioniert, würde ich es wirklich schätzen.

antworten

Einige Optionen, die ich gefunden habe.

Zunächst beschreibt http://www.kashum.com/blog/1217783696 die Verwendung der plist-Methode, aber es scheint mehr Optionen in der XML-Datei anzugeben, als Sie verwenden.

Zweitens beschreibt http://www.scottboms.com/2007/03/launchsvnserveatstartup/ die Verwendung einer vorgefertigten Plist-Datei, die im Ordner LaunchDaemons abgelegt wird, den angegebenen Pfad ändert und dann

sudo launchctl load/Library/LaunchDaemons/org.tigris.Subversion.plist

und vergewissern Sie sich, dass es mit

funktioniert
sudo launchctl list

(oder wissen Sie, Sie versuchen, svn zu verwenden ...)

Ich habe keine launchd -Plists im inetdCompatibility -Modus erstellt, aber ich habe festgestellt, dass im Daemon-Modus laufende Programme ausgeführt werden, wobei KeepAlive NetworkState auf true eingestellt ist und ziemlich gut funktioniert. Sie müssen NetworkState verwenden, wenn Sie im Dämonmodus arbeiten, da launchd keinerlei Abhängigkeiten vornimmt. Daher wird der Dämon fast immer gestartet, bevor das Netzwerk aktiv ist.

Also würde ich wahrscheinlich ein /Library/LaunchDaemons/org.tigris.subversion.svnserve.plist versuchen, das so aussah:

<?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.svnserve</string>
                <key>ProgramArguments</key>
                <array>
                        <string>/opt/subversion/bin/svnserve</string>
                        <string>-d</string>
                        <string>--root=/Users/Shared/SVNrep</string>
                </array>
                <key>RunAtLoad</key>
                <true/>
                <key>KeepAlive</key>
                <dict>
                    <key>NetworkState</key>
            <true/>
                </dict>
        </dict>
</plist>

Versuchen Sie, diesen Schlüssel hinzuzufügen

<key>RunAtLoad</key>
<true/>

(auf der gleichen Ebene wie die Tasten Disabled, Label, ...

)