How to update Xcode Command Line Tools?
Solution 1:
For future travelers, here's a version-agnostic approach. First, run softwareupdate --list
. This will probably take a couple of minutes. When it's done, you'll see a bulleted (with an asterisk) output like this:
$ softwareupdate --list
Software Update Tool
Finding available software
Software Update found the following new or updated software:
* Command Line Tools (macOS High Sierra version 10.13) for Xcode-10.1
Command Line Tools (macOS High Sierra version 10.13) for Xcode (10.1), 190584K [recommended]
Find the bullet that refers to the Xcode command line tools. Copy that entire line (except the asterisk...). In the above case, you would copy: Command Line Tools (macOS High Sierra version 10.13) for Xcode-10.1
Then, run the install command (as shown by Brendan Shanks) with what you copied inside quotes:
softwareupdate -i "Command Line Tools (macOS High Sierra version 10.13) for Xcode-10.1"
Solution 2:
I'm going to answer a slightly different question here, because this question came up when I searched for a solution to my problem. Hopefully it'll help someone (and it'll surely help me next time I run into the same issue).
I wanted to upgrade the command line tools from version 8 to 9. The App Store didn't suggest this upgrade, and neither did softwareupdate --list
.
xcode-select --install
installed the new version of the tools. But clang --version
still gave 8.0.0 as the version number. xcode-select -r
and rebooting didn't solve this issue.
xcode-select -p
returned /Applications/Xcode.app/Contents/Developer
, and clang --version
reported an installation directory under there. I thought I'd start over again.
sudo rm -rf /Applications/Xcode.app
deleted version 8 of the tools. But xcode-select --install
said the command line tools were already installed.
sudo xcode-select -r
Now, sudo xcode-select -p
returns /Library/Developer/CommandLineTools/
.
It seems that the problem was that the new version of the tools are installed to a different directory, and xcode-select -r
is not clever enough to find the latest version.