Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

3年前关闭。



Improve this question




苹果最近发布了Command Line Tools:
  • 命令行工具包中提供了哪些工具?
  • 除了手册页之外,还有其他一些文档吗?

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

    最佳答案

    打开命令行工具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
    

    对应的软件包文件在metapackage旁边的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

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

    关于xcode - XCode 4.3命令行工具,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9344107/

    10-12 03:33