Macports 的权限下降导致 Xcode 许可证问题



我正在尝试在OS X上使用Macports安装一些端口,但是一旦安装尝试调用C编译器,我就会得到:

同意 Xcode/iOS 许可证需要管理员权限,请通过 sudo 以 root 身份重新运行。

上下文:

  • 我已经运行sudo xcodebuild -license并成功同意许可证但是当我运行xcodebuild -license时,我收到相同的错误同上。
  • 我正在 sudo 中运行 Macports:sudo port install ghostscript但是Macports 似乎在安装过程中放弃了权限。(还尝试以root用户身份使用终端,但这似乎也没有帮助。

因此,我看到了两种选择:要么设法以某种方式同意我的用户级别的许可证,要么强迫Macports保留特权。但到目前为止,还没有设法做到这些。

许可证接受存储在

  • /Library/Preferences/com.apple.dt.Xcode.plist,
  • ~/Library/Preferences/com.apple.dt.Xcode.plist(MacPorts 在启动时从您的家中复制此文件,以支持需要每个用户接受的旧 Xcode 版本),或
  • ~macports/Library/Preferences/com.apple.dt.Xcode.plist

如果存在这些文件,请尝试将其移到一边,然后使用 sudo xcodebuild -license 重新接受许可证。还尝试清除/var/folders/zz,Xcode 命令行工具使用它来缓存一些可能导致此问题的数据。如果这没有帮助,请检查这些文件的文件权限(至少第一个应该是-rw-r--r--,即每个人都可以读)。

有一种方法可以使MacPorts以root身份构建而不是放弃权限,但除非绝对必要,否则您不应该这样做。权限分离是一项安全功能,可避免行为异常的端口对系统造成严重破坏。

最新更新