Instalé Subversion en mi iMac con Snow Leopard, pero tengo problemas para que svnserve se inicie automáticamente. Según tengo entendido (todavía estoy bastante verde con OSX), la mejor manera de hacerlo es utilizar launchd. Con ese fin, he creado el siguiente archivo .plist en la carpeta /Library/LaunchDaemons. Si uso launchctl para ejecutar este archivo, svnserve se inicia como se esperaba, pero no se inicia automáticamente cuando se inicia el sistema o inicio sesión.
<?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>
Si alguien aquí pudiera darme alguna sugerencia sobre cómo hacer que esto funcione, se lo agradecería mucho.
Respuesta1
Intenta agregar esta clave
<key>RunAtLoad</key>
<true/>
(al mismo 'nivel' que las teclas Desactivado, Etiqueta, ...
Respuesta2
No he creado ninguna launchd
lista en inetdCompatibility
modo, pero he encontrado que ejecutar programas en modo demonio con la KeepAlive
configuración NetworkState
para true
funcionar bastante bien. Debe usarlo NetworkState
cuando se ejecuta en modo demonio, ya que launchd
no genera ninguna dependencia, por lo que el demonio casi siempre se inicia antes de que la red esté activa.
Entonces, probablemente probaría uno /Library/LaunchDaemons/org.tigris.subversion.svnserve.plist
que se viera así:
<?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>
Respuesta3
Un par de opciones que encontré.
Primero,http://www.kashum.com/blog/1217783696describe el uso del método plist, pero parece especificar más opciones en el xml de las que estás usando.
Segundo,http://www.scottboms.com/2007/03/launchsvnserveatstartup/describe el uso de un archivo plist de trabajo prediseñado para colocarlo en la carpeta LaunchDaemons, modificar la ruta especificada y luego ejecutar
sudo launchctl load /Library/LaunchDaemons/org.tigris.Subversion.plist
y verificar que esté funcionando con
sudo launchctl list
(o, ya sabes, intentar usar svn...)