如何更新Xcode命令行工具?

66

我正在尝试更新我的Mac OS X上的命令行工具。

~  softwareupdate --list
Software Update Tool
Copyright 2002-2015 Apple Inc.

Finding available software
Software Update found the following new or updated software:
   
   * Command Line Tools (macOS El Capitan version 10.11) for Xcode-8.2
    Command Line Tools (macOS El Capitan version 10.11) for Xcode (8.2), 150374K [recommended]
   * iTunesX-12.5.5
    iTunes (12.5.5), 263476K [recommended]

但是当我运行更新命令时,我会得到这个错误:

softwareupdate -i Command Line Tools (macOS El Capitan version 10.11) for Xcode-8.2
zsh: number expected

这个也不起作用:

softwareupdate -i Command Line Tools
Software Update Tool
Copyright 2002-2015 Apple Inc.

Command: No such update
Line: No such update
Tools: No such update
No updates are available.

softwareupdate -i命令后面应该指定哪个具体字符串?

9个回答

98
对于未来的旅行者,这里有一个与版本无关的方法。首先,运行softwareupdate --list命令。这可能需要几分钟的时间。当完成后,你会看到一个带有项目符号(带有星号)的输出,类似于这样:
$ 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]

找到与Xcode命令行工具相关的项目。复制整行内容(除了星号...)。在上述情况中,您将复制以下内容:
命令行工具(macOS High Sierra版本10.13)for Xcode-10.1
然后,按照Brendan Shanks所示,运行“install”命令,并将您复制的内容放在引号内。
softwareupdate -i "Command Line Tools (macOS High Sierra version 10.13) for Xcode-10.1"

4
这是正确的建议,因为它允许您在未来版本中执行此操作。 - Chad Cache

36

在这里,我将回答一个稍微不同的问题,因为当我搜索解决方案时,这个问题出现了。希望它能帮助到某个人(肯定会帮助我下一次遇到同样的问题)。

我想要将命令行工具从8版本升级到9版本。App Store没有建议进行此升级,softwareupdate --list也没有。

xcode-select --install

我安装了新版本的工具,但是clang --version仍然显示版本号为8.0.0。执行命令xcode-select -r并重启电脑都没有解决这个问题。

xcode-select -p返回/Applications/Xcode.app/Contents/Developerclang --version报告了一个在此目录下的安装目录。我觉得最好重新开始。

sudo rm -rf /Applications/Xcode.app

删除了版本8的工具。但是 xcode-select --install 命令显示命令行工具已经安装。

sudo xcode-select -r

现在,sudo xcode-select -p 返回 /Library/Developer/CommandLineTools/

看起来问题是由于新版本的工具被安装到一个不同的目录,而xcode-select -r不够聪明以找到最新版本。


1
我不知道我是怎么陷入这种情况的,但我遇到了同样的问题,这个方法解决了它! - David John Coleman II

10

运行命令 softwareupdate -i "Command Line Tools (macOS El Capitan version 10.11) for Xcode-8.2"。引号很重要。


谢谢,使用带有'sudo'关键字的上述命令对我很管用。 - software_writer

8

brew 给出的答案(当使用旧版本的命令行工具时):

从“系统偏好设置”的“软件更新”中更新它们或运行:
softwareupdate --all --install --force

如果这没有显示任何更新,请运行:

sudo rm -rf /Library/Developer/CommandLineTools

sudo xcode-select --install

对我有用,而softwareupdate --list没有显示任何信息,softwareupdate --all --install --force回答说“没有可用的更新”。


7
我在安装了Xcode 10.3的MacOS Mojave版本10.14.3上遇到了类似的问题。真正的问题是,当我安装了新版本后,我首先删除了“Xcode-beta.app”,然后再安装新版本。因此,当我尝试安装C++开发工具CLion并对其进行配置时,CMake给了我一个错误,更新命令行工具也没有起作用。
softwareupdate -i "Command Line Tools (macOS Mojave version 10.14.3) for Xcode-10.3"

并且在终端中向我展示了这个响应。
Software Update Tool
Command Line Tools (macOS Mojave version 10.14.3) for Xcode-10.3: No such update
No updates are available.

然后我尝试使用以下命令检查Clang版本:

clang --version

回复让我找到了真正的问题,即“Active Developer”路径仍指向我已经删除的旧版本Xcode。

xcrun: error: active developer path ("/Applications/Xcode-beta.app/Contents/Developer") does not exist

因此,我通过以下命令将活动开发者路径切换到最新安装的Xcode应用程序:
sudo xcode-select --switch /Applications/Xcode.app

一切自动化地运行得非常顺利。


当我发现我正在运行旧版本的Swift,但我有最新的XCode时,这让我摆脱了麻烦。 - Manngo

4
在升级到MacOS Catalina 10.15.*版时,您可以通过以下方式安装Xcode 11.3的命令行工具:
$ softwareupdate --list
Software Update Tool

Finding available software
Software Update found the following new or updated software:
* Label: Command Line Tools for Xcode-11.3
    Title: Command Line Tools for Xcode, Version: 11.3, Size: 224878K, Recommended: YES,
$ sudo softwareupdate -i "Command Line Tools for Xcode-11.3"

2

我使用sudo运行了相同的命令,这样就解决了问题。

sudo softwareupdate -i "Command Line Tools (macOS El Capitan version 10.11) for Xcode-8.2"


2
如果softwareupdate没有看到任何可用的CLI工具更新,您可以执行以下操作来欺骗softwareupdate显示其所有关于CLI工具的内容。
# Trick softwareupdate into giving us everything it knows about Xcode CLI tools by
# touching the following file to /tmp
xclt_tmp="/tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress"
/usr/bin/touch "${xclt_tmp}"

# run softwareupdate --list --all again to see if there is anything for CLI tools
softwareupdate --list --all

运行上述命令后,如果有 Xcode CLI 工具的更新可用,您应该会看到类似下面的内容。
Software Update Tool

Finding available software
Software Update found the following new or updated software:
* Label: Command Line Tools for Xcode-14.0
        Title: Command Line Tools for Xcode, Version: 14.0, Size: 687109KiB, Recommended: YES, 
* Label: Command Line Tools for Xcode-14.2
        Title: Command Line Tools for Xcode, Version: 14.2, Size: 687573KiB, Recommended: YES, 

1

使用以下命令更新所有内容

softwareupdate -i -a

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接