我怎样才能修复 charlock_holmes gem 以便它在 opensuse Tumbleweed 上工作?

How can I fix charlock_holmes gem so it works on opensuse Tumbleweed?

我可以在 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 中的某些内容可能与 tumbleweed 中的 libicu 版本不兼容。

我正在使用随 rvm 安装的 ruby,清除我所有的 gem 设置并重新安装并不能解决问题。还有其他方法可以让 charlock_holmes 正常工作吗?也许我需要安装一个特殊的 libicu 副本(较早的,较旧的)并将 gem 指向它?

这些作品中的任何一个。对我来说,捆绑配置选项效果更好。

这是安装 gem 的直接命令,将其指向正确的 libicu 版本:

gem install charlock_holmes -- --with-icu-dir=/usr/local

这是一个命令,用于告诉我稍后在此系统上安装的哪个 ruby 项目将由捆绑程序安装 gems 以正常工作而不是破坏:

bundle config build.charlock_holmes "--with-icu-dir=/usr/local" --global

因为我使用的是 rvm,所以上面的包配置似乎 "global" 只适用于那个 rvm 环境。

在我的例子中,bundle 配置很有帮助,因为否则会失败的大量操作(安装 gem 和引导大型 rails 应用程序)刚刚起作用。