命令行工具无法使用 - OS X El Capitan、Sierra、High Sierra、Mojave

573

我刚刚从Yosemite升级到El Capitan(并在将El Capitan升级到Sierra时复制了该问题),当我尝试在终端中输入例如 git status 时,会出现以下错误:

xcrun: error: invalid active developer path
 (/Library/Developer/CommandLineTools), missing xcrun at:
 /Library/Developer/CommandLineTools/usr/bin/xcrun

我没有安装Xcode,从未安装过。 有人有解决方案吗?


"which git" 命令告诉你什么?...也许是 "file `which git`"? - Phillip Mills
which git 命令的返回值为 /usr/bin/git,而执行 "file which git" 命令的返回值为 /usr/bin/git: Mach-O 64-bit executable x86_64 - rista404
1
那听起来不错。抱歉,我不知道xcrun如何涉及此事。 - Phillip Mills
1
我遇到了一些类似的问题,结果发现与接受许可协议有关(在升级过程中,我被呈现出许可对话框,但它不响应点击,我不得不重新启动)。一旦它再次运行,我必须启动Xcode来接受许可证。 - TygerKrash
我在升级到macOS High Sierra后不得不运行相同的命令。 - diegoiglesias
显示剩余5条评论
16个回答

1

如果您在升级后使用heroku命令行工具也遇到了问题,我还需要在终端中执行以下操作:

xcode-select --install 
brew install heroku/brew/heroku
brew link --overwrite heroku

似乎升级到High Sierra后我的符号链接出了问题,还不得不重新安装xcode工具。我一直收到“不是目录”的错误提示:
stat /Users/mattymc/.local/share/heroku/client/bin/heroku: not a directory  
▸ fork/exec /Users/mattmcinnis/.local/share/heroku/client/bin/heroku: not a directory 

希望能为某人节省一小时的时间 :)

1
对于最新版本的Mojave 10.14.1,我使用以下方法解决:
https://developer.apple.com/download/more/下载"Command line tool newest stable version.dmg",并使用Apple ID登录进行下载。
这样一切都可以正常工作。
旧的答案不再适用。
xcode-select --install

对我无效。


1
这对我解决了问题。请注意,当运行“xcode-select --install”时,我遇到的问题是弹出窗口显示无法联系更新服务器。截至撰写本文时,上述链接中提供给Mojave用户唯一可下载的内容是一个名为“Command Line Tools (macOS 10.14) for XCode 10.1 Beta 2”的测试版。 - roundtheworld

1
我将macOS升级到了High Sierra - 10.13.3,并在尝试安装watchman时遇到了类似的问题(使用命令 - brew install watchman)。
运行命令:xcode-select --install,然后运行"brew install watchman" - 一切都正常工作!

1

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

为我工作。


-1

即使您执行了xcode-select --install,它也无法为我解决问题,因为它显示了一些网络错误。问题在于它无法连接到应用商店。我采取了以下措施来解决它。

  1. 打开密钥串
  2. 转到系统根目录并选择证书。
  3. 打开digicert high assurance EV。
  4. 展开信任部分,将其标记为永不信任。
  5. 现在重新启动系统,重复步骤1、2、3,并将信任策略标记为恢复使用系统默认值。

现在您的应用商店应该可以正常工作,您应该能够运行xcode-select --install。


1
谢谢你的回答。如果能解释一下为什么尝试这样做会起作用,那就更好了。 - Pranab
已经在第一行写好了。上述的解决方案对我来说都不起作用。所以在搜索了一些资料后,我尝试了这个方法。不需要额外的解释。 - Shubham Aggarwal

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