118

安装 Yosemite 后,我无法运行 brew 或 ruby​​。

我在 brew 更新时收到此错误:

/usr/local/bin/brew: /usr/local/Library/brew.rb: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory
/usr/local/bin/brew: line 23: /usr/local/Library/brew.rb: Undefined error: 0

在 irb 上收到此错误:

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:245:in mkdir': Permission denied - /Library/Ruby/Gems/2.0.0/extensions/universal-darwin-14 (Errno::EACCES) from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:245:infu_mkdir'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:219:in block (2 levels) in mkdir_p' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:217:inreverse_each'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:217:in block in mkdir_p' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:203:ineach'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:203:in mkdir_p' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:210:inwrite_gem_make_out'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:132:in build_error' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:171:inrescue in build_extension'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:156:in build_extension' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:198:inblock in build_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:195:in each' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:195:inbuild_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:1436:in block in build_extensions' from /Library/Ruby/Site/2.0.0/rubygems/user_interaction.rb:45:inuse_ui'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:1434:in build_extensions' from /Library/Ruby/Site/2.0.0/rubygems/stub_specification.rb:60:inbuild_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/basic_specification.rb:56:in contains_requirable_file?' from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:925:inblock in find_inactive_by_path'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:in each' from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:infind'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:in find_inactive_by_path' from /Library/Ruby/Site/2.0.0/rubygems.rb:185:intry_activate'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:150:in block in search_file' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:158:inblock in each_localized_path'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:167:in each_sublocale' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:157:ineach_localized_path'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:145:in search_file' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:124:infind'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:108:in load' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:32:ininitialize'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/init.rb:114:in new' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/init.rb:114:ininit_config'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/init.rb:16:in setup' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb.rb:380:instart'
from /usr/bin/irb:12:in `'
4

11 回答 11

281

可以通过以下步骤轻松修复此错误:

1) 打开终端

2) 类型nano /usr/local/Library/brew.rb

3)在第一行将“1.8”更改为“Current”,所以它应该是这样的:

#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0

通过http://blog.ic3man.gr/2014/06/homebrew-ruby-bad-interpreter-no-such-file-or-directory/

于 2014-06-16T13:30:08.097 回答
39

我更新到优胜美地,后来发现brew坏了。

/usr/local/bin/brew: /usr/local/Library/brew.rb: 
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory /usr/local/bin/brew: line 23: /usr/local/Library/brew.rb: Undefined error: 0

如果您还没有对 brew 进行任何更改,我建议您这样做。否则请阅读下文。

  1. cd /System/Library/Frameworks/Ruby.framework/Versions/
  2. sudo ln -s Current 1.8
  3. brew update
  4. sudo unlink 1.8

已经对 brew 文件进行了更改并陷入了混乱?

我尝试进行编辑/usr/local/Library/brew.rb,但对我的 git 存储库的本地更改阻止brew update了下拉更新。我尝试了本页和其他网站上提到的其他一些解决方案,但结果却是一团糟,我想做的就是撤消我为 brew 所做的一切。

我承诺了我的改变,但这让事情变得更糟。最终我不得不撤消我的提交,git reset --hard HEAD~1直到我处于正确的提交状态。我也有一堆未版本控制的文件(我在 /usr/Local 中更改了文件权限),所以我做了一个git clean -f -d删除所有未版本控制的文件和目录的操作,并让我回到了我在进行任何更改之前开始的位置。

于 2014-10-27T20:21:46.837 回答
37

修复它的步骤:

  1. 为 Xcode 6 安装命令行工具

  2. 重新安装冲泡:

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
  3. 安装 brew 后,rvm 将工作:

    rvm install ruby
    

为我工作,雅虎!

于 2014-06-15T02:07:26.113 回答
33

编辑脚本意味着brew update不起作用;有对跟踪文件的本地编辑导致git pull失败。

我这样做了,我怀疑它更干净:

cd /usr/local/Library
git pull -q origin refs/heads/master:refs/remotes/origin/master

没有任何投诉brew doctor

于 2014-10-24T17:37:53.380 回答
7

这是来自其他人帖子的答案以及在 Google 上进行一些挖掘的集合,但我想我会把它放在一个地方,这样一个完整的答案就在一个地方。具体来说,这可以让事情现在开始工作,但也可以让您像往常一样进行 brew 更新并再次让一切变得干净。

  1. 打开 /usr/local/Library/brew.rb (emacs/vi/nano/whatever)
  2. 将第一行更改为:#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0. 您只是将该行中的“1.8”更改为“Current”(确保保留大写“C”,否则 git 稍后会混淆)。
  3. cd $(brew --repository)
  4. git add Library/brew.rb
  5. git commit -m "upgrading to ruby 2.0"
  6. brew update(或者sudo brew update如果您的 brew 设置为仅使用 sudo 进行系统更改)

信用:很多都是从这里来的,虽然我真的建议不要git commit -am在你的 /usr/local 文件夹中这样做。

于 2014-10-24T00:22:29.610 回答
3

就像之前所说的那样:1)更改为当前 2)安装 xcode 6

如果您现在对 brew 和 ruby​​ 有进一步的问题,这应该会有所帮助:不知何故 brew 在 1.8 版上需要 ruby​​,所以创建文件夹:

sudo mkdir -p /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin

并制作一个符号链接:

sudo ln -s /usr/bin/ruby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
于 2014-08-04T13:32:00.940 回答
2

在此处查看本教程:http ://ryantvenge.com/2014/09/ruby-homebrea-yosemite/

它对我有用!

于 2015-01-22T21:49:29.410 回答
1

我将其修复如下:</p>

  1. sudo chown -R $(whoami):admin /usr/local
  2. cd $(brew --prefix) && git fetch origin && git reset --hard origin/master
于 2016-04-13T12:01:45.473 回答
0

注意:仅当您最终处于完全失败的状态时才执行以下操作,因为这是非常危险的

作为一个例子,我不断得到

$ sudo ln -s 当前 1.8

$酿造更新

/usr/local/Library/brew.rb:18:in ': undefined method help?' 对于[“更新”]:数组(NoMethodError)

我刚得到这个……(不管是什么命令,只要用命令切换“更新”)我通过要求一个好友/usr/local文件夹解决了这个问题。然后我备份了我的/usr/local文件夹。

sudo mv /usr/local /usr/local.orig

然后我把他/usr/local移到我的

sudo mv ~/Downloads/local /usr/local

注意:您可能会丢失一些数据,因此请务必进行备份。

于 2015-03-04T15:34:18.267 回答
0

brew update 错误可以通过以下方式修复:

sudo chown -R $USER:admin /usr/local
cd /usr/local
git reset --hard origin/master
brew update

https://github.com/Homebrew/homebrew/issues/19140

于 2015-01-10T07:25:24.723 回答
-1

我在尝试使用包管理器安装 Ruby 时遇到问题。公平地说,我承认对这些项目没有什么经验,也没有像大多数其他响应者那样努力深入挖掘。我很懒,更喜欢使用可用于大多数 opsys 选择和许多软件包的二进制安装程序。不幸的是,Ruby 似乎没有提供一个。

我发现 ruby​​-build 易于安装(独立 - 不是插件),它从源代码构建 Ruby 没有错误并将其放置在我想要的位置。

Bingo - 简单:) 对于我们这些包管理器挑战说服的人来说,这看起来是一个不错的选择。

查理

于 2015-04-25T16:58:54.520 回答