OSX 10.8 xcrun (No such file or directory)

26

在没有安装Xcode的情况下,在OSX 10.8上使用Apple开发者网站提供的独立命令行工具包时,执行gem install jekyll命令会遇到以下错误:

正在构建本机扩展,这可能需要一段时间...

错误:无法安装jekyll:

错误:未能构建gem本机扩展。

xcrun cc -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin12.0 -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin12.0 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -fno-common -arch i386 -arch x86_64 -g -Os -pipe -fno-common -DENABLE_DTRACE  -fno-common  -pipe -fno-common   -c porter.c
xcrun: Error: failed to exec real xcrun. (No such file or directory)

gcc已安装:

$ which cc
/usr/bin/cc

xcrun的查找路径已设置:

xcode-select -print-path
/usr/bin

无论我尝试哪种参数,xcrun都会返回以下内容:

xcrun: 错误:未能执行真正的 xcrun。(没有这个文件或目录)

man xcrun 里写道:“当使用名称 xcrun 调用时,标志 -log 和 -verbose 是有用的调试工具。标志 -no-cache 可用于绕过缓存查找。”但似乎这些都没有任何效果:唯一的输出仍然是上面那个错误信息...

解决方法:根据 Ned Deily 的建议,我已经用一个 shell 脚本来替换 xcrun,以便简单地调用给定的参数:

#!/bin/bash
$@

“Command Line Tools installed”是指您只安装了来自Apple Developer网站的独立“命令行工具”软件包,而没有安装“Xcode.app”,还是您已经安装了“Xcode.app”,然后从“Xcode.app”“首选项”菜单中安装了其“命令行工具”组件? - Ned Deily
苹果开发者网站上的独立软件包。- 我修改了问题以使其更清晰。对于造成的混淆我感到抱歉。 - Lukas Grebe
很容易覆盖我的路径: export PATH = $ HOME / local / bin:$ PATH以指定一个覆盖文件〜/ local / bin / xcrun以包括这个技巧。我还必须运行“sudo xcode-select -switch /usr/bin”来匹配-print-path - chrischris
看起来这个黑客需要放在/usr/bin/xcrun中,而不是在PATH的其他地方进行xcrun覆盖。 - Erik Kaplun
4个回答

24

很不幸的是,至少在我最后一次使用时,我发现你无法仅使用独立的 Command Line Tools 软件包来使用 xcrun。它显然并不是设计用于这种情况; 独立软件包是 Xcode 4 的一个相当新的创新。如果您要安装的产品确实依赖于 xcrun,则可能需要安装完整的 Xcode.app 发行版才能解决此问题。 或者修改发行版的 Makefile 等文件以不使用 xcrun。 或者,可能(未经测试)创建一些目录和/或符号链接来欺骗 xcrun,使其认为您已安装了 Xcode.app - 这是一个混乱的 hack。


11
多么肮脏的 hack!我不知道它会在什么时候反咬我一口: 我用一个两行的 shell 脚本替换了 xcrun:#!/bin/bash $@ - Lukas Grebe
1
另外一件事:独立的命令行工具不像完整的Xcode那样提供SDK。因此,如果您构建的内容需要早期操作系统级别的SDK,则需要完整的Xcode安装包。 - Ned Deily
2
哇,那个黑科技对我起作用了!虽然不太美观,但比安装一堆我不需要的垃圾要好。 - Tom Rossi

18

在控制台中输入以下命令:

sudo xcode-select -switch /usr/bin
sudo mv /usr/bin/xcrun /usr/bin/xcrun-orig
sudo vim /usr/bin/xcrun

将以下内容输入到您的虚拟xcrun文件中:

#!/bin/sh
$@

然后使它可执行:

sudo chmod 755 /usr/bin/xcrun

2
xcode-select: 错误:无效的开发者目录 '/usr/bin' ? - James Boutcher

13
即使您已安装了命令行工具,但您的xcode-select指向不正常。它应该指向您的XCode包,而不是/usr/bin:

即使您已经安装了命令行工具,但是您的xcode-select设置有问题。它应该指向您的XCode包,而不是 /usr/bin:

$ xcode-select -print-path
/Applications/Xcode.app/Contents/Developer

像这样将其切换到 Xcode:

$ sudo xcode-select --switch /Applications/Xcode.app

5
我只安装了命令行工具,没有安装Xcode。将路径设置为/usr/bin对我来说是最合理的选择,因为编译器就在那里... 如果切换路径,会出现错误: xcode-select: Error: Path "/Applications/Xcode.app" is not a directory. - Lukas Grebe

0

我在使用brew install hg时遇到了问题。它在xcodebuild -version的输出上出现了错误。

虽然这是一个可怕的hack,但我用一个shell脚本替换了/usr/bin/xcodebuild,只是简单地回显“4.3”,并成功安装了mercurial。


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