0 votes

launchctl donne une erreur "Invalid property list", mais plutil valide "OK".

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

Mais alors :

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

Fichier en question :

    <?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 Points 767

Pour commencer, le problème avec votre plist est que vous avez "Hello world" dans <key> au lieu de <string> tags. Bien que ce soit techniquement du xml valide, ce n'est pas un plist valide, et certainement pas un plist de configuration launchd valide.

Invalide

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

Valable

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

Vous pouvez en fait avoir plutil corrigez cela en utilisant

plutil -convert xml1 local.test.plist

Par défaut, le plutil utilise l'option -lint par défaut si aucune autre option n'est spécifiée

De l'homme plutil(1) :

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

Je suppose que cette fonctionnalité n'est pas totalement au point et qu'elle peut manquer certains cas limites comme celui-ci. Il est probable qu'elle ne vérifie que la correspondance entre les balises d'ouverture et de fermeture, mais pas le contexte des clés et/ou leur emplacement.

Même si la documentation est un peu dépassée ces derniers temps, launchd.info est une excellente ressource pour la configuration et la gestion de launchd. Cet article de blog contient d'excellentes informations sur les commandes les plus récentes utilisées pour gérer launchd.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X