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