2013-04-05 77 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