Xcode-select活动开发者目录错误

985
在运行需要 "node-gyp" 的 "npm install" 过程中,遇到了以下错误...但是任何需要 "xcode-select" 的东西都可能会引发此错误。 问题是什么?

3
一种直接有效的替代方法就是卸载它,然后重新安装。在所有的答案中,这是唯一对我起作用的。 - qodeninja
@qodeninja 重新安装对我没有起作用。 - user5306470
请确保Xcode应用程序位于/Applications目录中,并且它对我有效。 - undefined
30个回答

1909

xcode-select的开发者目录指向/Library/Developer/CommandLineTools而需要完整的Xcode(在安装CommandLineTools后发生)时,会出现此问题。

解决方法:

  1. 如果还没有安装,请从https://appstore.com/mac/apple/xcode下载并安装Xcode。
  2. 接受条款和条件。
  3. 确保Xcode应用程序在/Applications目录中(而不是/Users/{user}/Applications)。
  4. 使用以下命令将xcode-select指向Xcode应用程序的开发者目录:
    sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

注意:确保Xcode应用程序路径正确。

  • Xcode:/Applications/Xcode.app/Contents/Developer
  • Xcode-beta:/Applications/Xcode-beta.app/Contents/Developer

@qodeninja,然后将“/Applications/Xcode5-DP4.app”替换为正确的路径,我会假设。 - Max Nanasy
@MaxNanasy 我的意思是那很明显。但是那并没有起作用。我不得不卸载并重新安装Xcode才能使它再次工作。 - qodeninja
1
我不需要执行第二步。安装Xcode就足够了。 :) - Ryan Heathcote
28
"macOS High Sierra 10.13",我已经安装了Xcode 9.2,安装了"carthage"之后遇到了同样的问题。只需执行第4步就可以解决问题了!" - RAM237
1
在新的Mojave 10.14.5安装中,我安装了命令行工具10.2.1,然后安装了Xcode 10.2.1,并得到了上述错误。然后,我尝试使用这个解决方案,但仍然得到了上述错误。Franklin A的解决方案起作用了:https://dev59.com/7GMl5IYBdhLWcg3w966L#40819686 - Heath Borders
显示剩余21条评论

221

我在尝试使用npm安装软件包时遇到了问题。

我收到了一个错误提示:“sudo xcode-select -s /Applications//Xcode.app/Contents/Developer/"

为了解决这个问题:

  • 我打开了Xcode。
  • 进入“偏好设置”。
  • 选择“位置”。
  • 选中“命令行工具:Xcode 6.1.1”。

现在,当我使用npm安装软件包时,就不会再出现错误了。


2
修复了Robo VM的设置。 - Sensei
1
这是正确的答案,应该首先遵循。所有其他建议使用sudo甚至进入root模式的做法都是不好的实践。 - darren z
固定的Ionic Capacitor - Jacob Brazeal
这节省了我的时间!它完美而轻松地工作!谢谢。 - Jihyun
固定 Cordova-Angular 设置 - Alexis
固定的Cordova-Angular设置 - undefined

218

对于那些不想安装Xcode的人,还有其他解决方案:

  1. 安装命令行工具(如果您尚未安装):

    xcode-select --install

  2. 更改活动目录:

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

这对我(git)有效。


26
我更倾向于这个解决方案,而不是安装Xcode,不过看起来现在无法从苹果下载 xcode-select 了:http://cl.ly/image/2T0u2f2D471a/content - user1082754
10
我认为我已经安装了命令行工具,因此这不会解决任何问题。 - user1082754
9
那么,获取可用的 xcodebuild 的唯一方式是安装完整的 Xcode 吗?:-( - user1082754
74
这个回答似乎是不正确的。整个意思是,“xcodebuild”需要Xcode,也就是完整安装的Xcode,而不是CommandLineTools。在这里进行测试,切换到CommandLineTools并不能停止错误,它也不会停止错误。 - mikemaccana
27
这个答案已经不正确了。自2015年5月开始,在使用OSX 10.10(Yosemite)的命令行工具时,xcodebuild命令将不再没有完整的xcode安装而正常运行。 - HipsterZipster
显示剩余11条评论

205

Xcode > 首选项 > 位置 > 命令行工具

截图

选择与您的Xcode版本相匹配的选项。


1
点击链接并查看图片。 这个问题的解决方案并不复杂。 - FranklinA
我安装了8个Xcode版本,这导致了问题,但是上面那个版本将解决我的问题。你真是救星 ;) - ahsan
这是我尝试安装2个版本的XCode时唯一有效的方法。尝试使用xcode-select命令会提示“错误:无效的开发者目录”! - mc01
1
这就是我需要的解决方案。不确定为什么那个命令行工具选项没有设置。但是一旦我设置了它,问题就得到了解决。谢谢。 - jdavis
如果您不知道该怎么做,只需点击“命令行工具”下拉菜单,并从中选择一个选项即可。 - Deepak Joy Cheenath

83

只需运行sudo xcode-select -r,它会自动重置路径。

 -r, --reset
              Unsets any user-specified developer directory, so that the developer directory will be found via the default search mechanism. This command must  be
              run with superuser permissions (see sudo(8)), and will affect all users on the system.

1
我在想,如果我卸载了Xcode并按照上述步骤进行操作,因为我是在安装CLI之后安装的Xcode,那么会不会影响我的现有iOS应用项目? - Gel
这个方法在我使用的 OSX 10.14.4 和 Xcode 11.3.1 上有效。 - Rafael Khan
在 Big Sur 升级后(11.6),工作正常。 - AliS

55

我刚刚运行了以下命令,问题就解决了:

sudo xcode-select --reset

这与另一个答案中的解决方案相同。 - Eric Aya
立刻就对我有效。 - Jacob
谢谢,第一次就成功了。 - Abdusalam mohamed
它在MacOS Sonoma上运行正常。 - undefined

34

在终端中输入以下命令

xcode-select --install
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -license accept

1
太酷了!在这三个命令执行完成后,记得重新启动终端以应用新的更改。 - Johnny

28

如果您已经安装了XCode,您所需要做的就是...

  • 打开XCode
  • 前往 XcodePreferencesLocations
  • 从命令行工具中选择您的Xcode 输入图像描述

该控件仅显示我的系统上的当前版本,而CommandLineTools/SDKs目录显示了另外两个SDK。 - Oscar
对我有用!Xcode 太聪明了,无法自动查找 :) - MBH
2
尽管它看起来已经被选中,但你实际上需要选择它!令人困惑! - JMK
1
@JMK 这个 x 1000。谈论一场疯狂的鹅追逐。苹果... 真的吗? - Kalnode
1
@JMK 这个我完全同意。简直就是一场不切实际的追逐。苹果公司...真的吗? - undefined

11

如果你在使用Xcode beta版本,请注意:

sudo xcode-select -s /Applications/Xcode-Beta.app/Contents/Developer

11

我必须先运行这个

sudo xcode-select --reset

那么

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

然后它起作用了。


5
在我的情况下,运行第一条命令后问题已得到解决。运行第二条命令会再次破坏事情,因此只需要第一条命令即可(在我的情况下)。谢谢。 - Nate
1
我同意,只需运行 --reset 就可以解决问题。 - Peter Lamberg
1
这对我也起作用了。谢谢!! - qwas

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