如何使Ruby / Homebrew / RVM在优胜美地上工作?


118

安装优胜美地后,我无法运行冲泡或红宝石。

我在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 `'

Answers:


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/


14
当我进行此更改时,即使我正在运行优胜美地,仍然会收到错误消息“ Homebrew需要Leopard或更高版本。有关Tiger的支持,请参见:github.com/mistydemeo/tigerbrew
科学性

4
不幸的是,这会产生Please, commit your changes or stash them before you can merge.错误brew update
瑙伊丝·金2014年

10
“ C”必须使用大写字母#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0
暗黑破坏神

@Diablo我相信这是在10.10.1。中更新的。在早期版本中,“ C”未大写。谢谢。
raz0r

1
我也得到了Homebrew requires Leopard or higher-我遵循下面安装xcode命令行工具的答案,它现在可以正常工作:stackoverflow.com/a/24225960/1062936
greg

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文件并卡在了git混乱中?

我尝试进行编辑,/usr/local/Library/brew.rb但是对git repo进行的本地更改阻止brew update了下拉更新。我尝试了此页面以及其他站点上提到的其他解决方案,但最终却陷入了git混乱,而我想要做的就是撤消我为酿造所做的一切。

我做出了改变,但事情变得更糟了。最终,我不得不撤消我的提交,git reset --hard HEAD~1直到达到正确的提交水平为止。我也有很多未版本化的文件(我更改了/ usr / Local中的文件许可权),所以我做了一个操作git clean -f -d,它删除了所有未版本化的文件和目录,并使我回到开始进行更改之前的位置。


3
这个答案行之有效(包括消除git混乱),在投票最多的答案中,我遇到了git问题。
2014年

升级系统后非常有用!谢谢
上瘾的编码

由于无根模式,这在El Capitan中失败,并显示“ ln:不允许操作”。:你可以在这里找到一个解决办法apple.stackexchange.com/questions/196224/...
豪尔赫·奥尔蒂斯

37

解决步骤:

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

  2. 重新安装brew:

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

    rvm install ruby

为我工作,雅虎!


我得到了红宝石和运行,但是这仍然没有工作对我来说:stackoverflow.com/questions/24113251/...
伊甸

在安装Xcode 6开发人员工具之后,我完全删除了rvm和nginx并重新安装了它们。现在,它就像一种魅力一样工作。
2014年

1
这也对我有用,只是想澄清一下要为步骤1运行此命令:xcode-select --install
James Toomey 2014年

33

编辑脚本意味着brew update将无法使用;跟踪文件的本地编辑会导致git pull失败。

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

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

没有来自的投诉brew doctor


这样做时,我收到关于未跟踪文件的错误,该错误必须在合并之前移动。这些都是Library / Formula /中的所有文件。
septerr 2014年

假设您没有进行任何编辑,当我发生这种情况时,这意味着我需要运行brew doctor并遵循一些说明。brew doctor如果您在这里,这个问题可能对您不起作用。您也许可以继续git stash进行下去。
奥托

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”更改为“当前”(请确保保留大写字母“ 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进行系统更改)

致谢:尽管我确实建议不要在您的/ usr / local文件夹中进行操作,但是很多都来自这里git commit -am


这是唯一对我有用的解决方案。正是由于这样的频繁丑陋的混乱,我才离开了Ruby和Rails的下一个应用程序。
Deborah

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

谢谢!这是唯一对我
有用的


1

我将其修复如下:

  1. sudo chown -R $(whoami):admin /usr/local
  2. cd $(brew --prefix) && git fetch origin && git reset --hard origin/master


0

注意:如果您最终陷入完全失败的状态,请仅执行以下操作,因为这非常危险

举例来说,我一直

$ sudo ln -s当前1.8

$ brew更新

/usr/local/Library/brew.rb:18:in':未定义的方法帮助?对于[“更新”]:数组(NoMethodError)

我得到了……(无论使用哪个命令切换“更新”命令),我都通过请求一个伙伴/usr/local文件夹解决了这个问题。然后,我备份了我的/usr/local文件夹。

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

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

sudo mv〜/ Downloads / local / usr / local

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


-1

我在尝试使用程序包管理器安装Ruby时遇到问题。为公平起见,我承认对这些程序的经验很少,并且没有像其他大多数响应者一样努力进行更深入的研究。我很懒,宁愿使用可用于大多数opsys选择和许多软件包的二进制安装程序。不幸的是,Ruby似乎没有提供。

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

宾果游戏-简单:)对于我们这些挑战说服力的包装经理来说,这似乎是一个不错的选择。

查理

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.