0 votos

launchctl da el error "Invalid property list", pero plutil valida "OK"

mariano@host LaunchAgents % plutil local.test.plist 
local.test.plist: OK

Pero entonces:

mariano@host LaunchAgents % sudo launchctl load local.test.plist
Password:
/Users/mariano/Library/LaunchAgents/local.test.plist: Invalid property list

Archivo en cuestió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>Label</key>
                <string>local.test.plist</string>
                <key>ProgramArguments</key>
                <array>
                <string>/bin/echo</string>
                <key>"Hello world"</key>
                </array>
                <key>StartInterval</key>
                <integer>1</integer>
        </dict>
</plist>

2voto

n8felton Puntos 56

Para empezar, el problema con tu plist es que tienes "Hello world" en <key> en lugar de <string> etiquetas. Mientras que esto es técnicamente válido xml, no es un plist válido, y ciertamente no es un plist de configuración de launchd válido.

Inválido

    <key>ProgramArguments</key>
    <array>
    <string>/bin/echo</string>
    <key>"Hello world"</key>
    </array>

Válido

    <key>ProgramArguments</key>
    <array>
        <string>/bin/echo</string>
        <string>"Hello world"</string>
    </array>

En realidad puedes tener plutil arreglar esto mediante el uso de

plutil -convert xml1 local.test.plist

Por defecto, el plutil utiliza el comando -lint por defecto si no se especifican otras opciones

De man plutil(1):

 - lint         Check the named property list files for syntax errors.  This is the default command option if none is specified.

Mi suposición es que esta característica de pelusa no es 100% baked y puede pasar por alto algunos casos de borde como este. Es probable que sólo compruebe la coincidencia de las etiquetas de apertura y cierre, pero no el contexto de las claves y/o dónde están.

Aunque la documentación se está quedando un poco desfasada estos días, launchd.info es un gran recurso para la configuración y gestión de launchd. Esta entrada del blog tiene una gran información sobre los comandos más recientes utilizados para gestionar launchd.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X