Me gustaría forzar una actualización de las aplicaciones de App Store desde la línea de comandos.
¿Cómo puedo hacer esto?
Me gustaría forzar una actualización de las aplicaciones de App Store desde la línea de comandos.
¿Cómo puedo hacer esto?
Apple no suministra un ayudante de línea de comandos ni ninguna clase de cocoa scriptable a la que puedas aferrarte para automatización. A diferencia de la actualización de software en general, que permite actualizaciones e instalaciones listas para usar, puedes automatizar el proceso de hacer clic en botones con un ratón usando Automator.
Sin embargo, la tienda de aplicaciones ha sido hackeada y publicada en código abierto así como en forma binaria:
La instalación es rápida y parece ser bastante fiable en la versión actual de OS X 10.11:
brew install argon/mas/mas
Con el código fuente liberado, esperaría que aparezcan algunas otras implementaciones de esta herramienta, quizás incluso una scripteada con python.
Si alguien está conectado a la mac (el windowmanager está funcionando), puedes usar Automator y la función "watch me do" para automatizar actualizaciones y almacenar tu contraseña de la tienda de forma bastante insegura en el script.
Aquí hay dos tutoriales para ayudarte a empezar si esto satisface tus necesidades.
http://www.tuaw.com/2009/01/19/mac-automation-creating-watch-me-do-workflows/
http://automator.us/leopard/features/virtual-user.html
Una vez que tengas un script funcional, puedes usar el comando open
en la línea de comandos para iniciar el proceso.
Si la aplicación App Store alguna vez expone esa función a scripting, tendrás más opciones desde la línea de comandos. Sería fácil usar sdef
, sdp
y gen_bridge_metadata
para descargar el diccionario completo scriptable y scriptar cosas usando ruby desde la línea de comandos, pero en la actualidad la mejor opción sería usar la herramienta de línea de comandos mas
.
¡Vaya, esto es realmente molesto. Las actualizaciones de software habituales son fácilmente scriptables utilizando softwareupdate(8).
Solo quería señalar para que quede constancia: está claro que Apple ha decidido conscientemente dificultar/no proporcionar ninguna herramienta o gancho o asistencia para automatizar las instalaciones y actualizaciones de la App Store. El sistema central todavía tiene el proceso softwareupdate
e incluso se conecta a la App Store en Mountain Lion, pero solo es para aplicaciones que no sean de la App Store.
La App Store simplemente no es adecuada para la administración. Apenas un gestor de paquetes cuasi, no es ni de lejos tan útil ni confiable como los verdaderos gestores de paquetes como pkgsrc, FreeBSD ports, aptitude, RPM, macports o incluso softwareupdate. En mi experiencia, es impredecible y una pantalla para que los desarrolladores comerciales ofrezcan sus productos. Por lo tanto, realmente solo hay una forma racional y responsable, como administrador competente, de trabajar con la App Store:
sudo launchctl unload -w /System/Library/LaunchAgents/com.apple.store_helper.plist
sudo launchctl unload -w /System/Library/LaunchAgents/com.apple.storeagent.plist
sudo mkdir /System/Library/LaunchAgents\ \(disabled\)/
sudo mv /System/Library/LaunchAgents/com.apple.store* /System/Library/LaunchAgents\ \(disabled\)/
Y simplemente olvídalo, ya no te molestará más. ;-)
En lugar de eso, usa ARD, aunque no sea un gestor de paquetes, gestiona paquetes, instalaciones, actualizaciones y mejoras, hará lo que quieras, te ahorrará tiempo y no te defraudará:
Para Apple Remote Desktop 3, para 10.9:
Primero, consulta la guía de administración para convencerte de que este es el camino a seguir:
curl -Ok http://images.apple.com/ca/fr/remotedesktop/pdf/ARD3_AdminGuide.pdf
open ARD3_AdminGuide.pdf
Luego instala:
curl -Ok http://supportdownload.apple.com/download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/Mac_OS_X/downloads/031-2845.20140313.rerft/RemoteDesktopAdmin372.dmg
hdiutil attach -quiet -noverify -nobrowse -noautoopen RemoteDesktopAdmin372.dmg
sudo installer -pkg /Volumes/Apple\ Remote\ Desktop\ 3.7.2\ Admin\ Update/RemoteDesktopAdmin372.pkg -target /
pero eso podría producir un error divertido si no estás ejecutando la versión 10.9, o si no hay una versión previa de ARD instalada, y si lo hace, intenta:
pkgutil --expand /Volumes/Apple\ Remote\ Desktop\ 3.7.2\ Admin\ Update/RemoteDesktopAdmin372.pkg ARDexpanded/
o para el mismo efecto (aquí es uno u otro, no necesitas usar ambos pkgutil y xar... simplemente estoy siendo minucioso):
mkdir ARDexpanded
cd ARDexpanded
xar -xf /Volumes/Apple\ Remote\ Desktop\ 3.7.2\ Admin\ Update/RemoteDesktopAdmin372.pkg
Y ya no necesitamos la imagen de disco adjunta, así que expúlsala:
hdiutil detach -quiet /Volumes/Apple\ Remote\ Desktop\ 3.7.2\ Admin\ Update/
Y ahora lo que verás si
cd ARDexpanded/RemoteDesktopAdmin372.pkg/
ls
es
Bom PackageInfo Payload Scripts
Lo que hay en el archivo Payload, que es un archivo cpio comprimido con gzip, es lo que buscas. Así que con algunos comandos piped podremos llegar a la aplicación:
cat Payload | gzip -d - | cpio -id
ls
devuelve:
Applications Bom Library PackageInfo Payload Scripts
Y casi has terminado.
cp -R Applications/Remote\ Desktop.app /Applications/
Ahora has instalado Apple Remote Desktop Admin 3.7.2
Así que todo lo que queda por hacer es comprar tu licencia:
open http://store.apple.com/us_smb_78313/product/D6020Z/A/apple-remote-desktop-3-volume-licenses-20-seats-price-is-per-seat
Inicia /Applications/Remote\ Desktop.app y activa la licencia. Y ponte a trabajar.
Para 10.6 Snow Leopard, necesitarás una versión ligeramente anterior de ARD:
curl -Ok http://images.apple.com/ca/fr/remotedesktop/pdf/ARD3_AdminGuide.pdf
curl -Ok http://supportdownload.apple.com/download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/Mac_OS_X/downloads/041-6789.20120917.xD6TR/RemoteDesktopAdmin353.dmg
hdiutil attach -quiet -noverify -nobrowse -noautoopen RemoteDesktopAdmin353.dmg
sudo installer -pkg /Volumes/Apple\ Remote\ Desktop\ 3.5.3\ Admin\ Update/RemoteDesktopAdmin353.pkg -target /
y si te devuelve esto:
installer: Cannot install on volume / because it is disabled.
installer: This update could not find Remote Desktop on this volume.
entonces intenta:
pkgutil --expand /Volumes/Apple\ Remote\ Desktop\ 3.5.3\ Admin\ Update/RemoteDesktopAdmin353.pkg ARD353
hdiutil detach -quiet /Volumes/Apple\ Remote\ Desktop\ 3.5.3\ Admin\ Update
busca en Payload:
cd ARD353/RemoteDesktopAdmin353.pkg/
ls
devuelve:
Bom PackageInfo Payload Scripts
Entonces ejecuta:
cat Payload | gzip -d - | cpio -id
ls
devuelve:
Applications Bom Library PackageInfo Payload Scripts
Y casi has terminado:
cp -R Applications/Remote\ Desktop.app /Applications/
compra tu licencia:
open http://store.apple.com/us_smb_78313/product/D6020Z/A/apple-remote-desktop-3-volume-licenses-20-seats-price-is-per-seat
Inicia /Applications/Remote\ Desktop.app y activa la licencia. Y haz algo productivo.
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.
2 votos
No parece haber un ayudante de línea de comandos como en la actualización general del software, por lo que es posible que te veas limitado a ejecutar un script que automatice los comandos de la GUI. ¿Podrías editar la pregunta para aclarar si esperas que la solución "funcional" sea solamente a través de la terminal o si estás buscando un script de Automator que introduzca tu contraseña cuando se requiera.
0 votos
Estoy buscando algo sin supervisión, aún si esto requiere el AppleID id/password, estoy de acuerdo en incluirlo en el script.
1 votos
También consulta apple.stackexchange.com/questions/42353/… para obtener una solución que llama a una aplicación de terceros.