Оновлення додатків macOS у програмі не працює (ShipIt)


0

З тих пір, як вийшла OS X El Capitan, у мене виникли проблеми з оновленням сторонніх додатків (без App Store) за допомогою будь-яких наданих функцій оновлення в програмі. Зазвичай вони автоматично завантажують оновлення і просять перезапустити програму, щоб застосувати оновлення. Іноді це виконується в рядку меню програми, а іноді з'являється спливаюче вікно в програмі з проханням перезапустити програму.

enter image description here

Однак, незалежно від того, скільки разів я перезапускаю додаток, оновлення ніколи не буде застосовано, тому він починає завантажувати оновлення і знову запитує, щоб перезапустити програму.

Деякі приклади програм, з якими у мене виникають проблеми, це: Редактор Atom , Слабенький (Версія Web DL) і кілька інших.

Я десь прочитав, що це може бути пов'язаними з SIP захистом, який був введений з El Capitan, і що лише користувачі root можуть використовувати цей особливий смак автоматичного оновлення зараз. Це правильно?

Мій основний користувач не є адміністратором. Замість цього мені потрібно викликати авторизацію користувача адміністратора, коли потрібні привілеї адміністратора. Я не знаю, чи це має відношення до проблеми - оновлення в програмі ніколи не вимагають привілеїв адміністратора.

Маючи це на увазі, я хотів би уникати відключення захисту SIP, якщо це можливо.

Редагувати: приклад system.log

На жаль, я був швидше, ніж перший коментар нижче, і проти того, що я встановив cask. Так що зараз проблемні додатки, такі як Atom і Slack, в даний час на їх останню версію. Однак, схоже, я маю подібну проблему з новою програмою під назвою RealTime Board. Якщо Atom і Slack автоматично оновлюються через меню файлів, а потім запитує перезавантаження, RealTime Board завантажує оновлення і запитує перезавантаження через спливаюче вікно. Так що я підозрюю, що він працює багато в чому так само, як і інші програми, з якими я мав проблеми. Знову ж таки, оновлення програми відмовляється застосовуватись під час перезавантаження і буде постійно просити мене оновити & amp; перезавантажте за допомогою спливаючого вікна запуску програми. Мені доведеться почекати і подивитися, як Atom і Slack поводяться, як тільки з'являться нові версії. Ось спроба оновлення RealTime Board з 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

Я підозрюю, що проблема може бути пов'язана з ShipIt , яку, на мою думку, використовує система Atom для оновлень.

Є нитка тут припускаючи, що проблема може бути пов'язана з тим, що користувач адміністратора не є власником програми. Лістинг chown у додатку показує це:

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

Я припускаю, що це означає, що я власник програми.


Використання бочки?

NB: Я читав щось Homebrew-Cask як альтернативу відсутності необхідності виконувати всю ручну роботу по оновленню додатків, які не належать до App Store. Я ніколи не чув cask раніше, але я використовую Homebrew. Чи може це бути доцільним рішенням?


1
Я сумніваюся, що це пов'язано з SIP. І я б рекомендував не намагатися Cask встановити Atom або що-небудь ще прямо зараз. Перш за все рекомендую вирішити цю проблему. Відкрийте Console.app у папці утиліт, виберіть "system.log" у списку ліворуч і введіть "atom" у поле пошуку у верхньому правому куті. Якщо ви нещодавно намагалися оновити Atom, там має бути декілька записів. Додайте їх до свого запитання.
Alistair McMillan

@AlistairMcMillan Спасибі - На жаль, я побив вас до нього, і вже встановлений cask з останніми версіями деяких програм. Я додав приклад з system.log для додатку RealTime Board, який, на мою думку, відчуває таке ж питання. Здається, щось має робити ShipIt.
Winterflags

2
Я вважаю, що це не так, тому що ви використовуєте обліковий запис, який не є адміністратором. Цей обліковий запис не зможе записувати в папку / Applications, щоб програма оновлення мала підказувати про висоту, але це не здається. Є багато повідомлень в Інтернеті, де люди говорять те ж саме. github.com/atom/atom/issues/2860 discuss.atom.io/t/self-updates-with-non-admin-os-x-account/3155/…
Alistair McMillan

Відповіді:


1

Для запису потрібні права адміністратора /Applications - Ось чому оновлення не працює. Спробуйте запустити програму через термінал:

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

Або просто скористайтеся обліковим записом адміністратора.


1
Ймовірно, ви маєте рацію, що потрібно бути адміністратором. На жаль, запускається додаток sudo нічого не змінив. Я думаю, що проблема полягає в тому, що коли програма перезапускається сама по собі, після запиту на застосування оновлення, вона більше не запускається в примірник "sudo / admin". Дивно те, що оновлення ніколи не встановлюються між перезавантаженням, хоча я бачу в журналах, що він був завантажений.
Winterflags

@Winterflags Я думаю, що кращий і швидкий спосіб зробити це - завантажити нову версію з сайту і замінити її вручну. Дані користувача не будуть видалені, оскільки вони зберігаються в ~ / Library / Application Support /.
wateroverflow9102

1
Також @Winterflags cask є дуже корисним інструментом. Ви можете встановити його за допомогою brew tap caskroom/cask, а потім можна використовувати brew cask install <appname> для встановлення та встановлення програми таким чином, що ви можете використовувати brew update + brew upgrade щоб оновити всі програми, встановлені за допомогою cask, які потрібно оновити. Якщо ви хочете зареєструвати додаток, як якщо б він був встановлений з cask, спробуйте brew cask reinstall <appname>. Це перевстановить цю програму (лише двійкову), але на цей раз вона буде доступною для оновлення за допомогою доморощеного / cask.
wateroverflow9102
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.