Произошла ошибка при установке драгоценного камня, и Bundler не может продолжить работу. Mac OS - большой сюрприз

Эта ошибка случилась со мной раньше с гемом nio4r, когда я обновился до Catalina, и @dmitry barskov ответил на нее. Аналогичная проблема возникает сейчас после большого обновления с помощью json, oj и therubyracer (пробовал использовать решение от nio4r, но не повезло). Когда я запускаю gem list, я вижу, что драгоценные камни установлены, но установить пакет не удается. Итак, я попробовал обновить пакет json oj therubyracer. он работает для json и oj, но для rubyracer выдает ошибки.

ошибка therubyracer - ›

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/me/.gem/gems/therubyracer-0.12.2/ext/v8
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0 -r
./siteconf20210106-9670-edtaxk.rb extconf.rb --with-v8-dir\=/usr/local/opt/v8
checking for -lpthread... yes
checking for -lobjc... yes
checking for v8.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/$(RUBY_BASE_NAME)
    --with-pthreadlib
    --without-pthreadlib
    --with-objclib
    --without-objclib
    --enable-debug
    --disable-debug
    --with-v8-dir
    --with-v8-include
    --without-v8-include=${v8-dir}/include
    --with-v8-lib
    --without-v8-lib=${v8-dir}/lib
/Users/me/.gem/gems/libv8-3.16.14.19/ext/libv8/location.rb:50:in `configure': By using --with-system-v8, you have chosen to use the version
(Libv8::Location::System::NotFoundError)
of V8 found on your system and *not* the one that is bundled with
the libv8 rubygem.

However, your system version of v8 could not be located.

Please make sure your system version of v8 that is compatible
with 3.16.14.19 installed.

ошибка json - ›

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0 -r
./siteconf20210106-29155-126itgi.rb extconf.rb
creating Makefile

current directory: /Users/me/.gem/gems/json-1.8.3/ext/json/ext/generator
make "DESTDIR=" clean

current directory: /Users/me/.gem/gems/json-1.8.3/ext/json/ext/generator
make "DESTDIR="
compiling generator.c
generator.c:861:25: error: use of undeclared identifier 'rb_cFixnum'
    } else if (klass == rb_cFixnum) {
                        ^
generator.c:863:25: error: use of undeclared identifier 'rb_cBignum'
    } else if (klass == rb_cBignum) {
                        ^
2 errors generated.
make: *** [generator.o] Error 1

make failed, exit code 2
*** LOCAL GEMS ***

bigdecimal (1.2.8)
bundler (1.17.3)
json (1.8.3)
libv8 (3.16.14.17)
oj (2.15.0)
rake (10.4.2)
ref (2.0.0)
therubyracer (0.12.3)

checking for v8.h... no Я понимаю, что это может быть проблема, поэтому вот что я безуспешно пытался исправить: ›

brew install v8-315
gem uninstall -a libv8
bundle config build.therubyracer --with-v8-dir=$(brew --prefix [email protected])
gem install libv8 -v '3.16.14.17' — —with-system-v8
gem uninstall -a therubyracer
bundle config build.libv8 --with-system-v8
gem install therubyracer -v '0.12.2' -- --with-v8-dir=$(brew --prefix [email protected])

Когда я делаю обновление пакета, оно застревает в разрешении зависимостей .... Я оставил его включенным в течение 12 часов, прежде чем сдаться. Когда я удаляю свой gemfile.lock и запускаю установку пакета, он снова застревает в разрешении зависимостей ...

Я использую сборщик ruby ​​v 2.3.1 версии 1.17.3

Я заметил одну вещь: путь /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby показывает 2.6.0, но я использую 2.3.1 (подтверждено запуском rbenv local и ruby ​​-v)

Если потребуется какая-либо другая информация, сообщите мне. Любая помощь будет высоко ценится.


person trailblazer    schedule 06.01.2021    source источник
comment
Первое, что нужно исследовать, определенно будет проблема, о которой вы упомянули в конце - ваша локальная оболочка использует вашу rbenv установленную версию Ruby, но из журналов очень ясно, что используется Ruby вашей системы. В частности, эта строка журнала: --ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/$(RUBY_BASE_NAME). Я бы начал с удаления Ruby из rbenv, переустановки его, а затем убедился, что ваш bundle исполняемый файл указывает на ваш установленный rbenv.   -  person taylorthurlow    schedule 07.01.2021


Ответы (1)


В итоге я удалил папку проекта и клонировал новую. Удалил все драгоценные камни, переустановил rbenv, как указал @taylorthurlow.

Все заработало, установка пакета была зеленой.

person trailblazer    schedule 06.01.2021