Я скачал некоторые файлы .jar
из Интернета и хочу использовать их под Mac OS X. Но ОС, похоже, пометила их расширенным атрибутом com.apple.quarantine (никаких указаний на это, пока я не заметил " @
"). в ls -l
и разобрался как использовать ls -l@
) - видимо потому что они были скачаны из интернета. Какой правильный способ справиться с этим?
5 ответов
Вам не нужно иметь дело с этим. Откройте его, и OS X попросит вашего разрешения. Или, как предложил Ричард, удалите его, используя что-то вроде:
xattr -d com.apple.quarantine my_jar.jar
Чтобы сделать это автоматически для любого загруженного файла, вы можете прикрепить действие папки к папке загрузки, как описано на macosxhints.com в 10.5: Снимите флаг предупреждения «загруженный файл».
И вот уже давно на Macosxhints.com было опубликовано следующее: для Safari: 10.5: отключите предупреждение файла «скачано из интернета», утверждая, что можно удалить VerifiedDownloadPlugin.plugin
из /Library/Internet Plug-Ins
. Я не проверял это.
В качестве отступления: иногда нужно запускать одну программу несколько раз на Mac. Это можно сделать с помощью cd /Applications/some-application/
после чего open -n "Application Name.app"
. Для этого действительно нужен суффикс .app
; запуск open -n "Application Name"
может получить один доступ для остановки GateKeeper:
"Имя приложения" не может быть открыто из-за неизвестного разработчика.
Ваши настройки безопасности позволяют устанавливать только приложения из Mac App Store и определенных разработчиков.
Выше даже удаление расширенного атрибута com.apple.quarantine
не исправляет это, но использование суффикса .app
работает просто отлично.
(Я никому не советую фактически избавляться от мер безопасности.)
Этот атрибут добавлен, чтобы он мог запрашивать подтверждение пользователя при первом запуске загруженной программы, чтобы помочь остановить вредоносное ПО. После подтверждения атрибут должен быть удален автоматически, и тогда программа будет работать нормально.
xattr -d com.apple.quarantine /path/to/file
Вы можете отключить предупреждения навсегда, по defaults write com.apple.LaunchServices LSQuarantine -bool false
. Он также отключает диалоговые окна гейткипера, даже если вы не разрешали загружать приложения из любой точки системной настройки.
Я нашел следующую команду
find Application.app | while read l; do echo $l; xattr -d com.apple.quarantine "$l"; done
очень полезно при попытке избавиться от атрибута. Обратите внимание на двойные кавычки около $l
- они вам нужны, если в папке ваших приложений есть файлы с пустым именем.