2016-12-28 3 views
2

Установка Redmine. Я пробовал,Gem :: Ext :: BuildError: ERROR: Не удалось создать собственное расширение gem. на CenOS 6.5

bundle install --without development test postgresql sqlite 

, но погрешность.

Gem :: Ext :: BuildError: ERROR: Не удалось создать самородное расширение 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, но я не мог решить.

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

ответ

1

Рубин 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#Ruby-interpreter, Redmine требует определенных версий Ruby в зависимости от версии Redmine.

+1

я вижу ... Это означает, что рубин 2,4 не поддерживает JSON 1.8.3. Затем, есть ли информация, что стабильная (?) gems list следующая версия ruby? Я хочу знать, как искать ключевое слово для себя. – Johnson

+0

Ну, каждый драгоценный камень реализует свои собственные механизмы совместимости. Конечно, вам нужно прочитать документацию, попробовать или спросить у сопровождающих.Вы также можете использовать google для «[gemname] ruby ​​2.4" или "[gemname] [сообщение об ошибке]". Что касается json gem, они поддерживают Ruby 2.4 [с json 2.0] (https://github.com/flori/json/blob/master/CHANGES.md#2015-09-11-200). Необходимые изменения [были отправлены обратно в ветку 1.8] (https://github.com/flori/json/issues/308), но еще не выпущены. –

0

первый запуск

gem install bundler 

Он устанавливает новую Bundler и решает нативные зависимости расширения

затем запустить

bundle install 

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

0

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

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

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

Смежные вопросы