2013-04-05 91 views
2

我无法在Mountain Lion上安装新鲜rbenv安装的Ruby 1.8.6上安装任何宝石。 gem install段错误和外壳打印“中止陷阱:6”:Ruby 1.8.6`gem install` segfaults with“abort trap 6”

$ RUBYLIB= RUBYOPT= bash 

$ gem install --verbose bundler 
    GET http://rubygems.org/latest_specs.4.8.gz 
    302 Moved Temporarily 
    GET http://production.s3.rubygems.org/latest_specs.4.8.gz 
    304 Not Modified 
    Installing gem bundler-1.3.5 
    Abort trap: 6 

similar issues reported,但所有的答案他们的是,他们需要使用非苹果GCC 4.2构建这样的一个老版本的Ruby。这并不适用于我,因为我已经安装GCC与brew install apple-gcc42和rbenv安装处理拍摄,最多,如下面明显:

$ gem env 
RubyGems Environment: 
    - RUBYGEMS VERSION: 1.3.7 
    - RUBY VERSION: 1.8.6 (2010-09-02 patchlevel 420) [i686-darwin12.3.0] 
    - INSTALLATION DIRECTORY: /Users/mislav/.rbenv/versions/1.8.6-p420/lib/ruby/gems/1.8 
    - RUBY EXECUTABLE: /Users/mislav/.rbenv/versions/1.8.6-p420/bin/ruby 
    - EXECUTABLE DIRECTORY: /Users/mislav/.rbenv/versions/1.8.6-p420/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86-darwin-12 
    - GEM PATHS: 
    - /Users/mislav/.rbenv/versions/1.8.6-p420/lib/ruby/gems/1.8 
    - /Users/mislav/.gem/ruby/1.8 
    - GEM CONFIGURATION: 
    - "gem" => "--no-ri --no-rdoc" 
    - REMOTE SOURCES: 
    - http://rubygems.org/ 

$ ruby -rrbconfig -e 'puts RbConfig::CONFIG["configure_args"]' 
    '--prefix=/Users/mislav/.rbenv/versions/1.8.6-p420' 
    'CC=/usr/local/bin/gcc-4.2' 
    'CFLAGS= -Wno-error=shorten-64-to-32' 
    'LDFLAGS=-L'\\''/Users/mislav/.rbenv/versions/1.8.6-p420/lib'\\'' ' 
    'CPPFLAGS=-I'\\''/Users/mislav/.rbenv/versions/1.8.6-p420/include'\\'' ' 

$ /usr/local/bin/gcc-4.2 --version 
    i686-apple-darwin11-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3) 
+0

您使用的是rvm吗? – jahrichie 2013-04-05 22:34:11

+0

@jahrichie不,rbenv,第一段和'gem env'的输出显而易见 – mislav 2013-04-07 11:40:54

回答

1

我可以一目了然的唯一区别是我安装gcc-4.2/usr/bin,并且您使用/usr/local/bin。那不应该有所作为,但我想有可能是一些Makefile硬编码/usr/bin(这是更常见 - 我猜?)为gcc

既然你提到你用Homebrew来安装gcc-4.2,我还会补充说我按照以下说明使用了手动方法:http://caiustheory.com/install-gcc-421-apple-build-56663-with-xcode-42。我不认为应该有所作为,但你永远不知道。

+0

是的,从源代码编译它做到了。这意味着我的OS X版本中分发了Homebrew分发的apple-gcc,我将报告它。 – mislav 2013-04-14 16:48:14

+0

嗨,我相信我的情况和@mislav一样,我理解这个答案,但是我不确定如何解决这个问题。我在'/ usr/bin/gcc'中有一个gcc,并且使用自制软件安装了一个gcc。我是否需要卸载自制软件版本,然后使用caiustheory.com链接重新安装?如果是的话,这将搞砸我的Mac OS Sierra上的任何东西?我理解这个问题只是确定解决问题的最佳方式。谢谢 – FireDragon 2017-02-22 09:55:27

+1

@FireDragon对不起,但我不知道该推荐些什么。我现在不再使用Ruby了,我担心四年后很可能会发生变化。我甚至不知道凯斯方法是否可以在当前的Mac上运行。最好打开一个新的问题:指定你想要什么版本的Ruby,使用什么工具等等。即使你提到这个问题,现在的情况可能会有所不同。 – Telemachus 2017-02-22 14:58:46

0

这可能是的rubygems新版本将不会版本的情况下工作Ruby 1.8.6及之前的版本。

您可以随时尝试slimgems作为替代选择。这是1.3.x系列rubygems系统的一个分支,针对错误而不是功能进行了修补。

+0

我没有运行更新版本的Rubygems。除非它正在编译本地扩展,否则Rubygems中没有代码需要segfault。这听起来像一个破碎的Ruby版本。 – mislav 2013-04-05 17:29:23

0

探索OS X的版本。苹果在新的OS X和Xcode中改变了他们的编译器。 gcc安装在哪里?尝试运行哪个gcc。

+0

我知道苹果电脑切换'gcc'来使用他们的LLVM编译器,而且老版本的rubies不能使用它。这就是为什么我强调我使用Homebrew中的'apple-gcc42',这是他们以前版本的gcc,它不是基于LLVM的。 – mislav 2013-04-07 11:38:50