XCode 4.3命令行工具

Ale*_*rty 22 documentation xcode command-line

Apple最近发布了命令行工具:

  1. Command Line Tools包中提供了哪些工具?

  2. 除了手册页之外还有某种文档吗?

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

Sam*_*ris 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
Run Code Online (Sandbox Code Playgroud)

相应的包文件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
Run Code Online (Sandbox Code Playgroud)

现在,如果您想要删除命令行工具,一些奖励信息将非常有用.Apple以其无限的智慧拒绝提供这样做的工具,但我们可以通过使用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
Run Code Online (Sandbox Code Playgroud)

pkgutil --files将显示已安装包的内容,相对于volumelocation给出的字段pkgutil --info.因为不使用绝对路径,所以不能简单地管道此命令的输出xargs rm -f以删除包的文件; 你必须自己修理路径,也许还有类似的东西pkgutil --files com.example.pkgname | while read line; do rm -f "/install_location/$line"; done.

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

应该不用说,你应该非常小心,如果你试试这个:你是一个错字远离拧你的系统如此糟糕,你必须重新安装它,更不用说你的宝贵数据的说!

pkgutil还有一些其他有用的选项可用于验证包的文件是否全部存在,以及用于恢复其权限; 有关详细信息,请参见其手册页.

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