如何修复 charlock_holmes gem 使其适用于 opensuse Tumbleweed?
Posted
技术标签:
【中文标题】如何修复 charlock_holmes gem 使其适用于 opensuse Tumbleweed?【英文标题】:How can I fix charlock_holmes gem so it works on opensuse Tumbleweed? 【发布时间】:2016-11-12 03:14:05 【问题描述】:我可以在 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,并且清除我所有的 gemset 并重新安装并不能修复它。还有其他方法可以让 charlock_holmes 工作吗?也许我需要安装一个特殊的 libicu(较早、较旧)副本并将 gem 指向它?
【问题讨论】:
【参考方案1】:这些作品中的任何一个。对我来说,捆绑配置选项效果更好。
这是安装 gem 的直接命令,将其指向正确的 libicu 版本:
gem install charlock_holmes -- --with-icu-dir=/usr/local
这是一个命令,用于告诉我稍后在该系统上安装的哪个 ruby 项目,将让 bundler 安装的 gems 正常工作而不是破坏:
bundle config build.charlock_holmes "--with-icu-dir=/usr/local" --global
由于我使用的是rvm
,因此上述捆绑配置似乎仅对该 rvm 环境是“全局的”。
在我的例子中,bundle 配置很有帮助,因为一系列原本会失败的操作(安装 gems,以及引导大型 rails 应用程序)刚刚起作用。
【讨论】:
以上是关于如何修复 charlock_holmes gem 使其适用于 opensuse Tumbleweed?的主要内容,如果未能解决你的问题,请参考以下文章
如何修复此错误? config.gem:在 vendor/gems 中解压的 gem authlogic-2.1.3 没有规范文件
如何使用已在Github上发布但尚未在Rubygems上发布的gem版本?
未加载修复库:libmysqlclient.16.dylib(LoadError)