Получено после обновления ruby: Символ не найден: __ZN6libdap5ErrorD1Ev

#ruby-on-rails #ruby #rbenv

Вопрос:

Прошло несколько часов, пока я пытаюсь понять ошибку, но я ее не понимаю.

Я попытался обновить свою версию ruby с 2.5 до 2.7.4

Я сначала обновил rbenv brew , а затем установил версию 2.7.4 и использовал rbenv rehash

Но теперь всякий раз , когда я запускаю rails c или rails s , у меня возникают следующие ошибки:

 Loading development environment variables
 - load /Users/myself/Work/my-app/.env
/Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require': dlopen(/Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/bundler/gems/gdal-ruby-1820e1643725/lib/gdal-ruby/gdal.bundle, 9): Symbol not found: __ZN6libdap5ErrorD1Ev
  Referenced from: /usr/local/opt/gdal/lib/libgdal.28.dylib
  Expected in: /usr/local/opt/libdap/lib/libdap.27.dylib
 in /usr/local/opt/gdal/lib/libgdal.28.dylib - /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/bundler/gems/gdal-ruby-1820e1643725/lib/gdal-ruby/gdal.bundle (LoadError)
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/dependencies.rb:332:in `block in require'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/dependencies.rb:299:in `load_dependency'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/dependencies.rb:332:in `require'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/bundler/gems/gdal-ruby-1820e1643725/lib/gdal.rb:2:in `<main>'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/2.7.0/bundler/runtime.rb:74:in `block (2 levels) in require'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/2.7.0/bundler/runtime.rb:69:in `each'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/2.7.0/bundler/runtime.rb:69:in `block in require'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/2.7.0/bundler/runtime.rb:58:in `each'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/2.7.0/bundler/runtime.rb:58:in `require'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/2.7.0/bundler.rb:174:in `require'
    from /Users/myself/Work/my-app/config/application.rb:9:in `<top (required)>'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:92:in `require'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:92:in `preload'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:157:in `serve'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:145:in `block in run'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:139:in `loop'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:139:in `run'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application/boot.rb:19:in `<top (required)>'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'
    from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'
 

Я пытался переустановить rbenv из brew, но это не сработало, я потратил несколько часов, пытаясь понять, что означает эта ошибка, но как новичок я ее не понимаю.

Что мне следует искать ?

РЕДАКТИРОВАТЬ: Это не из bootsnap, так как у меня та же проблема, если я удалю bootsnap

Комментарии:

1. Вы работаете rails c в рамках существующего проекта? Что произойдет, если вы начнете новый проект Rails?

2. Да, я запускаю его из существующего проекта. Я просто пытаюсь создать новый проект rails, а затем запустить rails c его, и он работает правильно.

3. Некоторые зависимости ваших существующих драгоценных камней, возможно, были обновлены во время (неявного) brew upgrade запуска. Вы можете попробовать переустановить все драгоценные камни вашего проекта с помощью bundle pristine

4. Это сработало с bundle pristine добавлением его в качестве ответа, если хотите, тогда я могу подтвердить ваш ответ 🙂 Спасибо вам за вашу помощь

Ответ №1:

Некоторые зависимости ваших существующих драгоценных камней, возможно, были обновлены во время (неявного) brew upgrade запуска при установке дополнительного программного обеспечения.

При установке самоцветов, которые используют зависимости библиотек (например, libgdal в вашем случае), эти самоцветы иногда могут потребоваться повторно скомпилировать, если базовая библиотека изменилась несовместимыми способами.

Таким образом, обычная первая попытка исправить это, чтобы повторно установить затронутый драгоценный камень. Если вы используете bundler, вы можете переустановить все драгоценные камни вашего проекта, запустив

 bundle pristine
 

Это должно гарантировать, что все ваши управляемые комплектами драгоценные камни используют последние версии ваших библиотек. Смотрите документацию bundle pristine для получения подробной информации о том, что эта команда делает под капотом.