每当我在服务器上使用 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 上。
我已尝试按照 Stack Overflow 上其他问题中的说明安装软件包
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 没有帮助。事实证明,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
在基于 RHEL 的发行版(例如 CentOS 6.x)上,您需要添加另一个 yum 存储库,例如包含 libyaml-devel 包的 EPEL。
更多信息:
还建议使用 yum-plugin-priorities
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 -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)
这个问题可以通过安装
libyaml
来解决。以下是最流行发行版的相应软件包:
libyaml
libyaml-dev
libyaml-devel
并且您还应该安装以下内容以避免将来出现类似问题:
ruby-devel libxml2 libxml2-devel libxslt libxslt-devel
如果人们仍然遇到这个问题,我使用 RVM 中新的 autolibs 功能修复了它,该功能使用自制库自动安装依赖项(查看
rvm help autolibs
了解信息。)
rvm reinstall 1.9.3 --autolibs=2
您似乎正在使用 Fedora。查看 Ruby 官方网站,了解在 Fedora 上安装的说明。
也尝试此链接http://sraji.wordpress.com/2011/01/25/how-to-install-ruby-on-fedora-14/
我在 CentOS 6.2 上也遇到了同样的 libyaml 问题
正在做...
rvm pkg install libyaml
rvm reinstall 1.9.3 --with-libyaml-dir=/usr/local/rvm/usr
为我修好了。
(感谢@尤金)
确保您的 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 就安装好了。
当我在 fedora 40 上通过 rbenv 安装 ruby 时遇到问题时,偶然发现了这篇文章。一旦我找到了这个官方文档,它就起作用了。理应如此!