Ошибка при установке json 1.8.3 с ruby ​​2.4

[информация о версии]

ruby ​​2.4.0p0 (версия 2016-12-24 57164) [x86_64-linux] /gem 2.0.3/ Windows 10

Я запустил bundle install, и мне было предложено запустить gem install json -v '1.8.3'

Я сделал это и получил ошибку "Ошибка сборки внутренней ошибки gem".

Building native extensions.  This could take a while...

ERROR:  Error installing json:
        ERROR: Failed to build gem native extension.
    /home/ec2-user/.rvm/rubies/ruby-2.4.0/bin/ruby extconf.rb
creating Makefile

make
compiling generator.c
generator.c: In function ‘generate_json’:
generator.c:861:25: error: ‘rb_cFixnum’ undeclared (first use in this function)
     } else if (klass == rb_cFixnum) {
                         ^
generator.c:861:25: note: each undeclared identifier is reported only once for each function it appears in
generator.c:863:25: error: ‘rb_cBignum’ undeclared (first use in this function)
     } else if (klass == rb_cBignum) {
                         ^
generator.c: At top level:
cc1: warning: unrecognized command line option "-Wno-self-assign" [enabled by default]
cc1: warning: unrecognized command line option "-Wno-constant-logical-operand" [enabled by default]
cc1: warning: unrecognized command line option "-Wno-parentheses-equality" [enabled by default]
cc1: warning: unrecognized command line option "-Wno-tautological-compare" [enabled by default]
make: *** [generator.o] Error 1

Gem files will remain installed in /home/ec2-user/.rvm/gems/ruby-2.4.0/gems/json-1.8.3 for inspection.
Results logged to /home/ec2-user/.rvm/gems/ruby-2.4.0/gems/json-1.8.3/ext/json/ext/generator/gem_make.out

Я проверил несколько документов. Я установил Devkit и json 1.8.5, но в моем проекте содержится сообщение "установить json 1.8.3", Как я могу решить эту проблему?

/home/ec2-user/.rvm/gems/ruby-2.4.0/gems/json-1.8.3 содержит:

../
./
data/
diagrams/
ext/
java/
lib/
tests/
tools/
install.rb*
.gitignore
.travis.yml
CHANGES
COPYING
COPYING-json-jruby
GPL
Gemfile
README-json-jruby.markdown
README.rdoc
Rakefile

/home/ec2-user/.rvm/gems/ruby-2.4.0/gems/json-1.8.3/ext/json/ext/generator/gem_make.out содержит:

user/.rvm/gems/ruby-2.4.0/gems/json-1.8.3/ext/json/ext/generator/gem_make.out
/home/ec2-user/.rvm/rubies/ruby-2.4.0/bin/ruby extconf.rb
creating Makefile

make
compiling generator.c
generator.c: In function ‘generate_json’:
generator.c:861:25: error: ‘rb_cFixnum’ undeclared (first use in this function)
     } else if (klass == rb_cFixnum) {
                         ^
generator.c:861:25: note: each undeclared identifier is reported only once for each function it appears in
generator.c:863:25: error: ‘rb_cBignum’ undeclared (first use in this function)
     } else if (klass == rb_cBignum) {
                         ^
generator.c: At top level:
cc1: warning: unrecognized command line option "-Wno-self-assign" [enabled by default]
cc1: warning: unrecognized command line option "-Wno-constant-logical-operand" [enabled by default]
cc1: warning: unrecognized command line option "-Wno-parentheses-equality" [enabled by default]
cc1: warning: unrecognized command line option "-Wno-tautological-compare" [enabled by default]
make: *** [generator.o] Error 1

Ответ 1

В последнее время я столкнулся с одной и той же проблемой, попробуйте и посмотрите, есть ли более новая версия любого драгоценного камня, который вы используете, что зависит от json 1.8.3. Это происходит потому, что Ruby 2.4 унифицирован Fixnum и Bignum в Integer. Если вы можете перейти на json 1.8.5 или выше, это должно помочь исправить ваши проблемы.

Вы также можете попробовать обновить используемый вами камень и попытаться смягчить ограничения версии (я нашел, что это работает с большим количеством проектов, но не все):

gem 'json', '>= 1.8'

Ответ 2

Попробуйте удалить Gemfile.lock и снова запустить команду bundle. Он должен использовать другую версию json (т.е. 1.8.6) без проблем.

Ответ 3

В Gemfile.lock

json (~>1.8.3)

тогда сделай

bundle update

Ответ 4

Я принудительно установил json 1.8.5 и изменил запись в Gemfile.lock, похоже, сейчас работает.

Ответ 5

Я столкнулся с той же проблемой. Возможное решение - мы должны сначала удалить json из gem

"gem uninstall json"

а затем установить

"sudo bundle install"

Не забудьте добавить sudo. Без sudo он не сможет установить.

Ответ 6

Я выполнил следующие шаги: вставьте указанную выше команду в gemfile (gem 'json', ' >= 1.8') и с событием ошибки при запуске пакета. Я был реализован обновление пакета и установленные зависимости.

Ответ 7

Необходимо изменить строку, начинающуюся с "json" в Gemfile.lock, следующей строкой

json (~>1.8.3)