如何解决“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
- 导出LD_LIBRARY_PATH = / usr / local / lib
-
修改/etc/ld.so.conf
sudo su - root echo /usr/local/lib64 >> /etc/ld.so.conf echo /usr/local/lib >> /etc/ld.so.conf ldconfig
-
修复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 source
, yum
和rvm
。 我也尝试了类似的线程中列出的所有不同的方法。 因为我尝试了所有不同的方法,所以我有多个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