【问题标题】:Ruby can't find psych.so despite it existingRuby 找不到 psych.so,尽管它存在
【发布时间】:2012-11-19 04:51:20
【问题描述】:

在使用 rvm 安装 Rails 后,我遇到了以下错误:

/afs/andrew.cmu.edu/usr11/kvudata/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/yaml.rb:56:in '<top (required)>':
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.

所以为了获得更多信息,我去了 irb 并尝试要求 'psych':

1.9.3-p327 :001 > require 'psych'
LoadError: libyaml-0.so.2: cannot open shared object file: No such file or directory -/afs/andrew.cmu.edu/usr11/kvudata/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/x86_64-linux/psych.so

但是当我导航到它试图找到psych.so的指定位置时,它存在!

我已经尝试卸载ruby并重新安装以及卸载,从源代码编译libyaml,然后重新安装ruby,但无济于事,错误并没有消失。

【问题讨论】:

  • 我猜:但如果文件存在,它是否具有正确的权限?
  • 尝试再次安装 libyaml?
  • @TarynEast 该文件对我有 rwx 权限,对组/其他人有 r-x 权限,所以我认为这不是问题。
  • 可能文件是针对不同平台构建的,大部分系统都支持双架构,目前最流行的是默认64位,支持32位。

标签: ruby-on-rails ruby installation rvm yaml


【解决方案1】:

这感觉不像是一个“真正的”解决方案,但我能够让事情正常进行。

在我的例子中,libyaml 安装在 /usr/local/lib 中。将该路径添加到我的环境变量中起到了作用(受Shared Libraries 启发)。我将以下内容添加到我的 .bash_profile

LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH

对于像我一样尝试使用 capistrano 进行这项工作的其他访问者,请将其添加到我的 deploy.rb 中:

set :default_environment, {'LD_LIBRARY_PATH' => '/usr/local/lib'}

我期待更多明智的建议。

【讨论】:

  • 谢谢,这成功了!我自己下载并编译了 libyaml 到 ~/lib 中,并将export LD_LIBRARY_PATH=$HOME/lib 添加到我的 .bash_profile
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 2019-09-26
  • 2018-01-07
  • 2015-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多