2 votes

La mise à jour in-app des applications MacOS ne fonctionne pas (ShipIt)

Depuis la sortie d'OS X El Capitan, j'ai des difficultés à mettre à jour les applications tierces (hors App Store) à l'aide des fonctions de mise à jour intégrées à l'application. En général, celles-ci téléchargent automatiquement la mise à jour et vous demandent de redémarrer l'application pour l'appliquer. Parfois, cette opération s'effectue dans la barre de menu de l'application, et parfois, une fenêtre contextuelle vous demande de redémarrer l'application.

enter image description here

Cependant, quel que soit le nombre de fois où je redémarre l'application, la mise à jour ne sera jamais appliquée. Elle recommence donc à télécharger la mise à jour et demande à nouveau de redémarrer l'application.

Voici quelques exemples d'applications avec lesquelles j'ai des problèmes : Éditeur Atom , Slack (version Web DL), et quelques autres.

J'ai lu quelque part que pourrait être liée à la protection SIP qui a été introduite avec El Capitan, et que seuls les utilisateurs Root peuvent utiliser cette version particulière de la mise à jour automatique maintenant. Est-ce exact ?

Mon utilisateur principal n'est pas un utilisateur administrateur. Au lieu de cela, je dois invoquer l'autorisation de mon utilisateur administrateur lorsque des privilèges d'administrateur sont nécessaires. Je ne sais pas si cela a un rapport avec le problème : les mises à jour in-app ne demandent jamais les privilèges d'administrateur.

Dans cette optique, j'aimerais éviter de désactiver la protection SIP si possible.

Modifier : exemple de system.log

Malheureusement, j'ai été plus rapide que le premier commentaire ci-dessous, et contre ce conseil j'ai installé cask . Ainsi, les applications problématiques comme Atom et Slack sont actuellement dans leur dernière version. Cependant, je semble avoir un problème similaire avec une nouvelle application appelée RealTime Board. Alors qu'Atom et Slack se mettent automatiquement à jour via le menu fichier et demandent ensuite un redémarrage, RealTime Board télécharge la mise à jour et demande un redémarrage via une pop-up. Je soupçonne donc qu'il fonctionne de la même manière que ces autres applications avec lesquelles j'ai eu des problèmes. Là encore, la mise à jour de l'application refuse de s'appliquer au redémarrage, et me demande continuellement de mettre à jour et de redémarrer via une pop-up au lancement de l'application. Je vais devoir attendre et voir comment Atom et Slack se comporteront lorsque les nouvelles versions seront disponibles. Voici la tentative de mise à jour de RealTime Board à partir de system.log :

May 17 22:56:49 myuser ShipIt[2803]: Beginning installation
May 17 22:56:49 myuser ShipIt[2803]: Couldn't abort install and restore owned bundle to previous location file:///Applications/RealtimeBoard.app, error NSError { domain: NSPOSIXErrorDomain, code: 2, description: "No such file or directory" }
May 17 22:56:52 myuser ShipIt[2803]: Installation error: Error Domain=NSPOSIXErrorDomain Code=13 "Permission denied" UserInfo={NSLocalizedDescription=Permission denied}
May 17 22:56:52 myuser com.apple.xpc.launchd[1] (com.electron.realtimeboard.ShipIt[2803]): Service exited with abnormal code: 1
May 17 22:56:52 myuser ShipIt[2848]: Resuming installation attempt 2
May 17 22:56:52 myuser ShipIt[2848]: Couldn't abort install and restore owned bundle to previous location file:///Applications/RealtimeBoard.app, error NSError { domain: NSPOSIXErrorDomain, code: 2, description: "No such file or directory" }
May 17 22:56:54 myuser ShipIt[2848]: Installation error: Error Domain=NSPOSIXErrorDomain Code=13 "Permission denied" UserInfo={NSLocalizedDescription=Permission denied}
May 17 22:56:54 myuser com.apple.xpc.launchd[1] (com.electron.realtimeboard.ShipIt[2848]): Service exited with abnormal code: 1
May 17 22:56:54 myuser ShipIt[2857]: Resuming installation attempt 3
May 17 22:56:54 myuser ShipIt[2857]: Couldn't abort install and restore owned bundle to previous location file:///Applications/RealtimeBoard.app, error NSError { domain: NSPOSIXErrorDomain, code: 2, description: "No such file or directory" }
May 17 22:56:56 myuser com.apple.usbmuxd[114]: notice    USBMuxBonjourDeviceListenerCreate: LOCKDOWN_V2_BONJOUR_SERVICE_NAME is _apple-mobdev2._tcp,8d1f07bd
May 17 22:56:57 myuser ShipIt[2857]: Installation error: Error Domain=NSPOSIXErrorDomain Code=13 "Permission denied" UserInfo={NSLocalizedDescription=Permission denied}
May 17 22:56:57 myuser syslogd[60]: ASL Sender Statistics
May 17 22:56:57 myuser com.apple.xpc.launchd[1] (com.electron.realtimeboard.ShipIt[2857]): Service exited with abnormal code: 1
May 17 22:56:57 myuser ShipIt[2877]: Too many attempts to install, aborting update
May 17 22:56:57 myuser ShipIt[2877]: Error aborting installation: Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory" UserInfo={NSLocalizedDescription=No such file or directory}
May 17 22:56:57 myuser ShipIt[2877]: Application launched at file:///Applications/RealtimeBoard.app

