Ich habe Subversion auf meinem iMac mit Snow Leopard installiert, habe aber Probleme, svnserve automatisch zu starten. So wie ich es verstehe (ich bin noch ziemlich unerfahren mit OSX), ist die beste Möglichkeit, dies zu tun, launchd zu verwenden. Zu diesem Zweck habe ich die folgende .plist-Datei im Ordner /Library/LaunchDaemons erstellt. Wenn ich launchctl verwende, um diese Datei auszuführen, startet svnserve wie erwartet, aber es startet nicht automatisch, wenn das System hochfährt oder ich mich anmelde.
<?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>
Ich wäre sehr dankbar, wenn mir hier jemand einen Vorschlag machen könnte, wie man das zum Laufen bringen könnte.
Antwort1
Versuchen Sie, diesen Schlüssel hinzuzufügen
<key>RunAtLoad</key>
<true/>
(auf derselben Ebene wie die Tasten Disabled, Label usw.)
Antwort2
Ich habe im Modus keine launchd
Plists erstellt inetdCompatibility
, aber ich habe festgestellt, dass das Ausführen von Programmen im Daemon-Modus mit auf eingestellten Programmen KeepAlive
ziemlich gut funktioniert. Sie müssen beim Ausführen im Daemon-Modus verwenden, da überhaupt keine Abhängigkeiten erstellt werden, sodass der Daemon fast immer gestartet wird, bevor das Netzwerk aktiv ist.NetworkState
true
NetworkState
launchd
Ich würde es also wahrscheinlich mit einem versuchen, /Library/LaunchDaemons/org.tigris.subversion.svnserve.plist
das so aussieht:
<?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>
Antwort3
Ein paar Optionen, die ich gefunden habe.
Erste,http://www.kashum.com/blog/1217783696beschreibt die Verwendung der plist-Methode, scheint aber mehr Optionen in der XML anzugeben, als Sie verwenden.
Zweite,http://www.scottboms.com/2007/03/launchsvnserveatstartup/beschreibt die Verwendung einer vorgefertigten, funktionierenden plist-Datei, die in den LaunchDaemons-Ordner abgelegt wird, den angegebenen Pfad ändert und dann ausgeführt wird
sudo launchctl load /Library/LaunchDaemons/org.tigris.Subversion.plist
und überprüfen Sie, ob es funktioniert mit
sudo launchctl list
(oder, wissen Sie, der Versuch, SVN zu verwenden …)