gem 安装引发 ruby 1.8.7 和 rbenv 的分段错误,没有其他本地 gems
gem install raises segmentation fault with ruby 1.8.7, rbenv and no other local gems
我要在 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:
$ gem list
*** LOCAL GEMS ***
有什么想法吗?
这可能是一个 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'
。
我的猜测是您正在尝试安装不支持 ruby 1.8.7(参考 here)的最新版本的捆绑器。尝试安装 bundler 1.7.3 或更低版本。例子:
gem install bundler -v=1.17.3
使用旧版本的 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
我要在 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:
$ gem list
*** LOCAL GEMS ***
有什么想法吗?
这可能是一个 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'
。
我的猜测是您正在尝试安装不支持 ruby 1.8.7(参考 here)的最新版本的捆绑器。尝试安装 bundler 1.7.3 或更低版本。例子:
gem install bundler -v=1.17.3
使用旧版本的 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