XCode 4.3 命令行工具
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/9344107/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
XCode 4.3 Command Line Tools
提问by Alerty
Apple has recently released Command Line Tools:
苹果最近发布了命令行工具:
What are the tools provided in the Command Line Tools package?
Is there some sort of documentation other than man pages?
命令行工具包中提供了哪些工具?
除了手册页之外,是否还有某种文档?
Please note that I have installed these tools by adding the specific component in Xcode. Also, this is not about a Xcode project, but a packagereleased by Apple on February 16, 2012!
请注意,我已经通过在 Xcode 中添加特定组件来安装这些工具。另外,这不是关于 Xcode 项目,而是Apple 于 2012 年 2 月 16 日发布的包!
采纳答案by Sam Morris
Open the command line tools DMG and you'll find a meta-package, which you can extract with the command pkgutil --expand 'Command Line Tools.mpkg' metapackage
. Open the metapackage/Distribution
file that was just extracted in a text editor to see the packages that comprise the meta-package:
打开命令行工具 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
The corresponding package files are found in a hidden Packages
directory alongside the metapackage. Their contents can be listed with pkgutil --payload-files
.
相应的包文件Packages
位于元包旁边的隐藏目录中。它们的内容可以用 列出pkgutil --payload-files
。
If you have a file on disk, and want to know which package it came from:
如果您在磁盘上有一个文件,并且想知道它来自哪个包:
$ 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
Now, some bonus information that will be useful if you ever want to removethe command-line tools. Apple, in their infinite wisdom, decline to provide a tool to do so, but we can obtain the information we need by using pkgutil
to display information about installed packages.
现在,如果您想删除命令行工具,一些额外的信息将非常有用。Apple 以其无穷的智慧拒绝提供一个工具来这样做,但我们可以通过使用pkgutil
来显示有关已安装包的信息来获取我们需要的信息。
Firstly, pkgutil --pkgs
will list all installed packages. Compare the output of the list of packages above.
首先,pkgutil --pkgs
将列出所有已安装的软件包。比较上面包列表的输出。
pkgutil --info
will display information about an installed package; for example:
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
will display the contents of an installed package, relative to the volume
and location
fields given by pkgutil --info
. Because the absolute paths are not used, you can't simply pipe the output of this command to xargs rm -f
to remove a package's files; you'll have to fix up the paths yourself, perhaps with something like pkgutil --files com.example.pkgname | while read line; do rm -f "/install_location/$line"; done
.
pkgutil --files
将显示已安装包的内容,相对于由给出的volume
和location
字段pkgutil --info
。因为没有使用绝对路径,所以不能简单地将此命令的输出通过管道传输xargs rm -f
到删除包的文件;您必须自己修复路径,也许使用类似pkgutil --files com.example.pkgname | while read line; do rm -f "/install_location/$line"; done
.
Once a package's files are removed, pkgutil --forget
should be run to remove information about the installed package from the package database.
删除包的文件后,pkgutil --forget
应运行以从包数据库中删除有关已安装包的信息。
It shouldgo without saying that you should be very careful if you try this: you're one typo away from screwing your system up so badly that you'll have to reinstall it, to say nothing of your precious data!
它应该不用说,如果你尝试这个你应该非常小心:你是一个错字远离拧你的系统如此糟糕,你必须重新安装它,更不用说你的宝贵数据的说!
pkgutil
has some other useful options for verifying that a package's files are all present, and for restoring their permissions; see its manual pagefor the details.
pkgutil
有一些其他有用的选项来验证包的文件是否都存在,以及恢复它们的权限;有关详细信息,请参阅其手册页。
In general, this will work for any package, however note that some packages can have embedded scripts that get run when the package is installed; obviously, merely removing the package's files won't remove all traces of the package from your system. You'll have to extract the package's contents and read the script source code, and then decide how best to undo the effects of the script yourself.
通常,这适用于任何包,但请注意,某些包可能具有在安装包时运行的嵌入式脚本;显然,仅仅删除包的文件不会从系统中删除包的所有痕迹。您必须提取包的内容并阅读脚本源代码,然后自己决定如何最好地撤消脚本的影响。
回答by S2VpdGgA
I had a similar problem: I couldn't run "make" after upgrading to Xcode 4.3. To fix it, I just set my PATH variable to include:
我有一个类似的问题:升级到 Xcode 4.3 后我无法运行“make”。为了修复它,我只是将我的 PATH 变量设置为包括:
/Applications/Xcode.app/Contents/Developer/usr/bin
/Applications/Xcode.app/Contents/Developer/Tools
Once I had that set up, replacing my old PATH entries referring to /Developer, I could run a "make" from the command line again.
一旦我进行了设置,替换了我引用 /Developer 的旧 PATH 条目,我就可以再次从命令行运行“make”。