15

每当我在服务器上使用 Ruby 运行某些东西时,都会收到以下错误:

/usr/local/rvm/rubies/ruby-1.9.3-p194/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.

我使用 RVM 将 Ruby 安装到我的 VPS 上。

我已尝试libyaml按照 Stack Overflow 上其他问题中的说明安装软件包,但无济于事。

我不确定我的 VPS 运行的是什么类型的系统,但它没有apt-get命令。它确实有yum……</p>

4

8 回答 8

20

我不得不不同意@JunaidKirkire,因为我认为您正在运行 CentOS 或 Redhat 5,它们默认使用非常旧版本的 Ruby,我认为使用 RVM 是一种更好的方法。我相信您只需要使用以下代码从源代码编译 libyaml:

rvm pkg install libyaml

这将告诉你它正在编译的目录,在我的例子中,它是/Users/ehowe/.rvm/usr

然后,您需要使用以下选项重新编译 Ruby:

rvm reinstall 1.9.3 --with-libyaml-dir=$directory_that_rvm_installed_libyaml_to

所以就我而言,我会这样做:

rvm install 1.9.3 --with-libyaml-dir=/Users/ehowe/.rvm/usr

如果您以 root 身份运行 rvm,它将安装到/usr/local/rvm/usr. 如果您按照建议以用户身份运行它,它将是/home/$user/.rvm/usr

于 2012-10-14T13:58:22.150 回答
12

我遇到了这个问题,安装 libyaml 没有帮助。原来 psych 需要 libyaml-devel。我在centos6上,所以我这样做了:

curl -O http://www6.atomicorp.com/channels/atomic/centos/6/x86_64/RPMS/atomic-release-1.0-14.el6.art.noarch.rpm

sudo  rpm -Uvh atomic-release-1.0-14.el6.art.noarch.rpm

sudo yum install libyaml-devel

rvm reinstall 1.9.3-p194
于 2012-10-16T16:13:03.600 回答
8

在基于 RHEL 的发行版(例如 CentOS 6.x)上,您需要添加另一个 yum 存储库(例如 EPEL),其中包含 libyaml-devel 软件包。

EPEL 的密钥下载EPEL的
RPM

更多信息:

还建议使用yum-plugin-priorities

添加 EPEL Yum 存储库

rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
rpm -Kih http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

通过 yum 安装 libyaml-devel

yum -y install libyaml-devel

套餐

Dependencies Resolved

====================================================================================
 Package                       Arch         Version           Repository       Size
====================================================================================
Installing:
 libyaml-devel                 x86_64       0.1.3-1.el6       epel             84 k
Installing for dependencies:
 libyaml                       x86_64       0.1.3-1.el6       epel             52 k

Transaction Summary
====================================================================================
Install       2 Package(s)
于 2013-04-02T19:56:06.477 回答
3

这个问题可以通过安装解决libyaml。以下是最流行的发行版的相应软件包:

  • 软呢帽libyaml
  • Ubuntu 和其他基于 Debianlibyaml-dev
  • 其他的像 CentOSlibyaml-devel

并且您应该安装以下内容以避免将来出现类似问题:

ruby-devel libxml2 libxml2-devel libxslt libxslt-devel
于 2012-10-19T15:10:15.887 回答
1

万一人们仍然遇到这个问题,我使用 RVM 中的新 autolibs 功能修复了它,它使用您的自制程序库自动安装依赖项(查看rvm help autolibs信息。)

rvm reinstall 1.9.3 --autolibs=2

于 2013-05-01T02:16:25.033 回答
0

您似乎正在使用 Fedora。查看官方 Ruby 网站以获取在 Fedora 上安装的说明。

也试试这个链接http://sraji.wordpress.com/2011/01/25/how-to-install-ruby-on-fedora-14/

于 2012-10-14T12:36:43.390 回答
0

我在 CentOS 6.2 上遇到了同样的 libyaml 问题

正在做...

rvm pkg install libyaml
rvm reinstall 1.9.3 --with-libyaml-dir=/usr/local/rvm/usr

为我修好了。

(感谢@尤金

于 2012-10-29T19:30:29.857 回答
0

确保您的 Redhat 机器具有有效订阅:

# subscription-manager list 

+-------------------------------------------+
    Installed Product Status
+-------------------------------------------+
Product Name:   Red Hat Enterprise Linux Server
Product ID:     69
Version:        7.1
Arch:           x86_64
Status:         Subscribed
Status Details: 
Starts:         06/13/2014
Ends:           06/12/2015

状态必须显示“已订阅”。如果没有,那么通过登录并可能在 https://access.redhat.com/management/consumers购买订阅而受苦。

完成后,运行

# subscription-manager repos --enable rhel-7-server-optional-rpms

然后 libyaml-devel 将安装 OK。

于 2015-04-02T14:39:06.407 回答