【问题标题】:Unable to resolve Ruby error (missing psych)无法解决 Ruby 错误(缺少心理)
【发布时间】:2012-10-04 15:12:57
【问题描述】:

每当我在服务器上使用 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...

【问题讨论】:

    标签: ruby installation vps


    【解决方案1】:

    确保您的 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。

    【讨论】:

      【解决方案2】:

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

      rvm reinstall 1.9.3 --autolibs=2

      【讨论】:

        【解决方案3】:

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

        Keys 用于 EPEL 或 download
        RPM 用于 EPEL

        更多信息:

        还建议使用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)
        

        【讨论】:

          【解决方案4】:

          我在使用 CentOS 6.2 时遇到了同样的 libyaml 问题

          正在做...

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

          为我修好了。

          (感谢@Eugene)

          【讨论】:

            【解决方案5】:

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

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

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

            ruby-devel libxml2 libxml2-devel libxslt libxslt-devel
            

            【讨论】:

            • “没有可用的软件包 libyaml。”
            • 是的,它应该可以解决问题。如果是,请勾选它作为答案:)
            • libyaml 安装了rvm pkg,然后我重新安装了 Ruby 1.9.3 和rvm。还是同样的问题。
            • 尝试按照stackoverflow.com/a/12919013/1082754 安装libyaml-devel。然而,无法让安装工作——而且它不在 Yum 中。
            • 尝试 apt-get install pkg_name 如果是 ubuntu,如果找不到,尝试 apt-get search pkg_name
            【解决方案6】:

            我遇到了这个问题,安装 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
            

            【讨论】:

            • 当我运行 sudo rpm -Uvh atomic-release-1.0-14.el6.art.noarch.rpm 时,我得到:warning: atomic-release-1.0-14.el6.art.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 5ebd2744 error: Failed dependencies: rpmlib(FileDigests) &lt;= 4.6.0-1 is needed by atomic-release-1.0-14.el6.art.noarch rpmlib(PayloadIsXz) &lt;= 5.2-1 is needed by atomic-release-1.0-14.el6.art.noarch
            • 什么操作系统?您能否在 shell 中运行:uname -a 并在此处发布输出
            • 如果您运行的是 Fedora,请在 rpm.pbone.net 中搜索:libyaml-devel fedora rpm - 以获取您的版本。例如,Fedora 16 x86_64 会带你到这里rpm.pbone.net/index.php3/stat/4/idpl/17341900/dir/fedora_16/com/…。
            • Linux server9987 2.6.32-042stab049.6 #1 SMP Mon Feb 6 19:17:43 MSK 2012 i686 i686 i386 GNU/Linux
            • 好的 - 所以它的 openvz 服务器。也许我不应该指向 x86_64 存储库。对不起。似乎你可以在这个 repo 中获得 i386 的 libyaml-devel:www6.atomicorp.com/channels/atomic/redhat/6/i386/RPMS/…。
            【解决方案7】:

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

            【讨论】:

            • 这看起来是否正确:rvm reinstall 1.9.3 --with-libyaml-dir=/usr/local/rvm/src/yaml-0.1.4。或者它只是? rvm reinstall 1.9.3 --with-libyaml-dir=/usr/local/rvm?
            • 在运行rvm pkg install libyaml 和rvm reinstall 1.9.3 --with-libyaml-dir=/usr/local/rvm/src/yaml-0.1.4 之后,我仍然收到psych 警告。
            • 你应该只使用/usr/local/rvm/usr 作为路径。我对此进行了测试并且它有效。
            • 您确定您使用了正确的路径吗?我在干净的 CentOS 5.8 安装上对此进行了测试,它对我有用。你能再试一次,然后把从头到尾的完整输出发给我吗?
            • hastebin.com/mewexusidu.vbs — 底部重新安装后立即出现的错误示例。
            【解决方案8】:

            您似乎正在开发 Fedora。有关在 Fedora 上安装的说明,请查看官方 Ruby 网站。

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

            【讨论】:

            • 如何安装 ruby​​gems?
            • @OliverJosephAsh:安装 Ruby 时会默认安装 Rubygems。
            • ruby -v // ruby​​ 1.8.5 (2006-08-25) [i386-linux]。 gem // bash: gem: command not found
            • @OliverJosephAsh 试试这个链接technetra.com/2009/04/22/… 按照上面的说明,你会没事的。祝你好运。
            • 无论如何我可以找出适用于 ruby​​ 1.8.5 的最新版本的 ruby​​gems 吗?或者我可以让 yum 以任何方式安装 1.9.3 吗?
            猜你喜欢
            • 2012-03-15
            • 1970-01-01
            • 1970-01-01
            • 2011-09-04
            • 2021-05-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-09-01
            相关资源
            最近更新 更多