我可以在opensuse上安装charlock_holmes gem,试图用irb快速打开它,我明白了:
> irb
2.3.0 :001 > require 'charlock_holmes'
LoadError: /home/wpostma/.rvm/gems/ruby-2.3.0/gems/charlock_holmes-0.7.3/lib/charlock_holmes/charlock_holmes.so:
undefined symbol: _ZTIN6icu_538ByteSinkE - /home/wpostma/.rvm/gems/ruby-2.3.0/gems/charlock_holmes-0.7.3/lib/charlock_holmes/charlock_holmes.so
from /home/wpostma/.rvm/rubies/ruby-2.3.0/lib64/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/wpostma/.rvm/rubies/ruby-2.3.0/lib64/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/wpostma/.rvm/gems/ruby-2.3.0/gems/charlock_holmes-0.7.3/lib/charlock_holmes.rb:1:in `<top (required)>'
from /home/wpostma/.rvm/rubies/ruby-2.3.0/lib64/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:127:in `require'
from /home/wpostma/.rvm/rubies/ruby-2.3.0/lib64/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:127:in `rescue in require'
from /home/wpostma/.rvm/rubies/ruby-2.3.0/lib64/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:40:in `require'
from (irb):1
from /home/wpostma/.rvm/rubies/ruby-2.3.0/bin/irb:11:in `<main>'
2.3.0 :002 >
在我看来,charlock_holmes中的某些内容与风滚草内的libicu版本不兼容。
我使用随rvm安装的ruby,并清除所有我的gemsets并重新安装并不能解决它。让charlock_holmes工作的任何其他方法?也许我需要安装一个特殊的libicu(早期版本,更早版本)并将宝石指向它?
答案 0 :(得分:0)
这些都是有效的。对我来说,bundle config选项效果更好。
这是安装gem的直接命令,指向正确的libicu版本:
gem install charlock_holmes -- --with-icu-dir=/usr/local
这是一个告诉我以后在这个系统上安装哪个ruby项目的命令,将通过捆绑器安装宝石而不是破坏:
bundle config build.charlock_holmes "--with-icu-dir=/usr/local" --global
由于我使用rvm
上述捆绑配置似乎是&#34;全球&#34;只到那个rvm环境。
在我的情况下,捆绑包配置很有帮助,因为大量的操作本来会失败(安装gems,并引导大型rails应用程序)只是工作。