«Приложение повреждено» в macOS: как исправить ошибку
Содержание
- Почему macOS считает приложение повреждённым
- Способ 1: разрешить запуск в системных настройках
- Способ 2: снять карантин командой xattr
- Способ 3: открыть через контекстное меню Finder
- Если приложение всё равно не запускается
- Частые вопросы
- Не опасно ли снимать карантин вручную?
- Нужно ли повторять это после каждого обновления?
Вы скачали dmg, перетащили приложение в Applications, запускаете — и macOS сообщает, что программа повреждена и должна быть перемещена в Корзину. Или что не удаётся проверить разработчика. Файл при этом в полном порядке: так работает Gatekeeper, механизм защиты macOS, который блокирует программы, распространяемые вне App Store и без нотаризации Apple.
Для открытого программного обеспечения это обычная ситуация. Нотаризация требует платного участия в программе разработчиков Apple, и многие свободные проекты — включая настольные клиенты на ядре mihomo — её не проходят. Ниже три способа снять блокировку, от самого простого к терминальному, и разбор случая, когда ни один из них не помогает.
Почему macOS считает приложение повреждённым
Каждому файлу, скачанному через браузер, система приписывает расширенный атрибут com.apple.quarantine — метку «пришло из интернета». При первом запуске Gatekeeper проверяет подпись и нотаризацию такого файла. Если проверка не проходит, система показывает предупреждение, а в некоторых версиях macOS формулирует его максимально пугающе — «приложение повреждено».
Слово «повреждено» здесь вводит в заблуждение: содержимое пакета не изменено и не битое. Речь идёт исключительно об отсутствии подписи, которую система готова принять. Убрать метку карантина можно тремя способами.
Способ 1: разрешить запуск в системных настройках
- Попробуйте открыть приложение обычным способом и дождитесь предупреждения. Закройте его.
- Откройте меню Apple → «Системные настройки» → «Конфиденциальность и безопасность».
- Прокрутите раздел до блока безопасности: там появится строка с именем заблокированной программы.
- Нажмите «Всё равно открыть» и подтвердите действие паролем или Touch ID.
- В следующем диалоге подтвердите открытие ещё раз — дальше приложение будет запускаться как обычное.
Запись о заблокированной программе появляется только после попытки запуска и держится недолго, поэтому шаги стоит выполнять подряд. Расположение раздела зависит от версии macOS, ориентируйтесь на смысл пунктов, а не на точные формулировки.
Способ 2: снять карантин командой xattr
Универсальный вариант, который работает независимо от версии системы и формулировок в интерфейсе. Откройте Терминал и выполните команду, указав путь к приложению:
xattr -dr com.apple.quarantine "/Applications/Clash Verge.app"
Ключ -d удаляет указанный атрибут, -r применяет операцию рекурсивно ко всему содержимому пакета. Кавычки нужны из-за пробела в имени. Для другого приложения подставьте его собственный путь — проще всего перетащить значок программы прямо в окно терминала, и путь подставится сам. Система может запросить пароль администратора; после выполнения команда ничего не выводит, это нормально.
Проверить, остался ли атрибут, можно так:
xattr -l "/Applications/Clash Verge.app"
Осторожно. Команда снимает защиту с конкретного файла. Применяйте её только к программам, происхождение которых вы понимаете, и никогда — к случайным файлам «по совету из интернета».
Способ 3: открыть через контекстное меню Finder
На части версий macOS работает классический приём: найдите приложение в Applications, щёлкните по нему правой кнопкой (или с зажатой клавишей Control) и выберите «Открыть». В появившемся диалоге будет дополнительная кнопка подтверждения, которой нет при обычном двойном щелчке. В новых версиях системы этот путь для непроверенных приложений часто уже недоступен — тогда используйте первые два способа.
Если приложение всё равно не запускается
Когда карантин снят, а программа не стартует или падает сразу после запуска, дело обычно не в Gatekeeper, а в архитектуре сборки. Mac с процессорами Intel не может выполнять сборки, скомпилированные под arm64, — приложение просто не запустится. Обратная комбинация работает через трансляцию Rosetta 2, но это не всегда очевидно по симптомам.
Проверьте свой процессор в меню Apple → «Об этом Mac» и сверьтесь с загруженным файлом: для Apple Silicon нужна сборка aarch64/arm64, для Intel — x64. Подробное сопоставление разобрано в статье про Intel и Apple Silicon, а нужный dmg для macOS есть в центре загрузок. Если и это не помогло, посмотрите общий разбор частых ошибок: причина может быть уже не в системе, а в конфигурации.
Частые вопросы
Не опасно ли снимать карантин вручную?
Вы отключаете проверку для конкретного файла, поэтому вся ответственность за его происхождение переходит к вам. Разумная практика — ставить только приложения с открытым исходным кодом и сверять загруженный файл с релизами официального репозитория проекта, например Clash Verge Rev на GitHub. Само по себе сообщение о «повреждении» не означает, что файл заражён, но и гарантией безопасности снятие карантина не является.
Нужно ли повторять это после каждого обновления?
Да, если вы обновляете приложение вручную, скачивая новый dmg: атрибут карантина присваивается заново каждой свежей загрузке. Обновления, которые клиент устанавливает сам, обычно проходят без повторной блокировки.