Символ не найден при использовании рубинового камня berkshelf

У меня были общие проблемы с berkshelf, а именно проблема с решателем зависимостей, о которой вы можете узнать больше здесь

Теперь эта проблема решена. Я только что попытался выполнить установку/обновление пакета и установку berks, чтобы опробовать новый решатель зависимостей, но при установке berks я получаю странную ошибку:

➜  deployment git:(master) ✗ berks install
/usr/local/rvm/gems/ruby-1.9.3-p484@global/gems/ffi-1.9.3/lib/ffi/library.rb:133:in `block in ffi_lib': Could not open library '/usr/local/rvm/gems/ruby-1.9.3-p484/gems/dep_selector-1.0.0.alpha.2/lib/dep_gecode.bundle': dlopen(/usr/local/rvm/gems/ruby-1.9.3-p484/gems/dep_selector-1.0.0.alpha.2/lib/dep_gecode.bundle, 5): Symbol not found: __ZN6Gecode16ValBranchOptions3defE (LoadError)
  Referenced from: /usr/local/rvm/gems/ruby-1.9.3-p484/gems/dep_selector-1.0.0.alpha.2/lib/dep_gecode.bundle
  Expected in: flat namespace
 in /usr/local/rvm/gems/ruby-1.9.3-p484/gems/dep_selector-1.0.0.alpha.2/lib/dep_gecode.bundle
    from /usr/local/rvm/gems/ruby-1.9.3-p484@global/gems/ffi-1.9.3/lib/ffi/library.rb:100:in `map'
    from /usr/local/rvm/gems/ruby-1.9.3-p484@global/gems/ffi-1.9.3/lib/ffi/library.rb:100:in `ffi_lib'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/gems/dep_selector-1.0.0.alpha.2/lib/dep_selector/dep_gecode.rb:33:in `<module:Dep_gecode>'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/gems/dep_selector-1.0.0.alpha.2/lib/dep_selector/dep_gecode.rb:21:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/gems/dep_selector-1.0.0.alpha.2/lib/dep_selector/gecode_wrapper.rb:21:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/gems/dep_selector-1.0.0.alpha.2/lib/dep_selector/gecode_wrapper.rb:21:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/gems/dep_selector-1.0.0.alpha.2/lib/dep_selector/dependency_graph.rb:21:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/gems/dep_selector-1.0.0.alpha.2/lib/dep_selector/dependency_graph.rb:21:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/gems/dep_selector-1.0.0.alpha.2/lib/dep_selector/selector.rb:21:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/gems/dep_selector-1.0.0.alpha.2/lib/dep_selector/selector.rb:21:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/gems/dep_selector-1.0.0.alpha.2/lib/dep_selector.rb:22:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/gems/dep_selector-1.0.0.alpha.2/lib/dep_selector.rb:22:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/gems/solve-1.0.0.rc1/lib/solve/solver.rb:1:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/gems/solve-1.0.0.rc1/lib/solve/solver.rb:1:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/gems/solve-1.0.0.rc1/lib/solve.rb:10:in `require_relative'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/gems/solve-1.0.0.rc1/lib/solve.rb:10:in `<module:Solve>'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/gems/solve-1.0.0.rc1/lib/solve.rb:3:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/berkshelf-7060813e4887/lib/berkshelf.rb:8:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/berkshelf-7060813e4887/lib/berkshelf.rb:8:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/berkshelf-7060813e4887/lib/berkshelf/cli.rb:1:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/berkshelf-7060813e4887/lib/berkshelf/cli.rb:1:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/berkshelf-7060813e4887/bin/berks:3:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/berkshelf-7060813e4887/bin/berks:3:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/bin/berks:23:in `load'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/bin/berks:23:in `<main>'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/bin/ruby_executable_hooks:15:in `eval'
    from /usr/local/rvm/gems/ruby-1.9.3-p484/bin/ruby_executable_hooks:15:in `<main>'

Сейчас я не очень много знаю о Ruby, но у меня есть некоторый опыт работы с C++, и я никогда не забуду такого рода проблемы с линковкой библиотек. Единственная проблема в том, что я буквально понятия не имею, что мне с этим делать!?

Я на Mac, поэтому я установил зависимость Gecode, используя homebrew. Я пытался удалить его и переустановить несколько раз, я даже пытался следовать эту статью, но, похоже, это ничего не изменило.

Любые советы будут высоко оценены, спасибо!


person real_ate    schedule 08.04.2014    source источник
comment
Вам нужен Gecode 3, а не 4. По умолчанию используется 4, поэтому вам нужно вернуться к старому хешу и установить 3.0.   -  person sethvargo    schedule 08.04.2014


Ответы (1)


У меня были те же симптомы, и я провел небольшое исследование по этому поводу. Заработало, переключив версии gecode:

brew switch gecode 3.7.3

Затем удалил оскорбительные драгоценные камни:

gem uninstall berkshelf
gem uninstall solve
gem uninstall dep_selector

И, наконец, переустановка bershelf:

gem install berkshelf

person Rafael Fonseca    schedule 15.04.2014
comment
я никогда не знал, что существует команда brew switch, так что это действительно помогло мне! - person real_ate; 21.04.2014
comment
Вышеупомянутой версии больше нет в доморощенном репо. Этот трюк не работает с текущей версией (4.1.2). - person picardo; 12.06.2014
comment
Ты прав. Я рекомендую отказаться от автономной установки berkshelf и вместо этого использовать ChefDK: getchef.com/downloads/chef- дк - person Rafael Fonseca; 13.06.2014
comment
спасибо, я сделал как вы написали и наконец мой rspec запустился) - person Ilja; 05.06.2015