2 votos

El uso de launchd para actualizar MacPorts

Quiero usar launchd para actualizar mi MacPorts árbol 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

Se tiene el siguiente contenido:

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

Me he cargado y comprobado que está cargada:

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

Pero no parece que realmente 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)
...

Lo que me estoy perdiendo?

1voto

klanomath Puntos 19587

Usted probablemente poner el plist en ~/Library/LaunchAgents/. Puesto que /opt/local es propiedad de root:wheel (que al menos es el valor predeterminado), usted no tiene los permisos necesarios para escribir en ciertas carpetas necesarias (por ejemplo, /opt/local/var/macports/fuentes/rsync.macports.org/release/tar/tmp). Los archivos de registro (es decir, /var/log/org.macports.selfupdate.registro/err) ni puede ser creado, porque sólo root puede escribir en /var/log/.

Para ejecutar el selfupdate servicio como el lanzamiento de demonio:

  • Quitar el lanzamiento de agente de la launchd de la base de datos:

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

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

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

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

Tales lanzamiento demonio que se ejecuta con permisos de root y actualizar MacPorts de datos, así como escribir en /var/log/.

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