XCode 4.3命令行工具

时间:2012-02-18 18:49:00

标签: xcode command-line documentation

Apple最近发布了Command Line Tools

  1. 命令行工具包中提供了哪些工具?

  2. 除了手册页之外还有其他文档吗?

  3. 请注意,我已通过在Xcode中添加特定组件来安装这些工具。 此外,这不是关于Xcode项目,而是Apple于2012年2月16日发布的软件包

2 个答案:

答案 0 :(得分:12)

打开命令行工具DMG,您将找到一个元数据包,您可以使用命令pkgutil --expand 'Command Line Tools.mpkg' metapackage提取该数据包。打开刚刚在文本编辑器中提取的metapackage/Distribution文件,以查看构成元数据包的软件包:

com.apple.pkg.DevSDK
com.apple.pkg.X11SDK
com.apple.pkg.QuickTimeSDK
com.apple.pkg.OpenGLSDK
com.apple.pkg.WebKitSDK
com.apple.pkg.FireWireSDK
com.apple.pkg.BluetoothSDK
com.apple.pkg.CoreAudioSDK
com.apple.pkg.JavaSDK
com.apple.pkg.clang
com.apple.pkg.llvm-gcc4.2
com.apple.pkg.X11Documentation
com.apple.pkg.DeveloperToolsCLI

相应的包文件位于元数据包旁边的隐藏Packages目录中。其内容可以与pkgutil --payload-files一起列出。

如果磁盘上有文件,并想知道它来自哪个软件包:

$ pkgutil --file-info /usr/bin/clang
volume: /
path: /usr/bin/clang

pkgid: com.apple.pkg.clang
pkg-version: 4.3.0.0.1.1249367152
install-time: 1342021874
uid: 0
gid: 0
mode: 755

现在,如果您想要删除命令行工具,这些奖励信息将非常有用。苹果凭借其无限的智慧拒绝提供这样做的工具,但我们可以使用pkgutil来显示所需信息,以显示已安装软件包的信息。

首先,pkgutil --pkgs将列出所有已安装的软件包。比较上面的包列表的输出。

pkgutil --info将显示有关已安装软件包的信息;例如:

$ pkgutil --info com.apple.pkg.clang
package-id: com.apple.pkg.clang
version: 4.3.0.0.1.1249367152
volume: /
location: /
install-time: 1342021874
groups: com.apple.FindSystemFiles.pkg-group com.apple.DevToolsBoth.pkg-group com.apple.DevToolsNonRelocatableShared.pkg-group

pkgutil --files将显示相对于volume提供的locationpkgutil --info字段的已安装软件包的内容。因为不使用绝对路径,所以不能简单地将此命令的输出传递给xargs rm -f以删除包的文件;你必须自己修复路径,也许是pkgutil --files com.example.pkgname | while read line; do rm -f "/install_location/$line"; done

删除软件包的文件后,应运行pkgutil --forget以从软件包数据库中删除有关已安装软件包的信息。

没有你宝贵的数据!

pkgutil还有一些其他有用的选项可用于验证程序包的文件是否全部存在,以及还原其权限;有关详细信息,请参阅its manual page

通常,这适用于任何软件包,但请注意,某些软件包可以具有在安装软件包时运行的嵌入式脚本;显然,仅删除软件包的文件不会从系统中删除软件包的所有痕迹。您必须提取包的内容并阅读脚本源代码,然后自行决定如何最好地撤消脚本的效果。

答案 1 :(得分:1)

我遇到了类似的问题:升级到Xcode 4.3后我无法运行“make”。要修复它,我只需将我的PATH变量设置为包括:

/Applications/Xcode.app/Contents/Developer/usr/bin
/Applications/Xcode.app/Contents/Developer/Tools

一旦我进行了设置,替换了引用/ Developer的旧PATH条目,我可以再次从命令行运行“make”。