在 Mac 使用的过程中,如果从第三方下载一些软件,安装的时候时常会出现“已损坏”的报错,这篇文章简单聊一下是为什么。

出现问题的原因

主要是因为安装的这些软件没有按照苹果官方要求进行签名和认证,在系统检测的过程中,将这些软件拦截了。

方案一:关闭系统策略控制,选择全部安装来源

在10.12及之前版本中,可以在设置-安全中找到一个“允许从以下位置下载的应用”,点击选择“全部来源”即可。

在10.13之后的版本,苹果将这个入口关掉了,你需要手动开通:

  1. 打开终端(或类似的软件)
  2. 输入 sudo spctl --master-disable,回车,输入密码。
  3. 再看一下刚才的那个界面,此时就出现全部来源了,选择全部来源。

spctl 全称是 system policy control,即系统策略控制。输入这个命令以管理员关闭这个机制。

更详细的苹果官方说明见这里

方案二:解除应用的隔离属性

到了10.15版本之后,又有了新的变化,苹果官方的 gatekeeper 机制会给这些应用加上一个特殊的隔离属性,导致无法打开。

  1. 打开终端(或类似的软件)
  2. 输入 sudo xattr -r -d com.apple.quarantine 应用路径
  3. 对于 pegBoard 来说,常见的路径是 sudo xattr -r -d com.apple.quarantine /Applications/PegBoard.app
  4. 输入密码,回车。并再次打开。

xattr 是 Extended attributes,即扩展属性。苹果会给有风险的应用加上一个 com.apple.quarantine 属性,因此我们就需要用 xattr 命令删除这个属性。

-d 代表删除,-r 代表以递归方式。

更多关于GateKeeper的介绍见这里