С момента выхода OS X El Capitan у меня возникали проблемы с обновлением сторонних приложений (не в App Store) с использованием каких-либо функций обновления, встроенных в приложение. Обычно они автоматически загружают обновление и предлагают перезапустить приложение, чтобы применить обновление. Иногда это обрабатывается в строке меню приложения, а иногда в приложении появляется всплывающее окно с просьбой перезапустить приложение.
Однако, независимо от того, сколько раз я перезапускаю приложение, обновление никогда не будет применено, поэтому оно начинает загружать обновление заново и снова просит перезапустить приложение.
Вот некоторые примеры приложений, с которыми у меня проблемы: Редактор Atom , слабина (Web DL версия) и несколько других.
Я где-то читал, что это может быть быть связанным с защитой SIP, которая была введена с El Capitan, и что только пользователи root могут использовать этот конкретный вариант автообновления сейчас. Это правильно?
Мой основной пользователь не является администратором. Вместо этого мне нужно вызвать авторизацию пользователя с правами администратора, когда требуются права администратора. Я не знаю, имеет ли это какое-либо отношение к проблеме - обновления в приложении никогда не запрашивают привилегии администратора.
Имея это в виду, я бы хотел по возможности избежать отключения защиты SIP.
Изменить: пример system.log
К сожалению, я был быстрее, чем первый комментарий ниже, и против этого совета я установил cask
, Так что теперь проблемные приложения, такие как Atom и Slack, в настоящее время находятся в их последней версии. Однако, похоже, у меня похожая проблема с новым приложением под названием RealTime Board. Когда Atom и Slack автоматически обновляются через меню файлов и затем запрашивают перезапуск, RealTime Board загружает обновление и запрашивает перезапуск через всплывающее окно. Поэтому я подозреваю, что он работает так же, как и другие приложения, с которыми у меня были проблемы. Опять же, обновление приложения отказывается применяться после перезапуска и будет постоянно просить меня обновить & amp; перезапустите через всплывающее окно при запуске приложения. Мне придется подождать и посмотреть, как ведут себя Atom и Slack, когда появятся новые версии. Вот попытка обновления платы RealTime от 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
Я подозреваю, что проблема может быть связана с Отправим его Я думаю, это та же система, которую использует Atom для обновлений.
Eсть нить здесь предполагая (disputedly), что проблема может быть связана с пользователем администратора не является «владельцем» приложения. список chown
В заявлении раскрывается это:
drwxr-xr-x@ 3 myuser admin 102 Mar 22 13:34 RealtimeBoard.app
Я предполагаю, что это означает, что я владелец приложения.
Используя бочку?
NB: Я читал кое-что о Homebrew-Бочка в качестве альтернативы тому, что вам не нужно выполнять всю ручную работу по обновлению приложений, не принадлежащих App Store. Я никогда не слышал о cask
раньше, но я использую Homebrew. Может ли это быть рекомендуемым решением?
источник
cask
с последними версиями некоторых приложений. Я добавил пример изsystem.log
для приложения RealTime Board, который, как мне кажется, испытывает ту же проблему. Похоже, что-то связано сShipIt
,Ответы:
Вам нужно разрешение администратора, чтобы написать
/Applications
- Вот почему обновление не удается. Попробуйте запустить приложение через терминал:sudo path/to/app/Contents/MacOS/appname
,Или просто используйте учетную запись администратора.
источник
sudo
ничего не изменилось Я думаю, проблема в том, что когда приложение перезапускается само по себе, после запроса на обновление, оно больше не запускается в экземпляре "sudo / admin". Странно то, что обновления никогда не устанавливаются между перезапусками, хотя я вижу в журналах, что они были загружены.cask
это очень полезный инструмент. Вы можете установить его используяbrew tap caskroom/cask
, а затем вы можете использоватьbrew cask install <appname>
установить и после установки приложения таким образом, вы можете использоватьbrew update
+brew upgrade
обновить все приложения, установленные с бочкой, которые должны быть обновлены. Если вы хотите зарегистрировать приложение, как если бы оно было установлено с помощью cask, попробуйтеbrew cask reinstall <appname>
, Это переустановит это приложение (только двоичное), но на этот раз оно будет доступно для обновления с помощью homebrew / cask.