如何解决“ruby安装失踪心理”错误?

我用rvm来安装ruby 1.9.3。 即使它成功安装,它也抱怨libyaml。 现在每次我想安装一个gem(说铁轨)这个警告显示:

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

我使用Mac OS X 10.7(Lion)。

在我的情况

 rvm pkg install libyaml 

 rvm reinstall ruby-1.9.3-p125 

解决了这个问题。

对于使用Ubuntu的用户,请确保在上述步骤之前安装了libtool

 sudo apt-get install libtool 

对于macOS用户(使用自制软件):

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

为Ubuntu和RVM

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

工作

如果不是使用rvm,而是从头开始构build和安装ruby 1.9.3 – 例如,您正在使用rbenvpipe理您的ruby版本 – 您必须首先安装libyaml。 从http://pyyaml.org/获取它;; 目前,你想要的文件是http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz 。 打开压缩包并将其放入生成的文件夹中。 然后:

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

你现在准备build立ruby。 从http://ftp.ruby-lang.org/pub/ruby/下载ruby。; 打开压缩包并将其放入生成的文件夹中。 现在:

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

(或者sudo make install ,取决于你在哪里放置它。)如果使用rbenv,如果你切换到rbenv global 1.9.3-p194 (或者你的版本被称为)和gem --version没有警告。 这在Mac OS X 10.6.8上适用于我。 ( 更新 :我只是在Mac OS X 10.8.1上试过这个,而且它在那里也工作得很好。)

 brew install libyaml rvm reinstall 1.9.3 

是什么对我(雪豹)有效。

在我的情况下,解决scheme是将gem添加到Gemfile中。

我有这个问题。 libyaml不会编译。 原来我错过了libtool。

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

这解决了我的问题。

 $ brew doctor $ brew link libyaml 

我终于搞定了。 问题是,即使我用brew安装了libyaml,它从来没有联系过。 我不得不删除一个冲突的头文件,然后brew link libyaml

使用rvm for mac osx安装ruby,使用autolibs来安装libyaml,并首先卸载libyaml帮助。

这对我工作:

 brew uninstall libyaml rvm autolibs enable rvm reinstall ruby-2.1.1 

如果你用自制软件在macOS上安装了ruby, 试试这个解决scheme 。

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

请注意,这将摆脱所有安装的gem。 在运行这个之前,最好用gem list保存已安装的gemgem list

 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 

重新加载你的.rvmrc(cd出,cd中)

 bundle 

我有同样的问题(狮子10.7.4),并通过升级rvm然后重新安装ruby来解决它

1)升级rvm https://rvm.io//rvm/install/

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

2)然后使用rvm重新安装ruby1.9.3(之前已经安装了早期版本的rvm)

 rvm reinstall 1.9.3 

这些答案都没有为我工作。

我在https://github.com/sstephenson/ruby-build/issues/119find我的答案我在Centos 6.3虚拟机上。

你必须在安装ruby之前安装libyaml。 如果你已经安装ruby,你必须在编译源代码之前摆脱文件!

 # 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 

我build立libyaml文件从源分开,并安装在/ usr / local / lib。 RVM创build的ruby仍然没有看到它们,而不是与makefile或系统LD_LIBRARY_PATH混淆,我只是复制/ usr / local / lib / libyaml *到〜/ .rvm / rubies / ruby​​-1.9.3-p327 / LIB /

那安静的警告。

这是我在Ubuntu上的工作:
– 安装libyaml-dev(sudo apt-get install libyaml-dev)
– 安装rvm + ruby​​ 1.9.3

我尝试了所有这些答案,仍然无法得到它的工作。 我用自制软件安装了libyaml,然后用rvm安装了Ruby 1.9.3和2.0.0。 每次它都抱怨我缺lesspsych(libyaml)。 但试图安装libyaml告诉我,它已经安装。 冲洗,重复。 Urgh。

最后,我做的是卸载 libyaml。 然后,我启用了rvm中的autolibs ,至less在OSX中允许rvm更直接地安装和pipe理依赖关系。 现在,当我安装了ruby,rvm能够安装libyaml,并认识到它是在正确的位置。

所以,如果你尝试了其他所有的选项,试着去掉 libyaml然后安装你的Rubies。 从错误信息中直观地看出,这是最终为我工作的。

我重新安装ruby1.9.3与libyaml的支持:

 rvm reinstall 1.9.3 --with-libyaml 

我确信在安装psych之前我会使用1.9.3:

 rvm use 1.9.3 

我安装了心灵:

 gem install psych 

我有同样的问题( Cent OS 5.7 ),没有上述解决scheme对我工作。

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

在做了几次重新安装之后,我意识到它正在寻找1.9.1 ruby版本而不是1.9.3 yaml。 所以我降级了

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

它工作8D!

在CentOS 6.3上面没有任何工作。 然而, 安装ruby 之前从源代码安装libyaml解决了这个问题。

 $ 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 

接着

 rvm install 1.9.3 gem install rails 

我在用着

