Iniciar automáticamente svnserve en Snow Leopard

Iniciar automáticamente svnserve en Snow Leopard

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 launchdlista en inetdCompatibilitymodo, pero he encontrado que ejecutar programas en modo demonio con la KeepAliveconfiguración NetworkStatepara truefuncionar bastante bien. Debe usarlo NetworkStatecuando se ejecuta en modo demonio, ya que launchdno 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.plistque 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...)

información relacionada