gem install使用ruby 1.8.7,rbenv和没有其他本地gem会引起分段错误

时间:2019-02-08 14:17:11

标签: ruby-on-rails ruby rubygems

我有旧项目要在ruby 1.8.7上维护,但是我无法安装捆绑软件,因为当前没有为它安装捆绑软件,尝试gem install bundler会引起细分错误。实际上,它不依赖于gem,gem install <any gem>的结果相同。

几个小时的谷歌搜索没有效果,所以下面是详细信息:

$ gem install bundler
/home/marat/.rbenv/versions/1.8.7-p352/lib/ruby/1.8/timeout.rb:60: [BUG] Segmentation fault
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
Aborted

环境详细信息:

$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.6.2
  - RUBY VERSION: 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
  - INSTALLATION DIRECTORY: /home/marat/.rbenv/versions/1.8.7-p352/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /home/marat/.rbenv/versions/1.8.7-p352/bin/ruby
  - EXECUTABLE DIRECTORY: /home/marat/.rbenv/versions/1.8.7-p352/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /home/marat/.rbenv/versions/1.8.7-p352/lib/ruby/gems/1.8
     - /home/marat/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

当前没有本地宝石:

$ gem list

*** LOCAL GEMS ***

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

这可能是OpenSSL问题。您可以运行:

CONFIGURE_OPTS="--with-openssl-dir=/opt/local" rbenv install 1.8.7

这将为您提供带正确OpenSSL信息的Ruby 1.8.7全新安装。您可能要先做rbenv uninstall

更新:

解决此问题的另一种方法是将Gemfile中的source 'https://rubygems.org'更改为source 'http://rubygems.org'

答案 1 :(得分:0)

我的猜测是您正在尝试安装不支持ruby 1.8.7(参考here)的捆绑程序的最新版本。尝试安装捆绑程序版本1.7.3或更低版本。例: gem install bundler -v=1.17.3

答案 2 :(得分:0)

使用旧版的gcc帮助了我。这是我为解决此问题所采取的步骤:

添加包含Ubuntu 16.04较早版本的gcc的存储库并安装它:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt install gcc-4.4

使用旧版gcc构建项目:

rbenv uninstall 1.8.7-p352
CC=/usr/bin/gcc-4.4 rbenv install 1.8.7-p352
CC=/usr/bin/gcc-4.4 rbenv local 1.8.7-p352