使用brew时出现"错误的解释器"错误

Hol*_*bæk 28 ruby macos homebrew ruby-on-rails

当我尝试运行任何brew命令时,我收到此错误.

Holger-Sindbaeks-MacBook-Air:~ holgersindbaek$ brew help
-bash: /usr/local/bin/brew: /usr/bin/ruby: bad interpreter: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我完全不知道如何解决这个问题并且一直在寻找很长时间而没有回答.

Kju*_*uly 63

我收到了这个错误(大致相同):

/ usr/local/bin/brew:/usr/local/Library/brew.rb:/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby:bad interpreter:没有这样的文件或目录/ usr/local/bin/brew:第26行:/usr/local/Library/brew.rb:未定义错误:0

并通过以下解决方案修复:

  1. 开放brew.rb:

    $ sudo vim /usr/local/Library/brew.rb
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将第一行更改1.8Current:

    之前:

    #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -W0
    
    Run Code Online (Sandbox Code Playgroud)

    后:

    #!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0
    
    Run Code Online (Sandbox Code Playgroud)

然后brew为我工作.如果任何其他人得到这个问题,希望它有所帮助.:)


如果你收到错误

Homebrew需要Leopard或更高版本.有关Tiger支持,请参阅:https: //github.com/mistydemeo/tigerbrew

将MACOS检查更改<10.5<10.

提示:@TimCastelijns:

10.5不起作用,因为相比之下,它高于10.10(.1 vs .5).我添加了一个check(and MACOS_VERSION != 10.10)而不是从10.5降低到10.

  • 大!更新到Yosemite后修复了我的问题. (7认同)
  • 当我正在运行优胜美地时,我得到与@scientiffic相同的结果 (2认同)

Mil*_*eri 44

你得到的意味着Homebrew无法在指定位置找到Ruby解释器.

安装Apple Developer Kit(附带Xcode),作为可选安装应该可以使用(或者您可以从Apple下载它).这将为您安装Ruby解释器.

如果你已经安装了Xcode,这意味着其中一件事情正在发生:

  1. 你有一个破碎的Ruby安装
  2. 您有多个Ruby安装
  3. 您的安装未正确配置.

要确定这是否是第一种情况,您可以运行ruby并查看是否收到任何响应.

如果不这样做,则安装已损坏,您需要重新安装.如果你这样做,那你就跑了which ruby.这应该为您提供Ruby可执行文件的绝对路径.如果这不是/usr/bin/ruby那么自制(和一堆其他程序)将无法找到它.

如果您没有篡改过Ruby安装,可以查看是否/usr/bin/ruby已经存在:cat /usr/bin/ruby.如果得到No such file or directory,那么您可以轻松创建Ruby安装的符号链接.假设输出为which rubyto /usr/local/bin/ruby,则以这种方式创建符号链接:sudo ln -s /usr/local/bin/ruby /usr/bin/ruby并且一切都应该很好.

如果该位置有文件,您可以运行file /usr/bin/ruby以查看它是真实文件,符号链接还是损坏的文件.如果它是一个符号链接,你的安装应该正常工作,因为它不是,它可能是一个损坏的符号链接或它是一个虚假的文件.

您可以通过先删除它(sudo rm /usr/bin/ruby)然后创建一个新的符号链接到正确的位置(sudo ln -s /usr/local/bin/ruby /usr/bin/ruby)来解决这个问题.

如果上述情况不起作用,您应该在干净安装Xcode之后咨询自制团队,并删除系统上任何Ruby安装的痕迹.

编辑

或者,正如其他答案所指出的,问题可能是因为您的Homebrew设置中的ruby版本不好.

快速修复可能是更新您的Homebrew:

cd /usr/local
git pull -q origin refs/heads/master:refs/remotes/origin/master
Run Code Online (Sandbox Code Playgroud)

如果这没有帮助,您可能需要亲自动手并通过以下方式手动解决问题:

  1. brew.rb从中编辑/user/local/Library/brew.rb
  2. 更改/1.8//Current/第一行,这将导致hashbang指向当前Ruby版本作为执行程序

如果这也无济于事,您也可以修改MACOS检查并将其从10.5更改为10,以避免臭名昭着的"Homebrew需要Leopard或更高版本"错误.

免责声明

在下面的答案及其评论者中,感谢其他贡献者.我不是抄袭剽窃,只是将答案汇总成一个综合文章来帮助别人.


Sho*_*t C 22

固定:

sudo gem install cocoapods
Run Code Online (Sandbox Code Playgroud)


mcf*_*edr 7

发生这种情况是因为我需要更新brew - 在已经使用Current ruby​​的更新版本中

cd /usr/local
git pull -q origin refs/heads/master:refs/remotes/origin/master
Run Code Online (Sandbox Code Playgroud)

这解决了这个问题


Nic*_*afa 6

冒着过于简单化的风险,试试跑步吧

gem install bundler
Run Code Online (Sandbox Code Playgroud)

我正在将我的Ruby环境从RBENV转换到RVM,它对我有用.


Siv*_*ose 6

您需要更改 Ruby.Framework 的路径

我用上面提到的命令解决了这个问题。

  1. brew install cocoapods --build-from-source

  2. brew link --overwrite cocoapods

如果您有以下较低版本Xcode 11,则必须在使用上述命令之前将其删除。

参考:Ruby框架问题