Инструкции

Приложение повреждено и не может быть открыто. Переместить в Корзину?

Приложение повреждено и не может быть открыто. Переместить в Корзину?

Приложение повреждено и не может быть открыто. Переместить в Корзину?

Самое раздражающее сообщение от macOS. Скачали программу, перетащили в Applications, запускаете, а система выдаёт:

"X" повреждено и не может быть открыто. Вам следует переместить его в Корзину.

Причём кнопок только две: "Переместить в Корзину" или "Отменить". Первый инстинкт - удалить и качать заново. Не надо. Скорее всего, файл в полном порядке. Это ложное срабатывание Apple Gatekeeper.

Почему macOS так говорит

Когда Safari (или любой другой браузер) скачивает файл, macOS автоматически навешивает на него "карантинный флаг" - специальный атрибут com.apple.quarantine. Это невидимая метка "файл из интернета, надо проверить перед запуском".

Дальше при запуске macOS проверяет:

  1. Есть ли у программы валидная цифровая подпись разработчика
  2. Прошла ли она нотариат Apple (notarization)
  3. Не отозван ли сертификат разработчика

Если что-то из этого не так, macOS выдаёт разные сообщения. Для отозванных или неправильно подписанных программ это как раз "Приложение повреждено". Хотя на самом деле программа не повреждена, просто Apple не считает её достаточно проверенной.

Решение: одна команда в Терминале

Откройте Терминал (Spotlight - наберите "Terminal" - Enter). Введите команду:

sudo xattr -rd com.apple.quarantine /Applications/НазваниеПрограммы.app

Замените "НазваниеПрограммы" на реальное имя программы. Например:

sudo xattr -rd com.apple.quarantine /Applications/OnyX.app

Нажмите Enter. Терминал спросит пароль администратора (при вводе курсор не двигается - это нормально, просто печатайте). После ввода пароля команда отработает и программа запустится без проблем.

Что делает эта команда

Разберу по частям для понимания:

  • sudo - выполнить с правами администратора (нужны потому что папка Applications защищена)
  • xattr - утилита для работы с расширенными атрибутами файлов в macOS
  • -rd - рекурсивно (-r) удалить (-d) указанный атрибут
  • com.apple.quarantine - имя самого атрибута карантина
  • /Applications/... - путь к программе

После выполнения macOS "забывает" что программа была скачана из интернета и при следующем запуске не будет её проверять через интернет.

Альтернативный способ: перетаскивание через Finder

Если не хочется работать с Терминалом, есть второй способ. Он работает не всегда, но стоит попробовать:

  1. Откройте папку Applications в Finder
  2. Перетащите проблемную программу в папку Downloads (не удаляйте, именно переместите)
  3. Из Downloads перетащите обратно в Applications
  4. Попробуйте запустить

Иногда это помогает - macOS обновляет метаданные файла и перестаёт видеть карантин.

А если это настоящая ошибка?

Бывает и такое. Если ни один способ не помог, файл может быть реально повреждён. Признаки:

  • При открытии .dmg внутри нет .app файла или он намного меньше ожидаемого размера
  • Скачивание занимало подозрительно мало времени
  • Антивирус (если есть) ругается на файл

В этом случае:

  1. Проверьте SHA256 если сайт указывает контрольную сумму. На mac-soft.ru для каждой программы указан хеш. Откройте Терминал и выполните:
shasum -a 256 ~/Downloads/программа.dmg

Сравните с тем что на сайте. Не совпадает - файл повреждён при скачивании.

  1. Перекачайте файл заново. Удалите неполный/битый файл из папки Downloads перед новой попыткой.
  1. Попробуйте другой браузер. Иногда Safari или Chrome прерывают загрузку молча. Попробуйте скачать через другой браузер.

Частые вопросы

Почему macOS пишет "повреждено" если файл нормальный?
Потому что Apple плохо формулирует ошибки. Правильнее было бы написать "не удалось проверить сертификат разработчика, возможно программа небезопасна". Но "повреждено" короче.

Это заразит Mac вирусом?
Снятие карантина не повышает риск. Вирусы работают независимо от этого атрибута. Если программа вредоносная - она вредоносная и без карантина. А если она безопасная, но macOS считает её подозрительной, то снятие карантина просто убирает ложный алерт.

Можно ли снять карантин со всех программ сразу?
Да, если нужно. Команда sudo xattr -rd com.apple.quarantine /Applications/* снимет карантин со всех программ в Applications. Но лучше делать это по одной - безопаснее.

А в macOS Tahoe / Sequoia это всё ещё работает?
Да, команда xattr есть во всех версиях macOS включая последние. Apple её не убирает, потому что системные администраторы и разработчики часто ей пользуются.

Разобрались. Если хотите узнать про другие типичные ошибки, посмотрите полную инструкцию по установке программ на macOS.

Комментарии (0)

Пока нет комментариев.