Unable to resolve Ruby error (missing psych)
Asked Answered
O

8

18

Whenever I run something with Ruby on my server, I get the following error:

/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.

I installed Ruby using RVM onto my VPS.

I’ve tried installing the package libyaml as per instructed in other issues on Stack Overflow, to no avail.

I’m not sure what type of system my VPS is running, but it doesn’t have the apt-get command. It does have yum

Organicism answered 14/10, 2012 at 12:27 Comment(0)
S
13

I had this problem and installing libyaml didn't help. It turned out that libyaml-devel was needed by psych. I was on centos6 so I did this:

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
Sunward answered 16/10, 2012 at 16:13 Comment(9)
When I run sudo rpm -Uvh atomic-release-1.0-14.el6.art.noarch.rpm, I get: warning: atomic-release-1.0-14.el6.art.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 5ebd2744 error: Failed dependencies: rpmlib(FileDigests) <= 4.6.0-1 is needed by atomic-release-1.0-14.el6.art.noarch rpmlib(PayloadIsXz) <= 5.2-1 is needed by atomic-release-1.0-14.el6.art.noarchOrganicism
What OS? Could you run in a shell: uname -a and post the output here pleaseSunward
If it is Fedora you are running, search rpm.pbone.net for: libyaml-devel fedora rpm - for your version. For example, Fedora 16 x86_64 will take you here rpm.pbone.net/index.php3/stat/4/idpl/17341900/dir/fedora_16/com/….Sunward
Linux server9987 2.6.32-042stab049.6 #1 SMP Mon Feb 6 19:17:43 MSK 2012 i686 i686 i386 GNU/LinuxOrganicism
ok - so its openvz server. Maybe I should not have pointed to the x86_64 repo. sorry. Seems you can get libyaml-devel for i386 in this repo: www6.atomicorp.com/channels/atomic/redhat/6/i386/RPMS/… .Sunward
Running the above commands with that repo instead gives me exactly the same error as before (see above comment). Sorry if I seem like a n00b. Appreciate your guidance.Organicism
You have errors of unresolved dependencies that don't appear on my system - try to install those dependencies it asks for: FileDigests and PayloadIsXz. I have no idea what they are. If succeed, then install libyaml-devel, and then reinstall ruby. I just searched for libyaml-devel openvz and found some a link that suggests: wget packages.sw.be/rpmforge-release/… -- then -- rpm -ivh rpmforge-release-0.5.2-2.el5.rf.i386.rpm -- then -- yum install libyaml-devel ... sorry I can't try any of this out.Sunward
Ran the commands you mentioned at the end of your comment and then reinstalled Ruby: rvm reinstall 1.9.3. Sorted! Thank you very, very much.Organicism
Complete installation process (CentOS 6.3, Ruby) gist.github.com/denispeplin/5011950Hushhush
R
21

I have to disagree with @JunaidKirkire in that I think you are running CentOS or Redhat 5 which uses a a very old version of Ruby by default and I think using RVM is a much better way to go. I believe you will just need to compile libyaml from source with the following:

rvm pkg install libyaml

This will tell you the directory that it is compiling into, in my case, it is /Users/ehowe/.rvm/usr

You then need to recompile Ruby with the following option:

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

So in my case, I would do:

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

If you are running rvm as root, this will get installed into /usr/local/rvm/usr. If you are running it as a user, as is recommended, it would be /home/$user/.rvm/usr

Rein answered 14/10, 2012 at 13:58 Comment(8)
Does this look correct: rvm reinstall 1.9.3 --with-libyaml-dir=/usr/local/rvm/src/yaml-0.1.4. Or would it just be? rvm reinstall 1.9.3 --with-libyaml-dir=/usr/local/rvm?Organicism
After running rvm pkg install libyaml and then rvm reinstall 1.9.3 --with-libyaml-dir=/usr/local/rvm/src/yaml-0.1.4, I am still getting the psych warning.Organicism
You should just use /usr/local/rvm/usr as the path.I tested this and it worked.Rein
Are you absolutely sure you used the correct path? I tested this on a clean CentOS 5.8 install and it worked for me. Can you try it again and send me a gist with the complete output from start to finish?Rein
hastebin.com/mewexusidu.vbs — example of the error immediately after reinstalling at the bottom.Organicism
Thank you! Solved my problem: serverfault.com/questions/442150/…Leucoplast
Sorted my problem on CentOS 6.3 using --with-libyaml-dir=/home/$user/.rvm/usr. Thanks!Schwa
I had same issue on Ubuntu and this solved it for me. Many other suggestions did not work. Thanks!Manson
S
13

