Skip to content

macOS 常见问题

作者:Atom
字数统计:645 字
阅读时长:2 分钟

日常在 macOS 上开发和折腾软件时, 总会遇到一些反复出现的小问题, 每次都去搜索一遍颇为麻烦, 因此在这里做一个持续的记录, 方便日后查阅

软件已损坏, 无法打开

安装一些从官网之外下载的第三方软件时, 双击打开经常会弹出提示

"xxx" 已损坏, 无法打开。 您应该将它移到废纸篓。

软件本身大概率是完好的, 这个提示来自 macOS 的安全机制 Gatekeeper。 系统会对从网络下载的应用做来源校验, 没有经过 Apple 公证(notarization)或签名的应用就会被拦下, 表现出来就是"已损坏"

开启任何来源

从 macOS Sierra 10.12 开始, 系统已经默认隐藏了"任何来源"这个选项, 关闭状态下会直接影响第三方应用的运行

打开 启动台, 进入 终端, 输入以下命令

bash
sudo spctl --master-disable

回车后输入开机密码(密码输入时不可见), 再回车即可

接着打开 系统偏好设置, 选择 安全性与隐私, 切换到 通用, 此时就能看到 任何来源 已经处于选中状态, 之后再安装应用即可

移除隔离属性

如果开启任何来源后依然提示"已损坏", 说明应用被打上了隔离标记(com.apple.quarantine), 需要手动把它移除

在终端中输入下面这条命令, 注意 末尾要保留一个空格

bash
sudo xattr -r -d com.apple.quarantine

此时 先不要回车。 打开 访达, 进入 应用程序 目录, 找到对应的软件图标, 直接把图标拖拽到终端窗口里, 命令会自动补全成类似下面的样子

bash
sudo xattr -r -d com.apple.quarantine /Applications/WebStorm.app

回到终端按回车, 输入系统密码后再回车, 重新打开应用就能正常使用了

说明

  • xattr 用于读写文件的扩展属性, -r 表示递归处理目录下的所有文件, -d 表示删除指定属性
  • 这种方式只针对单个应用解除限制, 比全局关闭 Gatekeeper 更安全, 推荐优先使用
  • 如果以上方法都无效, 通常是该版本与当前系统不兼容, 可以尝试下载旧版本