rvm 1.16.20(版本)作者:Wayne E. Seguin,Michal Papis [https://rvm.io/]

并且在安装软件包的过程中也遇到以下错误

.rvm / rubies / ruby​​-1.9.3-p194 / lib / ruby​​ / 1.9.1 / yaml.rb:56:在`:看来你的ruby安装缺lesspsych(对于YAML输出)。 要消除这个警告,请安装libyaml并重新安装ruby。

这里有三种不同的方法来解决这个错误,无需安装gem install psych

  1. 导出LD_LIBRARY_PATH = / usr / local / lib
  2. 修改/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. 修复rvmruby1.9.3安装通过

     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 ****
               #当相对有效时,libyaml被安装在ruby中,所以它会被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”
              如果[[-d“$ {rvm_rubies_path} / $ {rvm_ruby_string} / lib64”]]
     ! 那么__rvm_update_configure_env LDFLAGS =“ -  L $ {rvm_rubies_path} / $ {rvm_ruby_string} / lib64”
              科幻
            其他
               libyaml_installed ||  libyaml#安装libyaml

     !  __rvm_update_configure_env CFLAGS =“ -  I $ {rvm_path} / usr / include”
     !  __rvm_update_configure_env LDFLAGS =“ -  L $ {rvm_path} / usr / lib”
              如果[[-d“$ {rvm_path} / usr / lib64”]]
     ! 那么__rvm_update_configure_env LDFLAGS =“ -  L $ {rvm_path} / usr / lib64”
              科幻
            科幻

     --- 106,123 ----
               #当相对有效时,libyaml被安装在ruby中,所以它会被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}”
              如果[[-d“$ {rvm_rubies_path} / $ {rvm_ruby_string} / lib64”]]
     ! 那么__rvm_update_configure_env LDFLAGS =“ -  L $ {rvm_rubies_path} / $ {rvm_ruby_string} / lib64 $ {LDFLAGS}”
              科幻
            其他
               libyaml_installed ||  libyaml#安装libyaml

     !  __rvm_update_configure_env CFLAGS =“ -  I $ {rvm_path} / usr / include $ {CFLAGS}”
     !  __rvm_update_configure_env LDFLAGS =“ -  L $ {rvm_path} / usr / lib $ {LDFLAGS}”
              如果[[-d“$ {rvm_path} / usr / lib64”]]
     ! 那么__rvm_update_configure_env LDFLAGS =“ -  L $ {rvm_path} / usr / lib64 $ {LDFLAGS}”
              科幻
            科幻

非RVMruby安装方法。

 % 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通过编辑这个文件并设置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 

libyaml-devel是关键。

 % 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 

更新你的path和源.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 

在.cshrc和source中设置你的GEM_HOME

 % echo $GEM_HOME % /home/francis/ruby/lib/ruby/gems % gem install mysql2 pg ruby-debug-ide rails capistrano capistrano-ext passenger 

如果您从源代码构buildruby(我在Fedora 20上构build了1.9.3),在configuration/ make构buildruby之前,您将需要这个:

 yum install libyaml-devel 

(除了yum install libyaml。)类似于上面使用rpmforge的Francis的回答。

我有这个错误,并注意到我有不同版本的安装了HomeBrew的Ruby,以及我不再使用的许多gem。 所以做了这样的全面清理:

 $ 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 

如果您不使用Gemfile ,请确保您知道要重新安装哪些gem。

在雪豹,Catharz的解决scheme不适合我。 但是,这个解决scheme做到了:

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

(rvm重新安装给了我一个关于铛没有“–with-libyaml”选项的警告,但它解决了错误消息,无论。)

这至less在Ubuntu 10.04上起作用

$ sudo apt-get安装libtool

$ rvm重新安装1.9.3

在Solaris上:

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

/usr/local/lib添加到共享库searchpath(请参阅man crle)

当我在Snow Leopard 10.6.8上从64位切换到32位时,我重新安装了ruby(使用rvm)在32位上运行,并遇到同样的问题。 所以我只是“清理”之前由rvmcaching的所有内容,并解决了问题。 希望这个技巧可以帮助别人。

rvm清理所有

rvm install ruby​​_version_here //(这样,rvm也会重新下载最新的yaml)。

顺便说一句,如果你还遇到这个问题,我想你可以试试:

gem安装心灵

对于那些Mountain Lion和RVM版本大于1.18.x的人

RVM附带这个新的工具,在安装ruby版本时用作标志。 它被称为autolibs。

我通过下列方式摆脱了这个心理问题:

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

阅读帮助文字之前做:

rvm help autolibs

凉。

我也用rvm install ruby-2.0.0来解决同样的问题。 我已经尝试了所有不同的方法来安装libyaml; wget sourceyumrvm 。 我也尝试了类似的线程中列出的所有不同的方法。 因为我尝试了所有不同的方法,所以我有多个libyaml的安装和位置。

RVM完全能够在~/.rvm中安装必要的依赖关系。 简单地从非RVM安装中删除libyaml文件为我解决了这个问题:

 sudo rm /usr/local/lib/libyaml*.* rvm reinstall ruby-2.0.0-p0 

作品!

OSX升级后我有类似的问题,这解决了我的问题:

  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* 

在这里find