Xcode目前无法从软件更新服务器获取。

292

我在将系统更新至OS X 10.9后遇到了macport问题。

我尝试按照此指南https://trac.macports.org/wiki/Migration来修复它们。

但是当我安装命令行工具时:

xcode-select --install

我收到以下信息:

无法安装该软件,因为当前未从软件更新服务器中提供。

与此同时,我已成功将另一台机器更新至OS X 10.9,并且没有遇到任何问题地安装了命令行工具,因此它们必须可用。

这里的问题是什么?


35
与常见观点相反,这也可能意味着您已经安装了命令行工具。看起来错误信息有点误导。 - Americo Savinon
xcode-select -p 给出了以下输出 /Library/Developer/CommandLineTools。我能够在给定路径中查看 Library 和 usr 目录。但我仍然遇到相同的错误。你是否遇到过相同的问题? - Ram
1
@AmericoSavinon 您是正确的,根据这篇文章:http://osxdaily.com/2014/02/12/install-command-line-tools-mac-os-x/. 如果链接失效,这里是一段摘自文章的内容:“收到错误消息“无法安装软件,因为当前不可从软件更新服务器获取”?好消息是,这个错误信息可能表明您已经在 Mac 上安装了 Xcode。” - pcantalupo
5
我不明白如果已经安装了,为什么能算是有运气,因为 xcode-select --install 仍然要求添加 devtools :( - Kato
2
如果收到此消息,第一步是确保通过“系统偏好设置”更新Mac OS和通过“应用商店”更新Xcode。然后运行Xcode,确保它可以正常运行(有时会询问是否要安装其他组件-选择是)。如果有任何更新,请再次尝试。 - ToolmakerSteve
显示剩余2条评论
16个回答

266

2
这对我有用。我使用我的Apple ID登录。我不确定我是否拥有有效的Apple开发者许可证,但过去我确实有。您可能需要一个现有的开发者帐户才能进入,但链接和安装程序对我有效。 - Jim Stewart
3
Nikos M.提供的链接是正确的。请点击 这里!然而,如果您不是注册的苹果开发人员,则无法下载这些工具。所以,请使用您的苹果开发人员ID登录,或者点击“注册”,同意苹果的条款,完成注册,再次尝试链接,"Voila" 它就可以用了!祝福,Jalh - user3051191
2
刚试了一下,只要使用开发者账户登录,它就能正常工作。 - Nikos M.
18
+1 太棒了,谢谢!我建议使用“命令行工具”作为搜索条件:请点击以下链接(https://developer.apple.com/downloads/?name=Command%20Line%20Tools)。 - Luca Borrione
4
更新 - 这对我在OSX Mojave上解决这个问题也有效。 - kb_
显示剩余6条评论

44

针对OSX 10.11及以上版本,您可以从这里下载

(已接受答案中的链接未显示适用于El Capitan(OSX 10.11)的命令行工具)


同样适用于Sierra(2016年9月)。 - Neal Young
8
也曾在卡塔利娜工作过(2020年10月)。 - Erik Finnman
手动安装命令行工具也解决了我的问题!(macOS Catalina) - Erfan GLMPR
我必须按照Basav的答案进行下一步操作,即输入sudo xcode-select --switch /Library/Developer/CommandLineTools/ - Harm
Catalina 2020年11月已确认。 我绝对喜欢这个人。 - Saud Qureshi

31

如果您正在最新的Mac OS X Mavericks上尝试此操作,则命令行工具随Xcode 5.x一起提供。

因此,请确保已安装并更新到最新版本的Xcode

之后,请使用以下命令确保正确指向Xcode命令行工具

xcode-select -p

可能会显示类似以下路径:

/Applications/Xcode.app/Contents/Developer

使用 switch 命令更改路径为正确的路径:

sudo xcode-select --switch /Library/Developer/CommandLineTools/

这应该能帮助你将它设置为正确的路径,之后你可以使用上述相同的 -p 命令来检查是否已经正确设置。


1
嗯 - 我有同样的旧路径,并更新了它,但似乎没有任何效果。 - Peter Ehrlich
2
@PeterEhrlich,我同意你的看法,似乎没有什么效果,如果你尝试 xcode-select --install,错误信息仍然会出现。但是,看起来发生的事情是,这样可以纠正路径,使得已经由Xcode5安装的命令行工具现在可以被 xcode-select 找到。在遵循这个建议之后,我成功地安装了一些一直失败的 homebrew - Peter Gluck
这对我有用。旧路径是由于从旧版本升级而导致的结果吗? - Bobson
3
如果没有安装命令行工具,则会打印出“xcode-select: error: invalid developer directory '/Library/Developer/CommandLineTools/'”。所以@PeterGluck似乎是正确的,而这个答案的主张只是与问题所问的内容略有关联。 - ivan_pozdeev
就我所知,我在之前的升级中已经解决了我的问题。现在,在升级到Ventura(macOS 13,darwin 22)之后,情况不再如此:$ xcode-select -p显示/Applications/Xcode.app/Contents/Developer,但如果我切换到/Library/Developer/CommandLineTools/,那么xcodebuild -license(我必须接受,顺便说一下,接受需要使用sudo运行)会导致以下错误: xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance。切换回去后,它可以正常工作。 - michael

27
我曾经遇到了与"无法安装软件,因为当前没有从软件更新服务器获得"相同的问题。您可以尝试以下步骤以使软件更新启动更新命令行工具。
  1. 使用以下命令检查命令行工具更新是否包含在要更新的软件列表中:softwareupdate -l
  2. 如果该列表中未提及命令行工具更新,则使用以下命令手动将其添加到列表中,该命令将创建一个临时文件:sudo touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
  3. 再次运行 softwareupdate -l,验证列表现在是否包含了命令行工具。
  4. 现在按下 Cmd+Space 启动 Mac 的 Spotlight 搜索。搜索 "软件更新",然后启动 "软件更新"。
  5. 这将向您显示如下的对话框以安装命令行工具。开始安装更新,并感到高兴。 :) enter image description here
  6. 删除第 2 步中创建的临时文件:sudo rm /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress

3
太棒了,我把自己的苹果账号锁了,因为除了像这样的时候苹果强制要求使用它之外,我从来没有真正使用它。这使我能够安装 CMD 行工具,而不必等待两天才能解锁账户。 - Densetsunobaka
1
在其他尝试失败后,这个方法对我也起作用了。 - Chungzuwalla
2
那对我起作用了!秘诀在于遵循第二点。 - Ramy M. Mousa

20

由于npm gyp错误,我删除了xcode-select -p给出的命令工具目录。

xcode-select未能安装文件并显示错误信息。

我运行了Xcode应用程序,启动时安装了命令工具。

npm现在可以工作了。

然而这并没有完全修复工具。我必须使用xcode-select将路径切换到Xcode应用程序目录中的Developer目录。

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer  

苹果电脑操作系统catalina。


也对我有用。谢谢你的开关代码。你是怎么知道要切换文件位置的? - bubbaspaarx
4
当我运行命令“xcode-select: error: invalid developer directory '/Applications/Xcode.app/Contents/Developer'”时,出现了错误。请您帮助我,谢谢! - Bahman.A
@Bahman.A 你是否运行了Xcode并安装了开发工具? - Interlated

19

我刚升级到10.14 Mojave后,遇到了同样的错误,不得不重新安装命令行工具(我不使用完整的Xcode IDE,并想按需安装命令行工具)。

根据 Basav的答案,我的 xcode-select -p 路径是正确的,所以那不是问题所在。

我也执行了 sudo softwareupdate --clear-catalog,根据Lambda W的答案, 并将其重置为Apple Production,但没有任何区别。

有效的方法是访问https://developer.apple.com/download/more/,根据User 92的答案下载一个带有GUI安装向导的.dmg文件。

我安装了这个文件,然后重新启动终端,一切回到正常状态。


1
从 .dmg 安装帮了我大忙。谢谢。 - inblueswithu

17

我知道这是一篇旧帖子,但今天我也遇到了这个问题。我发现当我执行 sudo softwareupdate -l 命令时,命令行工具被列为需要更新的内容,因此我使用 sudo softwareupdate -i -a 命令安装了它们。


1
你救了我的一天!谢谢! - Kamil Dziedzic
这个问题可能很老,但它仍然是一个问题。苹果才不会在意呢。这对我来说是可行的解决方案。 - Daniel W.

10

如果您使用的软件更新服务器没有提供所需的软件包,可能会出现此错误。

您可以通过运行以下命令进行检查:

defaults read /Library/Preferences/com.apple.SoftwareUpdate

检查是否有名为CatalogURL或AppleCatalogURL的条目,如果有,可以通过删除该条目或使用命令来指向苹果软件更新服务器。

sudo softwareupdate --clear-catalog

然后再次运行命令行工具安装。


1
这似乎对我来说是原因。我的CatalogURL是公司内部地址。尽管我想保持符合公司工作站规定,但我还没有尝试过您的解决方案。是否有任何方法可以添加源而不清除现有源?否则,通过苹果的网页门户下载文件似乎是可接受的解决方法。 - StockB
哇塞,我被卡在10.15.1上,无法升级到10.15.5,因为它显示我已经是最新的了。运行 defaults read ... 命令后,发现目录为 CatalogURL = "https://swscan.apple.com/content/catalogs/others/index-10.12-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog.gz"; 清除目录之后,我现在可以更新了!!谢谢!! - VivienG
2
这个命令在Big Sur上不再起作用:它会打印“不再支持目录管理”。 - Tomáš Hübelbauer
如果您正在运行MacOS Catalina 10.16,则会显示它已被弃用,并将在接下来的版本中被删除。 - Markus Rudel

5

我在 MacOS Catalina 上遇到了同样的问题。

我认为我找到了根本原因:我已经切换了默认的 Apple ID 账户,并且新账户没有激活为开发者账户。当我运行 xcode-select --install 命令时,我得到了与问题描述中相同的错误。

在阅读了 stackoverflow 上的这篇文章后,我访问了 https://developer.apple.com/downloads 并被要求接受开发者条款。我想这可能使我的账户成为开发者账户。然后,我尝试再次运行 xcode-select --install,这次它成功了。


3
一旦按照Nikos M在他出色的上面回答中描述的方式加载了命令行工具,您需要同意gcc许可协议,如果您使用ruby gems,则可能需要将llvm-gcc链接为gcc-4.2。
如果您不这样做,gem install将在您已经安装它们之后报告“您必须先安装开发工具”。
步骤如下:
sudo gcc
sudo ln -s /usr/bin/llvm-gcc /usr/bin/gcc-4.2

gcc必须在sudo下运行一次,这样苹果公司才能更新他们的许可信息,您不需要输入文件,gcc会在检查参数之前更新许可证。链接是必需的,这样ruby 1.9才能在构建某些gems(例如调试器)时找到编译器。这个问题可能已经在ruby 2.x中得到解决,但我将在遇到该问题时再解决。


1
这个答案似乎解决了我的问题。第一行没有执行,但我还是运行了第二行,然后一切都正常了。 - RedEye
1
@RedEye 如果第一行不执行,这意味着苹果已经更新了许可证,然后抱怨缺少的参数。它只会在第一次提示许可证。 - Peter Wooster

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