How to fix "ruby installation is missing psych (for YAML output)." on CentOS?

19,214

Solution 1

After rvm pkg install libyaml, reinstall ruby 1.9.3 by:

 rvm reinstall 1.9.3 --with-libyaml-dir=/home/rails/.rvm/usr

credit: https://stackoverflow.com/a/12882906/88597

Solution 2

try this:

rvm get head
rvm reinstall 1.9.3 --movable

Solution 3

sudo apt-get install libtool
sudo apt-get install libyaml-dev
rvm reinstall 1.9.3

I've tried all, this solved my problem.

Share:
19,214

Related videos on Youtube

ohho
Author by

ohho

If you happen to drop by Hong Kong, let's have a beer together ;-)

Updated on September 18, 2022

Comments

  • ohho
    ohho 8 months

    After rvm installation on CentOS 5.8:

    [[email protected] ~]$ rvm -v
    rvm 1.16.17
    [[email protected] ~]$ which ruby
    ~/.rvm/rubies/ruby-1.9.3-p286/bin/ruby
    [[email protected] ~]$ ruby -v
    ruby 1.9.3p286 (2012-10-12 revision 37165) [i686-linux]
    [[email protected] ~]$ which gem
    ~/.rvm/rubies/ruby-1.9.3-p286/bin/gem
    

    there is a warning:

    $ gem -v
    /home/rails/.rvm/rubies/ruby-1.9.3-p286/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.
    1.8.24
    

    I followed some advice:

    $ rvm pkg install libyaml
    Fetching yaml-0.1.4.tar.gz to /home/rails/.rvm/archives
    Extracting yaml-0.1.4.tar.gz to /home/rails/.rvm/src
    Prepare yaml in /home/rails/.rvm/src/yaml-0.1.4.
    Configuring yaml in /home/rails/.rvm/src/yaml-0.1.4.
    Compiling yaml in /home/rails/.rvm/src/yaml-0.1.4.
    Installing yaml to /home/rails/.rvm/usr
    Please note that it's required to reinstall all rubies:
        rvm reinstall all --force
    

    and then:

    $ rvm reinstall all --force
    Removing /home/rails/.rvm/src/ruby-1.8.7-p371...
    Removing /home/rails/.rvm/rubies/ruby-1.8.7-p371...
    No binary rubies available for: centos/5.8/i386/ruby-1.8.7-p371.
    Continuing with compilation. Please read 'rvm mount' to get more information on binary rubies.
    Installing Ruby from source to: /home/rails/.rvm/rubies/ruby-1.8.7-p371, this may take a while depending on your cpu(s)...
    ruby-1.8.7-p371 - #downloading ruby-1.8.7-p371, this may take a while depending on your connection...
    ruby-1.8.7-p371 - #extracting ruby-1.8.7-p371 to /home/rails/.rvm/src/ruby-1.8.7-p371
    ruby-1.8.7-p371 - #extracted to /home/rails/.rvm/src/ruby-1.8.7-p371
    Applying patch /home/rails/.rvm/patches/ruby/1.8.7/stdout-rouge-fix.patch
    Applying patch /home/rails/.rvm/patches/ruby/1.8.7/no_sslv2.diff
    ruby-1.8.7-p371 - #configuring
    ruby-1.8.7-p371 - #compiling
    ruby-1.8.7-p371 - #installing 
    Removing old Rubygems files...
    Installing rubygems-1.8.24 for ruby-1.8.7-p371 ...
    Installation of rubygems completed successfully.
    Saving wrappers to '/home/rails/.rvm/bin'.
    ruby-1.8.7-p371 - #adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
    ruby-1.8.7-p371 - #importing default gemsets (/home/rails/.rvm/gemsets/)
    Install of ruby-1.8.7-p371 - #complete 
    Please be aware that you just installed a ruby that requires 2 patches just to be compiled on up to date linux system.
    This may have known and unaccounted for security vulnerabilities.
    Please consider upgrading to Ruby 1.9.3-286 which will have all of the latest security patches.
    Making gemset ruby-1.8.7-p371 pristine.
    Making gemset [email protected] pristine.
    Removing /home/rails/.rvm/src/ruby-1.9.3-p286...
    Removing /home/rails/.rvm/rubies/ruby-1.9.3-p286...
    No binary rubies available for: centos/5.8/i386/ruby-1.9.3-p286.
    Continuing with compilation. Please read 'rvm mount' to get more information on binary rubies.
    Installing Ruby from source to: /home/rails/.rvm/rubies/ruby-1.9.3-p286, this may take a while depending on your cpu(s)...
    ruby-1.9.3-p286 - #downloading ruby-1.9.3-p286, this may take a while depending on your connection...
    ruby-1.9.3-p286 - #extracting ruby-1.9.3-p286 to /home/rails/.rvm/src/ruby-1.9.3-p286
    ruby-1.9.3-p286 - #extracted to /home/rails/.rvm/src/ruby-1.9.3-p286
    ruby-1.9.3-p286 - #configuring
    ruby-1.9.3-p286 - #compiling
    ruby-1.9.3-p286 - #installing 
    Removing old Rubygems files...
    Installing rubygems-1.8.24 for ruby-1.9.3-p286 ...
    Installation of rubygems completed successfully.
    Saving wrappers to '/home/rails/.rvm/bin'.
    ruby-1.9.3-p286 - #adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
    ruby-1.9.3-p286 - #importing default gemsets (/home/rails/.rvm/gemsets/)
    Install of ruby-1.9.3-p286 - #complete 
    Making gemset ruby-1.9.3-p286 pristine.
    Making gemset [email protected] pristine.
    

    Too bad, the warning is still there:

    $ gem -v
    /home/rails/.rvm/rubies/ruby-1.9.3-p286/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.
    1.8.24
    

    How can I get rid of the warning?

    UPDATE: (applying rvm reinstall 1.9.3 --movable)

    $ rvm reinstall 1.9.3 --movable
    Removing /home/rails/.rvm/src/ruby-1.9.3-p286...
    Removing /home/rails/.rvm/rubies/ruby-1.9.3-p286...
    Fetching yaml-0.1.4.tar.gz to /home/rails/.rvm/archives
    Extracting yaml-0.1.4.tar.gz to /home/rails/.rvm/src
    Prepare yaml in /home/rails/.rvm/src/yaml-0.1.4.
    Configuring yaml in /home/rails/.rvm/src/yaml-0.1.4.
    Compiling yaml in /home/rails/.rvm/src/yaml-0.1.4.
    Installing yaml to /home/rails/.rvm/rubies/ruby-1.9.3-p286
    Installing Ruby from source to: /home/rails/.rvm/rubies/ruby-1.9.3-p286, this may take a while depending on your cpu(s)...
    ruby-1.9.3-p286 - #downloading ruby-1.9.3-p286, this may take a while depending on your connection...
    ruby-1.9.3-p286 - #extracting ruby-1.9.3-p286 to /home/rails/.rvm/src/ruby-1.9.3-p286
    ruby-1.9.3-p286 - #extracted to /home/rails/.rvm/src/ruby-1.9.3-p286
    Applying patch /home/rails/.rvm/patches/ruby/1.9.3/ruby-multilib.patch
    Error running 'patch -F 25 -p1 -N -f -i /home/rails/.rvm/patches/ruby/1.9.3/ruby-multilib.patch', please read /home/rails/.rvm/log/ruby-1.9.3-p286/patch.apply.ruby-multilib.log
    There has been an error applying the specified patches. Halting the installation.
    Making gemset ruby-1.9.3-p286 pristine.
    Making gemset [email protected] pristine.
    
  • ohho
    ohho over 10 years
    "There has been an error applying the specified patches. Halting the installation." (See UPDATE in question)
  • ohho
    ohho over 10 years
    I am installing rubies via rvm at user level, not system-wide.
  • Siwei
    Siwei over 10 years
    you have to make sure your OS has libyaml installed, no matter if the RVM is installed at user level or system-wide. and, if you don't have sudo access, just modify the --prefix parameter, and then install rvm with additional parameters.
  • ohho
    ohho over 10 years
    libyaml is installed by rvm pkg install libyaml, as shown in question.
  • Siwei
    Siwei over 10 years
    I want to say that you have to install the 'libyaml' by yum or make, but not rvm pkg install.
  • ohho
    ohho over 10 years
    after installing libyaml and then rvm reinstall 1.9.3, the warning is still there.
  • mpapis
    mpapis over 10 years
    updated my answer - you need to get newer rvm first
  • voretaq7
    voretaq7 over 10 years
    based on the error message you're getting (To eliminate this warning, please install libyaml and reinstall your ruby.) this should fix your problem. My personal experience with rvm has been that it's a world of pain and suffering though so your mileage may vary :-)
  • rrrhys
    rrrhys about 10 years
    Finally, thankyou! I've "rvm pkg install libyaml; rvm reinstall 1.9.3"'d a hundred times.