Ошибка при установке 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)