Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

XCode 4.3 Command Line Tools [closed]

Tags:

Apple has recently released Command Line Tools:

  1. What are the tools provided in the Command Line Tools package?

  2. 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 package released by Apple on February 16, 2012!

like image 512
Alerty Avatar asked Feb 18 '12 18:02

Alerty


Video Answer


2 Answers

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:

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.

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 remove the 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.

Firstly, pkgutil --pkgs will list all installed packages. Compare the output of the list of packages above.

pkgutil --info will display information about an installed package; for example:

$ 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.

Once a package's files are removed, pkgutil --forget should be run to remove information about the installed package from the package database.

It should go 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 page for the details.

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.

like image 68
Sam Morris Avatar answered Mar 02 '23 23:03

Sam Morris


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:

/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.

like image 24
S2VpdGgA Avatar answered Mar 02 '23 21:03

S2VpdGgA