关于安装:无法解决Ruby错误(缺少心理问题)

Unable to resolve Ruby error (missing psych)

每当我在服务器上运行Ruby时,都会出现以下错误:

1
2
3
/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,但无济于事。

我不确定我的VPS正在运行哪种类型的系统,但没有apt-get命令。 它确实有yum


我必须不同意@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


我遇到了这个问题,安装libyaml并没有帮助。事实证明,心理需要libyaml-devel。我在centos6上,所以我这样做了:

1
2
3
4
5
6
7
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


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

EPEL密钥或下载
EPEL的RPM

更多信息:

  • CentOS-其他资源
  • Fedora项目:EPEL Howto

还会建议使用yum-plugin-priorities

添加EPEL Yum存储库

1
2
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

1
yum -y install libyaml-devel

1
2
3
4
5
6
7
8
9
10
11
12
13
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)

通过安装libyaml可以解决该问题。以下是最受欢迎发行版的相应软件包:

  • Fedora libyaml
  • Ubuntu和其他基于Debian的libyaml-dev
  • 其他一些像CentOS libyaml-devel

并且还应安装以下组件,以避免将来出现类似问题:

1
ruby-devel libxml2 libxml2-devel libxslt libxslt-devel


以防万一,人们仍然使用RVM中的新autolibs功能修复了该问题,该功能使用自制软件库自动安装依赖项(有关信息,请参见rvm help autolibs。)

rvm reinstall 1.9.3 --autolibs=2


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

1
2
3
4
5
6
7
8
9
10
11
12
13
# 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上购买订阅。

完成后,运行

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

然后libyaml-devel将安装


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

做...

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

为我修复它。

(感谢@Eugene)


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

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