Невозможно исправить сбой установки пакета для драгоценных камней с собственными расширениями - PullRequest
6 голосов
/ 07 сентября 2011

Я развертываю приложения Ruby On Rails на облачном сервере Amazon EC2. Сервер работает на Amazon Linux alami-2011.02. Я не могу сказать дистрибутив, на котором он основан (из моего поиска, RedHat / CentOS, но я новичок в этой области).

Я установил свою среду Ruby с помощью RVM (установлен как root). Я установил два рубина:

  • РЗЭ 1.8.7
  • Ruby 1.9.2-p290

Для каждого развернутого приложения Rails я создаю отдельный набор гемов RVM.

Поскольку я столкнулся с этой проблемой, я полностью обновил среду Ruby, запустив rvm implode.

Вот мои версии среды:

ruby -v      ---> ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]
rvm -v       ---> 1.8.1
gem -v       ---> 1.6.2
bundle -v    ---> Bundler version 1.0.18

После этого rvm implode:

  • Я снова установил 2 рубина
  • Я создал набор гемов для приложения ree-1.8.7 и установил необходимые гемы -> нет проблем
  • Я создал gemset для приложения ruby-1.9.2 и установил гемы через Bundle -> без проблем, даже для гемов с собственными расширениями
  • Я создал gemset для другого ruby-1.9.2, попытался установить гемы через Bundle ... вот оно снова!

Это то, что я узнал при выполнении bundle install (вошел в систему как root):

Updating https://github.com/p7r/will_paginate.git
Fetching source index for http://rubygems.org/
Installing rake (0.9.2) 
Installing multi_json (1.0.3) 
Installing activesupport (3.1.0) 
Installing bcrypt-ruby (3.0.0) with native extensions /usr/local/rvm/scripts/rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:552:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

        /usr/local/rvm/scripts/rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb 

Gem files will remain installed in /usr/local/rvm/scripts/rvm/gems/ruby-1.9.2-p290@app/gems/bcrypt-ruby-3.0.0 for inspection.
Results logged to /usr/local/rvm/scripts/rvm/gems/ruby-1.9.2-p290@app/gems/bcrypt-ruby-3.0.0/ext/mri/gem_make.out

    [ removed the backtrace ]

Однако, если я просто использую gem install bcrypt, гем будет установлен правильно, и я могу просто использовать bundle install, который будет работать до следующего гема с собственными расширениями ...

У меня была та же проблема с установкой ruby-1.9.2-p180, я пытался понизить RubyGems до различных версий до 1.5.3, я взорвал свой RVM ... Я много искал в Интернете ответы, эта проблема кажется повторяющейся, но у меня ничего не получилось.

Заранее спасибо за помощь!

Ответы [ 2 ]

8 голосов
/ 23 января 2012

Это может быть связано с нехваткой памяти для компиляции собственных расширений. По моему опыту, bundle install требует больше памяти, чем просто gem install. Посмотрите на /var/log/messages и посмотрите, есть ли такие проблемы. Кроме того, используйте top для идентификации любых тяжеловесных процессов, например, коллеги, которые оставляют rails console запущенным в сеансе экрана. ;)

1 голос
/ 07 сентября 2011

Если вы работаете в linux, вам необходимо установить библиотеки / пакеты перед установкой гема bcrypt-ruby.

sudo apt-get install ruby1.8-dev // для ruby ​​1.8.7

или

sudo apt-get install ruby-dev

или

sudo apt-get install ruby1.9-dev // для ruby ​​1.9.2

теперь вы можете установить bcrypt-ruby gem с помощью следующей команды

sudo gem install bcrypt-ruby
...