我使用rvm安装ruby 1.9.3。即使它已成功安装,它也抱怨libyaml。现在,每当我想安装一个宝石(比如铁轨)时,这个警告会显示出来:
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)。
答案 0 :(得分:217)
就我而言
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
答案 1 :(得分:20)
表示ubuntu和rvm
sudo apt-get install libtool
rvm pkg install libyaml
rvm reinstall 1.9.3
工作
答案 2 :(得分:19)
如果不使用rvm,而是从头开始构建和安装ruby 1.9.3 - 例如,您使用rbenv管理ruby版本 - 必须先安装libyaml。从http://pyyaml.org/获取;目前,您想要的文件是http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz。打开tarball并cd进入生成的文件夹。然后:
./configure --prefix=/usr/local
make
sudo make install
您现在已准备好构建ruby。从http://ftp.ruby-lang.org/pub/ruby/下载ruby。打开tarball并cd进入生成的文件夹。现在:
./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上试过这个,但它似乎也在那里工作得很好。)
答案 3 :(得分:16)
brew install libyaml
rvm reinstall 1.9.3
对我有用(雪豹)。
答案 4 :(得分:9)
在我的情况下,解决方案是将psych
gem添加到Gemfile。
答案 5 :(得分:6)
我有这个问题。 libyaml不会编译。事实证明我错过了libtool。
yum install libtool
yum install libyaml (or rvm pkg install libyaml)
rvm reinstall 1.9.3
这解决了我的问题。
答案 6 :(得分:5)
$ brew doctor
$ brew link libyaml
答案 7 :(得分:4)
我终于解决了这个问题。问题是即使我用brew安装了libyaml,它也从未被链接过。我不得不删除有冲突的头文件,然后删除brew link libyaml
。
答案 8 :(得分:3)
使用rvm for mac osx安装ruby,使用autolibs安装libyaml并首先卸载libyaml帮助。
这对我有用:
brew uninstall libyaml
rvm autolibs enable
rvm reinstall ruby-2.1.1
答案 9 :(得分:3)
我有同样的问题(Lion 10.7.4),并通过升级rvm然后重新安装ruby来修复它
1)升级rvm https://rvm.io//rvm/install/
curl -L https://get.rvm.io | bash -s stable --ruby
2)然后使用rvm重新安装ruby 1.9.3(之前已经安装了早期版本的rvm)
rvm reinstall 1.9.3
答案 10 :(得分:2)
这对我在Ubuntu上的作用是什么:
- 安装libyaml-dev(sudo apt-get install libyaml-dev)
- 安装rvm + ruby 1.9.3
答案 11 :(得分:2)
我使用libyaml支持重新安装了ruby 1.9.3:
rvm reinstall 1.9.3 --with-libyaml
我确保在安装psych之前我会使用1.9.3:
rvm use 1.9.3
我安装了心理:
gem install psych
答案 12 :(得分:2)
我尝试了所有这些答案,仍然无法使其正常运行。我用自制软件安装了libyaml,然后用rvm安装了Ruby 1.9.3和2.0.0。每次它抱怨我失去了心理(libyaml)。但是尝试安装libyaml告诉我它已经安装好了。冲洗,重复。 Urgh。
最后,我所做的是 uninstall libyaml。然后我enabled autolibs in rvm,(至少在OSX中)允许rvm更直接地安装和管理依赖项。现在当我安装Rubies时,rvm能够安装libyaml并认识到它位于正确的位置。
因此,如果您已经尝试了所有其他选项,请尝试删除 libyaml然后安装您的Rubies。从错误信息中可以直观地了解,但这最终对我有用。
答案 13 :(得分:2)
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 out,cd in)
bundle
答案 14 :(得分:2)
我从源代码中单独构建了libyaml文件,并将它们安装在/ usr / local / lib中。 RVM创建的ruby仍然没有看到它们,而不是使用makefile或系统LD_LIBRARY_PATH,我只是将/ usr / local / lib / libyaml *复制到〜/ .rvm / rubies / ruby-1.9.3-p327 / LIB /
这使警告安静下来。
答案 15 :(得分:2)
这些答案都不适合我。
我在https://github.com/sstephenson/ruby-build/issues/119找到了答案 我在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
答案 16 :(得分:1)
在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
答案 17 :(得分:1)
我正在使用
Wayne E. Seguin的rvm 1.16.20(版本), Michal Papis [https://rvm.io/]
并且在捆绑安装期间也出现以下错误
.rvm / rubies / ruby-1.9.3-p194 / lib / ruby / 1.9.1 / yaml.rb:56:in'':似乎 您的ruby安装缺少心理(对于YAML输出)。至 消除此警告,请安装libyaml并重新安装 红宝石。
以下是解决此错误的三种不同方法,无需使用gem install psych
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
通过
修复rvm ruby 1.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 **** # 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
答案 18 :(得分:1)
我花了几个小时试图使我的错误消失,这里没有任何答复适合我的情况,所以我想我会发表解决方法...
在我运行gem list | grep psych
的情况下,我得到以下输出:psych(default: 3.1.0, default: 3.0.2)
。
显然,从2.5.0版开始,ruby依赖于较新版本的psych(3.1.0),并且将两者都设置为默认值会使一切混乱。请注意,我从来没有发现为什么将它们都设置为默认值-因此,我从计算机上彻底清除了rvm和ruby版本。
因此,要删除旧版本(3.0.2)的默认设置,请转到~/.rvm/gems/ruby-x.x.x@global/specifications/default
。如果运行ls | grep psych
,它将在此处返回两个版本的gem。如果您想将3.1.0保持默认值,只需运行mv psych-3.0.2.gemspec ../
,然后尝试运行gemlist
,以确保它现在仅列出一个版本作为默认值...
tl;博士
cd /.rvm/gems/ruby-x.x.x@global/specifications/default
mv psych-3.0.2 ../
希望这对某人有帮助!
答案 19 :(得分:1)
在我的情况下,all I needed to do是
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
现在,FWIW,gem list
包括
psych (2.2.4, default: 2.2.2)
答案 20 :(得分:1)
我遇到了这个错误并注意到我使用HomeBrew安装了不同版本的Ruby,以及我不再使用的许多宝石。所以做了这样的全面清理:
$ 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
,请确保知道要重新安装哪些宝石。
答案 21 :(得分:1)
我遇到了同样的问题( Cent OS 5.7 ),上述解决方案都没有对我有用。
// 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版本中的yaml而不是1.9.3
。所以我降级了
// obviously after installing `libyaml`
rvm remove all
rvm install 1.9.1
rvm use 1.9.1 --default
它工作了8D!
答案 22 :(得分:1)
NON-RVM ruby安装方法。
% 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"
通过编辑此文件并设置enabled = 0来禁用rpmforge %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
更新您的路径和来源.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和源
中设置您的GEM_HOME% echo $GEM_HOME
% /home/francis/ruby/lib/ruby/gems
% gem install mysql2 pg ruby-debug-ide rails capistrano capistrano-ext passenger
答案 23 :(得分:1)
如果你是从源代码构建ruby(我在Fedora 20上构建了1.9.3),那么在你执行configure / make来构建ruby之前你需要这个:
yum install libyaml-devel
(除了yum install libyaml。)类似于Francis在上面使用rpmforge的回答。
答案 24 :(得分:0)
我一直面临着同样的问题。我正在使用安装了rbenv
的MacPorts!
我做了什么:
sudo port install ruby26
sudo port select --set ruby ruby26
(这实际上使macOS默认的ruby安装退出了游戏)~/.gem/ruby/2.6.0/gems
中删除了所有在调用gem
命令时引起错误的宝石gem pristine
命令(确切的命令是警告的一部分)gem update --user-install
答案 25 :(得分:0)
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
答案 26 :(得分:0)
我在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*
答案 27 :(得分:0)
在Snow Leopard上,Catharz的解决方案对我不起作用。然而,这个解决方案确实:
brew install libyaml
rvm get head
rvm reinstall 1.9.3 --with-gcc=clang
(rvm重新安装给了我一个关于clang没有选项“--with-libyaml”的警告,但无论如何都解决了错误信息。)
答案 28 :(得分:0)
至少在Ubuntu 10.04上这对我有用
$ sudo apt-get install libtool
$ rvm重新安装1.9.3
答案 29 :(得分:0)
在Solaris上:
# sudo crle -64 -l /usr/local/lib
将/usr/local/lib
添加到共享库搜索路径
(见男人)
答案 30 :(得分:0)
我和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
作品!
答案 31 :(得分:0)
对于使用Mountain Lion和RVM版本&gt; = 1.18.x
的用户RVM附带了这个新工具,在安装ruby版本时用作标志。它被称为autolibs。
我通过以下方式解决了这个心理问题:
rvm reinstall ruby-1.9.3-p392 --autolibs=3
通过以下方式阅读帮助文本:
rvm help autolibs
冷却。
答案 32 :(得分:0)
当我在Snow Leopard 10.6.8上从64位切换到32位时,我重新安装了ruby(使用rvm)以在32位上运行并遇到了同样的问题。所以我只是'清理'之前由rvm缓存的所有东西,问题就解决了。希望这个提示可以帮助别人。
顺便说一句,如果你仍然遇到这个问题,我想你可以试试:rvm cleanup all
rvm install ruby_version_here //(这样,rvm也会重新下载最新的yaml)。
宝石安装心理