Je pense que le problème peut être lié à ShipIt qui, je pense, est le même système que celui utilisé par Atom pour les mises à jour.

Il existe un fil ici suggérant (de façon contestable) que le problème pourrait être lié au fait que l'utilisateur admin n'est pas le "propriétaire" de l'application. Listing chown sur l'application révèle ceci :

drwxr-xr-x@   3 myuser  admin     102 Mar 22 13:34 RealtimeBoard.app

Je suppose que cela signifie que je suis le propriétaire de l'application.


Vous utilisez des fûts ?

NB : J'ai lu quelque chose sur Homebrew-Cask comme une alternative pour ne pas avoir à faire tout le travail manuel de mise à jour des applications non-App Store. Je n'ai jamais entendu parler de cask avant, mais j'utilise Homebrew. Serait-ce une solution recommandable ?

1 votes

Je doute que cela ait un rapport avec le SIP. Et je vous déconseille d'essayer Cask pour installer Atom ou quoi que ce soit d'autre pour l'instant. Je recommande de résoudre ce problème d'abord. Ouvrez Console.app depuis le dossier Utilities, sélectionnez "system.log" dans la liste de gauche et entrez "atom" dans le champ de recherche en haut à droite. Si vous avez essayé de mettre à jour Atom récemment, il devrait y avoir une poignée d'entrées. Veuillez les ajouter à votre question.

0 votes

@AlistairMcMillan Merci - Malheureusement, je vous ai devancé, et j'ai déjà installé cask avec les dernières versions de certaines applications. J'ai ajouté un exemple de system.log pour l'application RealTime Board qui, je pense, connaît le même problème. Il semble que ce soit lié à ShipIt .

2 votes

Je pense que cet échec est dû au fait que vous utilisez un compte non-administrateur. Ce compte ne pourra pas écrire dans le dossier /Applications, de sorte que le programme de mise à jour devrait vous demander de vous élever, mais il ne semble pas le faire. Il y a de nombreux messages en ligne où les gens disent la même chose. github.com/atom/atom/issues/2860 discuss.atom.io/t/self-updates-with-non-admin-os-x-account/3155/

1voto

John Points 3448

Vous devez avoir les droits d'administrateur pour écrire dans /Applications - c'est pourquoi la mise à jour échoue. Essayez d'exécuter l'application à travers le Terminal :

sudo path/to/app/Contents/MacOS/appname .

Ou utilisez simplement un compte administrateur.

1 votes

Vous avez probablement raison de dire qu'il faut être un utilisateur administrateur. Malheureusement, l'exécution de l'application par l'intermédiaire de sudo n'a rien changé. Je pense que le problème est que lorsque l'application redémarre d'elle-même, après avoir demandé l'application d'une mise à jour, elle ne démarre plus dans une instance "sudo/admin". Ce qui est étrange, c'est que les mises à jour ne semblent jamais s'installer entre les redémarrages, même si je peux voir dans les journaux qu'elles ont été téléchargées.

0 votes

@Winterflags Je pense qu'une façon plus efficace et plus rapide de procéder serait de télécharger une nouvelle version depuis le site web et de la remplacer manuellement. Les données de l'utilisateur ne seront pas supprimées car elles sont stockées dans ~/Bibliothèque/Application Support/.

1 votes

@Winterflags Aussi, cask est un outil très utile. Vous pouvez l'installer en utilisant brew tap caskroom/cask Vous pouvez ensuite utiliser brew cask install <appname> pour l'installer et après l'installation d'une application, vous pouvez ainsi utiliser brew update + brew upgrade pour mettre à jour toutes les applications installées avec cask qui doivent être mises à jour. Si vous voulez enregistrer une application comme si elle avait été installée avec cask, essayez brew cask reinstall <appname> . Cela réinstallera l'application (uniquement le binaire) mais cette fois-ci, elle pourra être mise à jour en utilisant homebrew/cask.

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