【问题标题】:Could not open library '/usr/lib/libmecab.so.2': /usr/lib/libmecab.so.2: cannot open shared object file: No such file or directory (LoadError)无法打开库“/usr/lib/libmecab.so.2”:/usr/lib/libmecab.so.2:无法打开共享对象文件:没有这样的文件或目录(LoadError)
【发布时间】:2019-12-11 02:50:08
【问题描述】:

当我尝试启动我的 Rails 服务器时,我收到了一个与 mecab 相关的错误 所以我按照下面给出的说明安装 mecab 并成功安装 我检查了mecab的版本

在安装 mecab 时遵循的步骤是

1. gem install natto
2. sudo apt-get install mecab libmecab-dev
3. sudo apt-get install mecab-ipadic-utf8
4. mecab --version
5. sudo find / -name libmecab.so*

    this gives an error of permission denied

6. echo 'export MECAB_PATH=/usr/lib/libmecab.so.2' >> ~/.bash_profile
7. source ~/.bash_profile

毕竟,当我尝试启动 rails 服务器时,我得到了以下错误

/home/admin123/.rvm/gems/ruby-2.3.1/gems/ffi-1.9.14/lib/ffi/library.rb:147:in `block in ffi_lib': Could not open library '/usr/lib/libmecab.so.2': /usr/lib/libmecab.so.2: cannot open shared object file: No such file or directory (LoadError)
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/ffi-1.9.14/lib/ffi/library.rb:100:in `map'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/ffi-1.9.14/lib/ffi/library.rb:100:in `ffi_lib'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/natto-1.1.1/lib/natto/binding.rb:64:in `<module:Binding>'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/natto-1.1.1/lib/natto/binding.rb:6:in `<module:Natto>'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/natto-1.1.1/lib/natto/binding.rb:2:in `<top (required)>'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:274:in `require'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:274:in `block in require'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:240:in `load_dependency'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:274:in `require'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/natto-1.1.1/lib/natto/natto.rb:2:in `<top (required)>'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:274:in `require'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:274:in `block in require'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:240:in `load_dependency'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:274:in `require'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/natto-1.1.1/lib/natto.rb:2:in `<top (required)>'
    from /usr/share/rvm/rubies/ruby-2.3.1/lib/ruby/site_ruby/2.3.0/bundler/runtime.rb:81:in `require'
    from /usr/share/rvm/rubies/ruby-2.3.1/lib/ruby/site_ruby/2.3.0/bundler/runtime.rb:81:in `block (2 levels) in require'
    from /usr/share/rvm/rubies/ruby-2.3.1/lib/ruby/site_ruby/2.3.0/bundler/runtime.rb:76:in `each'
    from /usr/share/rvm/rubies/ruby-2.3.1/lib/ruby/site_ruby/2.3.0/bundler/runtime.rb:76:in `block in require'
    from /usr/share/rvm/rubies/ruby-2.3.1/lib/ruby/site_ruby/2.3.0/bundler/runtime.rb:65:in `each'
    from /usr/share/rvm/rubies/ruby-2.3.1/lib/ruby/site_ruby/2.3.0/bundler/runtime.rb:65:in `require'
    from /usr/share/rvm/rubies/ruby-2.3.1/lib/ruby/site_ruby/2.3.0/bundler.rb:114:in `require'
    from /home/admin123/WFSGo/myproject/config/application.rb:16:in `<top (required)>'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:78:in `require'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:78:in `block in server'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `tap'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `server'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
    from /home/admin123/.rvm/gems/ruby-2.3.1/gems/railties-4.2.4/lib/rails/commands.rb:17:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'

【问题讨论】:

  • 图书馆在哪里?在 Ubuntu 上,它安装在 /usr/lib/x86_64-linux-gnu/libmecab.so 中。 mecab-config --libs 返回什么?
  • @Casper 它返回 -L/usr/lib/x86_64-linux-gnu -lmecab -lstdc++
  • 好的,所以我认为您根本不需要导出 MECAB_PATH。没有它它应该可以工作。但如果你这样做,它应该指向/usr/lib/x86_64-linux-gnu/libmecab.so
  • 但我无法启动 Rails 服务器
  • 尝试export MECAB_PATH=/usr/lib/x86_64-linux-gnu/libmecab.so 然后rails server。还是同样的问题?

标签: ruby-on-rails ruby mecab


【解决方案1】:

在 Ununtu 上,mecab 库位于 /usr/lib/x86_64-linux-gnu/libmecab.so。所以这应该有效:

export MECAB_PATH=/usr/lib/x86_64-linux-gnu/libmecab.so
rails server

【讨论】:

  • @Savan 编辑您的.bash_profile 并将其添加到最后一行。它会在您每次登录时为您运行。
  • 实际上,我认为您的 .bash_profile 中已经有了旧的 MECAB_PATH。您按照问题中的描述进行设置。从您的配置文件中删除该行可能就足够了。然后注销并重新登录,看看它是否有效。如果没有,请添加我的答案中的行,这将使其永久化。
猜你喜欢
  • 2021-10-30
  • 1970-01-01
  • 2017-01-01
  • 2017-08-29
  • 2021-07-13
  • 2018-12-21
  • 2016-09-19
  • 2019-09-05
  • 1970-01-01
相关资源
最近更新 更多