Usando launchd para actualizar MacPorts

Quiero usar launchd para actualizar mi tree MacPorts periódicamente (es decir, port selfupdate .

He creado /Library/LaunchDaemons/org.macports.selfupdate.plist :

 $ ls -l /Library/LaunchDaemons/org.macports.selfupdate.plist -rw-r--r-- 1 root wheel 669 8 Nov 12:49 /Library/LaunchDaemons/org.macports.selfupdate.plist 

Tiene los siguientes contenidos:

 <?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>org.macports.selfupdate</string> <key>ProgramArguments</key> <array> <string>/opt/local/bin/port</string> <string>selfupdate</string> </array> <key>StandardOutPath</key> <string>/var/log/org.macports.selfupdate.log</string> <key>StandardErrorPath</key> <string>/var/log/org.macports.selfupdate.err</string> <key>RunAtLoad</key> <true/> <key>StartInterval</key> <integer>604800</integer><!-- 1 week --> </dict> </plist> 

Lo he cargado y verificado que está cargado:

 $ launchctl list | grep macports - 78 org.macports.selfupdate 

Pero no parece que realmente se ejecute.

 $ port info wireshark Warning: port definitions are more than two weeks old, consider updating them by running 'port selfupdate'. wireshark @1.12.8_3 (net) ... 

¿Qué me estoy perdiendo?

  • Hacer que los MacPorts piensen que ya existe una dependencia instalada
  • ¿Cómo instalar Scala en Mac OS X con MacPorts?
  • Macports / fink / homebrew - ¿Qué permite la installation verdadera no raíz, solo en el directory de inicio?
  • Python IDLE de MacPorts no puede iniciarse
  • ¿Cómo puedo forzar a MacPorts a actualizar todos los puertos actualizables que pueda?
  • ¿Cómo puedo retrasar la carga de un launchd Launch Daemon en el arranque?
  • Cómo instalar y ejecutar nautilus usando macports (o de cualquier otra forma)
  • evitar la ejecución de Apache incorporado con la aplicación de server
  • One Solution collect form web for “Usando launchd para actualizar MacPorts”

    Probablemente pongas el plist en ~ / Library / LaunchAgents /. Dado que / opt / local es propiedad de root: wheel (que es al less el valor pnetworkingeterminado), no tiene los permissions adecuados para escribir en ciertas carpetas necesarias (por ejemplo, /opt/local/var/macports/sources/rsync.macports. org / release / tarballs / tmp). No se pueden crear los files de logging (es decir, /var/log/org.macports.selfupdate.log/err), ya que solo root puede escribir en / var / log /.

    Por lo tanto, ejecute el service de autoactualización como demonio de inicio:

    • Elimine el agente de inicio de la database de launchd:

       launchctl remove org.macports.selfupdate 
    • Mueva el plist a / Library / LaunchDaemons /:

       sudo mv ~/Library/LaunchAgents/org.macports.selfupdate.plist /Library/LaunchDaemons/org.macports.selfupdate.plist 
    • Modificar propietario y permissions:

       sudo chown root:wheel /Library/LaunchDaemons/org.macports.selfupdate.plist sudo chmod 644 /Library/LaunchDaemons/org.macports.selfupdate.plist 
    • Cargue el daemon:

       sudo launchctl load /Library/LaunchDaemons/org.macports.selfupdate.plist 

    Dicho daemon de inicio se ejecuta con permissions de raíz y puede actualizar datos de MacPorts y escribir en / var / log /.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).