Gem::Ext::BuildError: ОШИБКА: не удалось создать собственное расширение для gem. на CenOS 6.5

Установка Redmine. Я пробовал,

bundle install --without development test postgresql sqlite

но ошибка.

Gem:: Ext:: BuildError: ОШИБКА: не удалось создать собственное расширение для gem.

current directory:
/usr/local/lib/ruby/gems/2.4.0/gems/json-1.8.3/ext/json/ext/generator
/usr/local/bin/ruby -r ./siteconf20161228-21055-1dxe9y9.rb extconf.rb
creating Makefile

current directory:
/usr/local/lib/ruby/gems/2.4.0/gems/json-1.8.3/ext/json/ext/generator
make "DESTDIR=" clean

current directory:
/usr/local/lib/ruby/gems/2.4.0/gems/json-1.8.3/ext/json/ext/generator
make "DESTDIR="
compiling generator.c
generator.c: In function ‘generate_json’:
generator.c:861: error: ‘rb_cFixnum’ undeclared (first use in this
function)
generator.c:861: error: (Each undeclared identifier is reported only
once
generator.c:861: error: for each function it appears in.)
generator.c:863: error: ‘rb_cBignum’ undeclared (first use in this
function)
At top level:
cc1: warning: unrecognized command line option "-Wno-self-assign"
cc1: warning: unrecognized command line option
"-Wno-constant-logical-operand"
cc1: warning: unrecognized command line option
"-Wno-parentheses-equality"
cc1: warning: unrecognized command line option
"-Wno-tautological-compare"
make: *** [generator.o] error 1

make failed, exit code 2

Gem files will remain installed in
/usr/local/lib/ruby/gems/2.4.0/gems/json-1.8.3 for inspection.
Results logged to
/usr/local/lib/ruby/gems/2.4.0/extensions/x86_64-linux/2.4.0-static/json-1.8.3/gem_make.out

An error occurred while installing json (1.8.3), and Bundler
cannot continue.
Make sure that `gem install json -v '1.8.3'` succeeds before
bundling.

Итак, я попробовал gem install json -v '1.8.3, но я не мог решить это.

Не могли бы вы просто прочитать эту проблему?

3 ответа

Решение

Ruby 2.4 очень новый. Фактически, это было выпущено только 3 дня назад.

Поскольку в Ruby 2.4 есть несколько важных внутренних изменений, вполне вероятно, что многие гемы (и сам Redmine) еще не совместимы с этой версией Ruby.

Из вашего сообщения об ошибке действительно кажется, что гем JSON необходимо адаптировать для обработки некоторых изменений в Ruby 2.4, касающихся целых чисел.

Вы должны использовать более старую версию Ruby, например, Ruby 2.3.3. Как вы можете видеть на http://www.redmine.org/projects/redmine/wiki/RedmineInstall, Redmine требует определенных версий Ruby в зависимости от версии Redmine.

У меня была та же проблема прямо сейчас. Для ее решения установите последнюю версию bundler а также rmagick вручную с помощью gem install обновить все остальные пакеты gem update а также bundle update, Это решило проблему зависимости json 1.8.3 а также ruby 2.4,

Но я столкнулся с еще некоторыми проблемами после слов. Это швы как ruby 2.4 вносит некоторые изменения в интерпретацию числа, что означает, что он не совместим с rail 4.x больше (см. этот пост). обновление rails и его зависимость, кажется, пока невозможна, так как Redmine нуждается protected_attributes который зависит от activemodel (< 5.0, >= 4.0.1) а также rails 5.x зависит от activemodel 5.x,

Всегда плохо, если обновление нарушает обратную совместимость, особенно для языка программирования:(

Первый забег

gem install bundler

Он устанавливает новый пакет и решает собственные зависимости расширения

затем беги

bundle install 

это должно решить вашу проблему

Похоже , что у json gem есть ошибка с более новой версией ruby ​​(2.4+), этот ответ от makandracards предлагает простое и легкое решение.

ответ касается обновления версии json gem для устранения ошибки и успешной установки gem. поэтому он обновляет гем json с параметром --conservative.

bundle update json --conservative

Другие вопросы по тегам