I had this problem and installing libyaml didn't help. It turned out that libyaml-devel was needed by psych. I was on centos6 so I did this:

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
Sunward answered 16/10, 2012 at 16:13 Comment(9)
When I run sudo rpm -Uvh atomic-release-1.0-14.el6.art.noarch.rpm, I get: warning: atomic-release-1.0-14.el6.art.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 5ebd2744 error: Failed dependencies: rpmlib(FileDigests) <= 4.6.0-1 is needed by atomic-release-1.0-14.el6.art.noarch rpmlib(PayloadIsXz) <= 5.2-1 is needed by atomic-release-1.0-14.el6.art.noarchOrganicism
What OS? Could you run in a shell: uname -a and post the output here pleaseSunward
If it is Fedora you are running, search rpm.pbone.net for: libyaml-devel fedora rpm - for your version. For example, Fedora 16 x86_64 will take you here rpm.pbone.net/index.php3/stat/4/idpl/17341900/dir/fedora_16/com/….Sunward
Linux server9987 2.6.32-042stab049.6 #1 SMP Mon Feb 6 19:17:43 MSK 2012 i686 i686 i386 GNU/LinuxOrganicism
ok - so its openvz server. Maybe I should not have pointed to the x86_64 repo. sorry. Seems you can get libyaml-devel for i386 in this repo: www6.atomicorp.com/channels/atomic/redhat/6/i386/RPMS/… .Sunward
Running the above commands with that repo instead gives me exactly the same error as before (see above comment). Sorry if I seem like a n00b. Appreciate your guidance.Organicism
You have errors of unresolved dependencies that don't appear on my system - try to install those dependencies it asks for: FileDigests and PayloadIsXz. I have no idea what they are. If succeed, then install libyaml-devel, and then reinstall ruby. I just searched for libyaml-devel openvz and found some a link that suggests: wget packages.sw.be/rpmforge-release/… -- then -- rpm -ivh rpmforge-release-0.5.2-2.el5.rf.i386.rpm -- then -- yum install libyaml-devel ... sorry I can't try any of this out.Sunward
Ran the commands you mentioned at the end of your comment and then reinstalled Ruby: rvm reinstall 1.9.3. Sorted! Thank you very, very much.Organicism
Complete installation process (CentOS 6.3, Ruby) gist.github.com/denispeplin/5011950Hushhush
P
8

On a RHEL based distro such as CentOS 6.x you need to add another yum repository such as EPEL which contain the libyaml-devel package.

Keys for EPEL or download
RPM for EPEL

More info:

Would also suggest the use of yum-plugin-priorities

Add EPEL Yum Repository

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

Install libyaml-devel via yum

yum -y install libyaml-devel

Packages

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)
Philemon answered 2/4, 2013 at 19:56 Comment(0)
P
3

The problem could be solved by installing libyaml. Below are the corresponding packages for the most popular distributions:

  • Fedora libyaml
  • Ubuntu and other Debian based libyaml-dev
  • Some other like CentOS libyaml-devel

and also you should install the following to avoid similar problems in future:

ruby-devel libxml2 libxml2-devel libxslt libxslt-devel
Ponce answered 19/10, 2012 at 15:10 Comment(8)
“No package libyaml available.”Organicism
yes it should solve the problem. and if it does, please tick it as an answer :)Ponce
libyaml installed with rvm pkg, then I re-installed Ruby 1.9.3 with rvm. Still the same problem.Organicism
Tried installing libyaml-devel as per https://mcmap.net/q/246901/-unable-to-resolve-ruby-error-missing-psych. Couldn’t get the install to work, however – and it’s not in Yum.Organicism
try apt-get install pkg_name if its ubuntu, if u cant find, try apt-get search pkg_namePonce
I don’t have the apt-get command. Running Fedora, Centos 5.8.Organicism
If you are using fedora u must use sudo yum install pkg_namePonce
It’s not solved, sorry. See comments in other answers for trouble I’m having with yum.Organicism
L
1

In case people still hit this, I fixed it using the new autolibs feature in RVM, which automatically installs dependencies using your homebrew libraries (check out rvm help autolibs for info.)

rvm reinstall 1.9.3 --autolibs=2

Lorentz answered 1/5, 2013 at 2:16 Comment(0)
B
1

I stumbled on this article when having trouble installing ruby over rbenv on fedora 40. Once I found this official documentation it just worked. As it should! Installing all these packages with is necessary for ruby to build.

$ sudo dnf install -y git-core gcc rust patch make bzip2 openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel perl-FindBin perl-lib perl-File-Compare
Bittner answered 7/5 at 20:26 Comment(0)
K
0

I had this same libyaml issue with CentOS 6.2

Doing...

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

Fixed it for me.

(thanks to @Eugene)

Kiel answered 29/10, 2012 at 19:30 Comment(0)
A
0

Make sure your Redhat machine has a valid subscription:

# 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

Status must say "Subscribed". If not, then suffer through getting a login and maybe purchasing a subscription at https://access.redhat.com/management/consumers.

When that's done, run

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

then libyaml-devel will install OK.

Aracelis answered 2/4, 2015 at 14:39 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.