如何修复 CentOS 上的“ruby 安装缺少 psych(用于 YAML 输出)。”?

如何修复 CentOS 上的“ruby 安装缺少 psych(用于 YAML 输出)。”?

rvm在CentOS 5.8上安装后:

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

有一个警告:

$ 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

我跟着一些忠告

$ 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

进而:

$ 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 ruby-1.8.7-p371@global 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 ruby-1.9.3-p286@global pristine.

可惜的是,警告仍然存在:

$ 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

我怎样才能消除警告?

更新:(正在申请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 ruby-1.9.3-p286@global pristine.

答案1

之后rvm pkg install libyaml,通过以下方式重新安装 ruby​​ 1.9.3:

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

信用: https://stackoverflow.com/a/12882906/88597

答案2

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

我已尝试所有方法,这解决了我的问题。

答案3

尝试这个:

rvm get head
rvm reinstall 1.9.3 --movable

答案4

您可以从备用存储库安装 libyaml-devel(我使用了 repoforge.org):

sudo rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
sudo rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
sudo yum install -y libyaml-devel

相关内容