我正在尝试在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身份构建而不是放弃权限,但除非绝对必要,否则您不应该这样做。权限分离是一项安全功能,可避免行为异常的端口对系统造成严重破坏。