在 Mac 使用的过程中,如果从第三方下载一些软件,安装的时候时常会出现“已损坏”的报错,这篇文章简单聊一下是为什么。
出现问题的原因
主要是因为安装的这些软件没有按照苹果官方要求进行签名和认证,在系统检测的过程中,将这些软件拦截了。
方案一:关闭系统策略控制,选择全部安装来源
在10.12及之前版本中,可以在设置-安全中找到一个“允许从以下位置下载的应用”,点击选择“全部来源”即可。
在10.13之后的版本,苹果将这个入口关掉了,你需要手动开通:
- 打开终端(或类似的软件)
- 输入
sudo spctl --master-disable
,回车,输入密码。 - 再看一下刚才的那个界面,此时就出现全部来源了,选择全部来源。
spctl 全称是 system policy control,即系统策略控制。输入这个命令以管理员关闭这个机制。
更详细的苹果官方说明见这里。
方案二:解除应用的隔离属性
到了10.15版本之后,又有了新的变化,苹果官方的 gatekeeper 机制会给这些应用加上一个特殊的隔离属性,导致无法打开。
- 打开终端(或类似的软件)
- 输入
sudo xattr -r -d com.apple.quarantine 应用路径
- 对于 pegBoard 来说,常见的路径是
sudo xattr -r -d com.apple.quarantine /Applications/PegBoard.app
- 输入密码,回车。并再次打开。
xattr 是 Extended attributes,即扩展属性。苹果会给有风险的应用加上一个 com.apple.quarantine
属性,因此我们就需要用 xattr 命令删除这个属性。
-d
代表删除,-r
代表以递归方式。
更多关于GateKeeper的介绍见这里