how to solve "ruby installation is missing psych" error?

Ruby on-RailsRubyMacosRvm

Ruby on-Rails Problem Overview


I used rvm to install ruby 1.9.3. even though it was successfully installed, it complained about libyaml. and now every time i wanna install a gem (say rails) this warning shows up:

It seems your ruby installation is missing psych (for YAML output). To eliminate this warning, please install libyaml and reinstall your ruby.

I use Mac os X 10.7 (Lion).

Ruby on-Rails Solutions


Solution 1 - Ruby on-Rails

In my case

rvm pkg install libyaml

and

rvm reinstall ruby-1.9.3-p125

solved the problem.

For people using Ubuntu, make sure that libtool is installed prior to the steps above:

sudo apt-get install libtool

For macOS users (with homebrew):

rm -rf /usr/local/lib/ruby/gems/ && brew reinstall ruby

Solution 2 - Ruby on-Rails

for ubuntu and rvm

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

worked

Solution 3 - Ruby on-Rails

brew install libyaml
rvm reinstall 1.9.3

Is what worked for me (on Snow Leopard).

Solution 4 - Ruby on-Rails

If not using rvm, but rather you are building and installing ruby 1.9.3 from scratch — for example, you're managing your ruby versions with rbenv — you must install libyaml first. Get it from http://pyyaml.org/; at the moment, the file you want is http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz. Open the tarball and cd into the resulting folder. Then:

./configure --prefix=/usr/local
make
sudo make install

You are now ready to build ruby. Download ruby from http://ftp.ruby-lang.org/pub/ruby/. Open the tarball and cd into the resulting folder. Now:

./configure --prefix=/wherever/you/want/it/to/go
make
make install

