Comment charger une plist offlineimap dans launchctl sans sudo sur OSX?

1

J'aimerais que launchd exécute offlineimap toutes les quelques minutes pour mettre à jour mon répertoire de messages mutt. Je n'arrive pas à obtenir le fichier plist pour le chargement de offlineimap sans utiliser sudo.

Lors de l'exécution

launchctl load -S Aqua /path/to/plist

J'arrive là erreur:

launch_msg(): Socket is not connected

Ce qui, je pense, est lié au fait que je n’ai pas d’autorisations sudo pour le socket.

En essayant

sudo launchctl load -S Aqua /path/to/plist

Fonctionne sans problème, mais offlineimap recherche le fichier .offlineimaprc dans / var / root, ce qui est inutile. Je crois que c'est parce que offlineimap est lancé en tant qu'utilisateur root.

Quelqu'un peut-il offrir des suggestions? Je suis sur le point de commencer à me tirer les cheveux.

RÉPONSE

J'utilisais iTerm2 comme mon terminal client. Cela n'apparaît pas dans une application Aqua et je ne peux donc pas accéder au socket de session aqua avec launchctl. Exécuter la même commande dans Terminal.app m'a également permis.

Merci à Gordon pour la suggestion qui a conduit à la réponse.

Michael Barton
la source

Réponses:

2

C'est l'erreur que lance lancctl lorsque vous ne faites pas partie du type de session approprié. Dans ce cas, il semblerait que vous essayiez de charger votre élément launchd dans une session Aqua (c'est-à-dire la connexion à l'interface graphique) et cela échoue car vous ne vous exécutez pas dans une telle session. Êtes-vous SSH dans l'ordinateur, ou quelque chose comme ça?

BTW, la raison pour laquelle cela fonctionne quand on pense est que lancer launchctl en tant que root parle toujours à la session système (apparemment, cela remplace la -S Aqua option), qui est toujours là.

Gordon Davisson
la source
Bonjour Gordon, merci de votre réponse. J'exécute une session graphique sous OSX. Cependant, j'utilise iTerm2 en tant que terminal client. Essayer ceci en utilisant Terminal.app m'a permis de charger le fichier plist.
Michael Barton
1

Si vous voulez toujours utiliser launchctl depuis iTerm2, vous pouvez également le faire:

sudo launchctl load -F /path/to/plist

Cela devrait fonctionner, car j'ai aussi le même problème que vous quand j'essaie de faire une charge "normale" depuis iTerm2

SystematicFrank
la source