我怎样才能修复charlock_holmes gem所以它适用于opensuse Tumbleweed?

时间:2016-11-12 03:14:06

标签: ruby rubygems opensuse

我可以在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(早期版本,更早版本)并将宝石指向它?

1 个答案:

答案 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应用程序)只是工作。