(Or possibly sudo make install, depending on where you're putting it.) If using rbenv, you'll know it has worked if you switch to rbenv global 1.9.3-p194 (or whatever your version is called) and gem --version works without a warning. That worked for me on Mac OS X 10.6.8. (Update: I just tried this on Mac OS X 10.8.1 and it seems to have worked fine there too.)

Solution 5 - Ruby on-Rails

In my case the solution was to add the psych gem to the Gemfile.

Solution 6 - Ruby on-Rails

I had this problem. libyaml wouldn't compile. It turns out I was missing libtool.

yum install libtool
yum install libyaml (or rvm pkg install libyaml)
rvm reinstall 1.9.3

That solved my problem.

Solution 7 - Ruby on-Rails

If you have installed ruby on macOS with homebrew, try this solution.

rm -rf /usr/local/lib/ruby/gems/ && brew reinstall ruby

Note that this will get rid of all installed gems. Best save a list of installed gems with gem list before you run this.

Solution 8 - Ruby on-Rails

$ brew doctor
$ brew link libyaml

Solution 9 - Ruby on-Rails

I got this fixed finally. The issue was that even though I installed libyaml with brew, it was never linked. I had to remove a conflicting header file and then brew link libyaml.

Solution 10 - Ruby on-Rails

Installing ruby with rvm for mac osx, use autolibs to install libyaml and first uninstalling libyaml helps.

This worked for me:

brew uninstall libyaml
rvm autolibs enable
rvm reinstall ruby-2.1.1

Solution 11 - Ruby on-Rails

I had the same problem (Lion 10.7.4), and fixed it by upgrading rvm then reinstalling ruby

  1. upgrade rvm https://rvm.io//rvm/install/

    curl -L https://get.rvm.io | bash -s stable --ruby

  2. Then use rvm to reinstall ruby 1.9.3 (which had been previously installed with the earlier version of rvm)

    rvm reinstall 1.9.3

Solution 12 - Ruby on-Rails

I reinstalled ruby 1.9.3 with libyaml support:

rvm reinstall 1.9.3 --with-libyaml

I made sure that I would use 1.9.3 before installing psych:

rvm use 1.9.3

I installed psych:

gem install psych

Solution 13 - Ruby on-Rails

sudo port install libyaml # or brew install libyaml
rvm get latest
rvm pkg install iconv
rvm pkg install openssl
rvm reinstall 1.9.3 --with-openssl-dir=~/.rvm/usr --with-iconv-dir=~/.rvm/usr

curl -OL http://rubyforge.org/frs/download.php/75414/linecache19-0.5.13.gem
curl -OL http://rubyforge.org/frs/download.php/75415/ruby-debug-base19-0.11.26.gem

gem install linecache19-0.5.13.gem ruby-debug-base19-0.11.26.gem -- --with-ruby-include=$rvm_path/src/ruby-1.9.3-p125/
gem install ruby-debug19

rvm reload

reload your .rvmrc (cd out, cd in)

bundle

Solution 14 - Ruby on-Rails

None of these answers worked for me.

I found my answer on https://github.com/sstephenson/ruby-build/issues/119 I am on Centos 6.3 Virtual Machine.

YOU MUST install libyaml before you install ruby. IF you ALREADY installed ruby you must get rid of the files before compiling source again!!!

# cd to your ruby source location
rm -rf /usr/local/lib/ruby # clean out ruby files
./configure
make && make install
gem -v # check if error is fixed

Solution 15 - Ruby on-Rails

I built the libyaml files separately from source and installed them in /usr/local/lib. The ruby that RVM created still did not see them, and rather than muck with the makefile or the system LD_LIBRARY_PATH I just copied /usr/local/lib/libyaml* to ~/.rvm/rubies/ruby-1.9.3-p327/lib/

That quieted the warning.

Solution 16 - Ruby on-Rails

This is what worked for me on Ubuntu:

  • installing libyaml-dev (sudo apt-get install libyaml-dev)
  • installing rvm + ruby 1.9.3

Solution 17 - Ruby on-Rails

I tried all of these answers and still wasn't able to get it working. I installed libyaml with homebrew and then installed Ruby 1.9.3 and 2.0.0 with rvm. Each time it complained that I was missing psych (libyaml). But trying to install libyaml told me it was already installed. Rinse, repeat. Urgh.

Finally, what I did was to uninstall libyaml. Then I enabled autolibs in rvm, which (at least in OSX) allows rvm to install and manage dependencies more directly. Now when I installed the Rubies, rvm was able to install libyaml and recognize that it was in the right spot.

So if you've tried all of the other options, try actually removing libyaml and then installing your Rubies. It's count-intuitive from the error messages, but that's what finally worked for me.

Solution 18 - Ruby on-Rails

I had the same problem (Cent OS 5.7), none of the above solutions worked to me.

// My console warning
/usr/local/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.

After doing several re-installs, I realized it's looking for yaml in ruby version of 1.9.1 instead of 1.9.3. So i downgraded

// obviously after installing `libyaml`
rvm remove all
rvm install 1.9.1
rvm use 1.9.1 --default

And it worked 8D!

Solution 19 - Ruby on-Rails

On CentOS 6.3 none of the above worked. However installing libyaml from source before installing ruby resolved the problem.

$ wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
$ tar xzvf yaml-0.1.4.tar.gz
$ cd yaml-0.1.4
$ ./configure --prefix=/usr/local
$ make
$ sudo make install

and then

rvm install 1.9.3
gem install rails

Solution 20 - Ruby on-Rails

I'm using

> rvm 1.16.20 (version) by Wayne E. Seguin <[email protected]>, > Michal Papis <[email protected]> [https://rvm.io/]

and also got the following error during bundle install

> .rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/yaml.rb:56:in `': It seems > your ruby installation is missing psych (for YAML output). To > eliminate this warning, please install libyaml and reinstall your > ruby.

Here are three different ways to resolve this error w/o having to gem install psych

  1. export LD_LIBRARY_PATH=/usr/local/lib

  2. alter /etc/ld.so.conf > sudo su - root > echo /usr/local/lib64 >> /etc/ld.so.conf > echo /usr/local/lib >> /etc/ld.so.conf > ldconfig

  3. Fix rvm ruby 1.9.3 installation via > patch .rvm/scripts/functions/manage/ruby < ruby-1.9.3-LDFLAGS.patch > rvm uninstall ruby-1.9.3-p194 > export LDFLAGS='-L /usr/local/lib64 -L/usr/local/lib -Xlinker -R/usr/local/lib64 -Xlinker -R/usr/local/lib' > rvm install ruby-1.9.3-p194 --disable-binary > grep configure_args .rvm/src/ruby-1.9.3-p194/config.log # to confirm LDFLAG

    $ diff  -c .rvm/{src/rvm/,}scripts/functions/manage/ruby
    *** .rvm/src/rvm/scripts/functions/manage/ruby	2012-11-10 06:28:14.000000000 +0000
    --- .rvm/scripts/functions/manage/ruby	2013-01-25 17:18:00.000000000 +0000


    *** 106,123 **** # when relative is in effect libyaml is installed in ruby itself so it will be moved with ruby prefix_path="${rvm_rubies_path}/${rvm_ruby_string}" libyaml

    ! __rvm_update_configure_env CFLAGS="-I${rvm_rubies_path}/${rvm_ruby_string}/include" ! __rvm_update_configure_env LDFLAGS="-L${rvm_rubies_path}/${rvm_ruby_string}/lib" if [[ -d "${rvm_rubies_path}/${rvm_ruby_string}/lib64" ]] ! then __rvm_update_configure_env LDFLAGS="-L${rvm_rubies_path}/${rvm_ruby_string}/lib64" fi else libyaml_installed || libyaml # Installs libyaml

    ! __rvm_update_configure_env CFLAGS="-I${rvm_path}/usr/include" ! __rvm_update_configure_env LDFLAGS="-L${rvm_path}/usr/lib" if [[ -d "${rvm_path}/usr/lib64" ]] ! then __rvm_update_configure_env LDFLAGS="-L${rvm_path}/usr/lib64" fi fi

    --- 106,123 ---- # when relative is in effect libyaml is installed in ruby itself so it will be moved with ruby prefix_path="${rvm_rubies_path}/${rvm_ruby_string}" libyaml

    ! __rvm_update_configure_env CFLAGS="-I${rvm_rubies_path}/${rvm_ruby_string}/include ${CFLAGS}" ! __rvm_update_configure_env LDFLAGS="-L${rvm_rubies_path}/${rvm_ruby_string}/lib ${LDFLAGS}" if [[ -d "${rvm_rubies_path}/${rvm_ruby_string}/lib64" ]] ! then __rvm_update_configure_env LDFLAGS="-L${rvm_rubies_path}/${rvm_ruby_string}/lib64 ${LDFLAGS}" fi else libyaml_installed || libyaml # Installs libyaml

    ! __rvm_update_configure_env CFLAGS="-I${rvm_path}/usr/include ${CFLAGS}" ! __rvm_update_configure_env LDFLAGS="-L${rvm_path}/usr/lib ${LDFLAGS}" if [[ -d "${rvm_path}/usr/lib64" ]] ! then __rvm_update_configure_env LDFLAGS="-L${rvm_path}/usr/lib64 ${LDFLAGS}" fi fi

Solution 21 - Ruby on-Rails

I also struggled with the same failures with rvm install ruby-2.0.0 for many, MANY hours. I had tried all the different methods to install libyaml; wget source, yum and rvm. I also tried all of the different approaches listed in similar threads. Because I tried all the different methods, I had multiple installations and locations of libyaml.

RVM is perfectly capable of installing the necessary dependencies in ~/.rvm. Simply removing the libyaml files from non-RVM install fixed this issue for me:

sudo rm /usr/local/lib/libyaml*.*

rvm reinstall ruby-2.0.0-p0

Works!

Solution 22 - Ruby on-Rails

NON-RVM ruby install method.

% uname -a
Linux localhost.localdomain 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013  x86_64 x86_64 x86_64 GNU/Linux

% cat /etc/redhat-release
CentOS release 6.4 (Final)

% wget http://apt.sw.be/redhat/el5/en/x86_64/dag/RPMS/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
% sudo rpm -K rpmforge-release-0.3.6-1.el5.rf.*.rpm"
% sudo rpm -ivh rpmforge-release-0.3.6-1.el5.rf.*.rpm"

DISABLE rpmforge by editing this file and set enabled=0 % sudo vi /etc/yum.repos.d/rpmforge.repo

% grep rpmforge ~/.aliases
alias rpmforge "sudo yum --disablerepo='*' --enablerepo='rpmforge'"

% rpmforge install libyaml libyaml-devel

% sudo yum list installed | grep libyaml
libyaml.x86_64          0.1.4-1.el5.rf  @rpmforge                               
libyaml-devel.x86_64    0.1.4-1.el5.rf  @rpmforge  

The libyaml-devel is the key.

% tar zxvf ruby-1.9.3-p448.tar.gz
% cd ruby-1.9.3-p448
% ./configure -prefix=$HOME/ruby-1.9.3-p448
% make ; make install
% cd $HOME; ln -s ./ruby-1.9.3-p448 ruby

Update your path and source .cshrc

% echo $PATH
/home/francis/ruby/bin:/usr/sbin:/home/francis/bin:/home/francis/jdk1.7.0_25/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin

% which ruby
/home/francis/ruby/bin/ruby

% gem update --system

Set your GEM_HOME in .cshrc and source

% echo $GEM_HOME
% /home/francis/ruby/lib/ruby/gems

% gem install mysql2 pg ruby-debug-ide rails capistrano capistrano-ext passenger

Solution 23 - Ruby on-Rails

If you are building ruby from source (I built 1.9.3 on Fedora 20), you will need this before you do the configure/make to build ruby:

yum install libyaml-devel

(in addition to yum install libyaml.) Similar to Francis's answer using rpmforge above.

Solution 24 - Ruby on-Rails

I was having this error and noticed I had different versions of Ruby installed with HomeBrew, along with many gems that I no longer used. So did a full clean up like this:

$ brew remove --force ruby # remove all versions installed
$ sudo rm -rf /usr/local/lib/ruby # remove all gems and leftover files
$ brew install ruby
$ gem install bundler
$ bundle install

If you don't use a Gemfile, make sure you know which gems to reinstall.

Solution 25 - Ruby on-Rails

In my case all I needed to do was

rm -rf /usr/local/lib/ruby/gems/2.4.0/gems/psych-2.2.4
rm -rf /usr/local/lib/ruby/gems/2.4.0/extensions/x86_64-darwin-16/2.4.0/psych-2.2.4

Now, FWIW, gem list includes

psych (2.2.4, default: 2.2.2)

Solution 26 - Ruby on-Rails

  • Ubuntu
  • Using RVM
  • Reason: Conflicting Psych gem versions between ruby 2.4.4 and ruby 2.5.1

I spent a few hours trying to get my error to go away and none of the replies here suited my case, so I thought I would post how I solved it...

In my case when I ran gem list | grep psych, I had the following output: psych(default: 3.1.0, default: 3.0.2).

Apparently since version 2.5.0, ruby depends on the newer version of psych (3.1.0) and having both set as default was messing up everything. Notice that I never ended up finding out why those were both set as default - I completely wiped out rvm and ruby versions from my computer due to this.

So in order to remove the older version (3.0.2) from being set as default, head to ~/.rvm/gems/ruby-x.x.x@global/specifications/default. If you run ls | grep psych it will return both versions of the gem here. If you want to maintain 3.1.0 as default just run mv psych-3.0.2.gemspec ../ and then try running gemlist to make sure it is listing only one version as default now...

tl;dr cd /.rvm/gems/ruby-x.x.x@global/specifications/default mv psych-3.0.2 ../

Hope this helps someone!

Solution 27 - Ruby on-Rails

On Snow Leopard, the solution by Catharz did not work for me. This solution, however, did:

brew install libyaml
rvm get head
rvm reinstall 1.9.3  --with-gcc=clang

(The rvm reinstall gave me a warning about clang not having the option "--with-libyaml" but it solved the error message regardless.)

Solution 28 - Ruby on-Rails

This worked for me at least on Ubuntu 10.04

$ sudo apt-get install libtool

$ rvm reinstall 1.9.3

Solution 29 - Ruby on-Rails

On Solaris:

# sudo crle -64 -l /usr/local/lib

to add /usr/local/lib to the shared library search path (see man crle)

Solution 30 - Ruby on-Rails

When I switch from 64 bit to 32 bit on Snow Leopard 10.6.8, I had reinstalled ruby (used rvm) to run on 32bit and met the same problem. So I just 'cleanup' all thing that cached by rvm before and problems solved. Hope this tip can help someone.

> rvm cleanup all > > rvm install ruby_version_here //(This way, rvm will also re-download newest yaml).

BTW, if you still meet this problem, I think you can try:

> gem install psych

Solution 31 - Ruby on-Rails

For those with Mountain Lion and RVM version >= 1.18.x

RVM ships with this new tool that is used as a flag when installing ruby versions. It's called autolibs.

I got rid of this psych problem by doing the following:

rvm reinstall ruby-1.9.3-p392 --autolibs=3

Read the help text BEFORE by doing:

rvm help autolibs

Cool.

Solution 32 - Ruby on-Rails

I had similar problem after OSX upgrade, this what solves my problem:

   brew rm libyaml
   brew cleanup libyaml
   brew install libyaml
   brew rm openssl
   brew cleanup openssl
   brew install openssl
   rvm remove *your version*
   rvm install *latest version*

found here

Solution 33 - Ruby on-Rails

rvm pkg install libyaml
$LIBYAML_PATH will be the path where RVM installs the upated yaml
rvm get stable
rvm reinstall all --force --with-libyaml-dir=$LIBYAML_PATH

Solution 34 - Ruby on-Rails

I've been facing the same issue. I'm using MacPorts with rbenv installed!

What I did:

  1. sudo port install ruby26
  2. sudo port select --set ruby ruby26 (this effectively takes macOS default ruby installation out of game)
  3. removed all gems from ~/.gem/ruby/2.6.0/gems which caused errors while invoking the gem command
  4. run gem pristine commands for all gems listed by gem list (the exact commands are part of the warnings)
  5. finally gem update --user-install

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPouyaView Question on Stackoverflow
Solution 1 - Ruby on-RailspeterpengnzView Answer on Stackoverflow
Solution 2 - Ruby on-RailsGizmomogwaiView Answer on Stackoverflow
Solution 3 - Ruby on-RailsCatharzView Answer on Stackoverflow
Solution 4 - Ruby on-RailsmattView Answer on Stackoverflow
Solution 5 - Ruby on-RailsVanuanView Answer on Stackoverflow
Solution 6 - Ruby on-RailsAKWFView Answer on Stackoverflow
Solution 7 - Ruby on-RailsorkodenView Answer on Stackoverflow
Solution 8 - Ruby on-RailsLaneView Answer on Stackoverflow
Solution 9 - Ruby on-RailsMichaelView Answer on Stackoverflow
Solution 10 - Ruby on-Railsuser33302View Answer on Stackoverflow
Solution 11 - Ruby on-Railsuser761552View Answer on Stackoverflow
Solution 12 - Ruby on-RailsadamoView Answer on Stackoverflow
Solution 13 - Ruby on-RailsvysogotView Answer on Stackoverflow
Solution 14 - Ruby on-RailschemoishView Answer on Stackoverflow
Solution 15 - Ruby on-RailsDave HildebrandtView Answer on Stackoverflow
Solution 16 - Ruby on-RailsLucView Answer on Stackoverflow
Solution 17 - Ruby on-RailsBob RalianView Answer on Stackoverflow
Solution 18 - Ruby on-RailsIshView Answer on Stackoverflow
Solution 19 - Ruby on-RailsDmitry G.View Answer on Stackoverflow
Solution 20 - Ruby on-RailsvictorvView Answer on Stackoverflow
Solution 21 - Ruby on-RailsAndrejs R.View Answer on Stackoverflow
Solution 22 - Ruby on-RailsFrancis TrujilloView Answer on Stackoverflow
Solution 23 - Ruby on-RailsDon LawView Answer on Stackoverflow
Solution 24 - Ruby on-RailsEneko AlonsoView Answer on Stackoverflow
Solution 25 - Ruby on-RailsoromeView Answer on Stackoverflow
Solution 26 - Ruby on-RailsvicentesantosView Answer on Stackoverflow
Solution 27 - Ruby on-RailsmrrenaView Answer on Stackoverflow
Solution 28 - Ruby on-RailsAbhay PSView Answer on Stackoverflow
Solution 29 - Ruby on-RailsedxView Answer on Stackoverflow
Solution 30 - Ruby on-RailsanguuView Answer on Stackoverflow
Solution 31 - Ruby on-RailsAlan AndradeView Answer on Stackoverflow
Solution 32 - Ruby on-RailsB1zView Answer on Stackoverflow
Solution 33 - Ruby on-RailshamdiakoguzView Answer on Stackoverflow
Solution 34 - Ruby on-RailsPetr HadrabaView Answer on Stackoverflow