如何解决“ruby 安装缺少心理”错误?
Posted
技术标签:
【中文标题】如何解决“ruby 安装缺少心理”错误?【英文标题】:how to solve "ruby installation is missing psych" error? 【发布时间】:2012-03-15 02:16:58 【问题描述】:我使用 rvm 安装 ruby 1.9.3。即使它已成功安装,它也会抱怨 libyaml。现在每次我想安装一个gem(比如rails)时都会出现这个警告:
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)。
【问题讨论】:
您是否尝试按照以下说明安装 libyaml:pyyaml.org/wiki/LibYAML? 你在使用自制软件吗?试试brew doctor
。它是否列出了 libyaml 链接的问题?
Mac 用户:rm -rf /usr/local/lib/ruby/gems/ && brew reinstall ruby
如官方所述homebrew-core Gtihub 已解决issue
【参考方案1】:
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
【讨论】:
【参考方案2】:就我而言
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
【讨论】:
你的意思是:rvm package install libyaml
不,他的意思是rvm pkg install libyaml
。来自rvm usage
:pkg :: Install a dependency package readline,iconv,zlib,openssl
。
我认为这取决于您使用的 rvm 版本。在 rvm 1.6.9 中是package
。
运行rvm pkg install libyaml
后,建议使用rvm reinstall all --force
重新安装所有红宝石。如果您有多个,它可能会很有用。
必须按照serverfault.com/questions/442150/… 中的建议执行rvm reinstall 1.9.3 --with-libyaml-dir=/home/rails/.rvm/usr
【参考方案3】:
我遇到了这个问题。 libyaml 不会编译。原来我错过了 libtool。
yum install libtool
yum install libyaml (or rvm pkg install libyaml)
rvm reinstall 1.9.3
这解决了我的问题。
【讨论】:
没有可用的软件包 libtool。无事可做。 centos 不能yum 安装libtool?不相信.. 你使用的是非基于 redhat 的系统并且需要 apt-get 吗? @phil88530 旧版 CentOS 可能比你想象的更愚蠢 @DennisCheung 哦,好吧,从来没有和旧的玩过【参考方案4】:适用于 ubuntu 和 rvm
sudo apt-get install libtool
rvm pkg install libyaml
rvm reinstall 1.9.3
工作
【讨论】:
在安装 libyaml 之前,我必须“全部卸载 rvm”。这是清除错误的唯一方法【参考方案5】:brew install libyaml
rvm reinstall 1.9.3
对我有用(在雪豹上)。
【讨论】:
我也必须这样做。 rvm pkg install libyaml 不是为我做的。【参考方案6】:在 Snow Leopard 上,Catharz 的解决方案对我不起作用。然而,这个解决方案确实:
brew install libyaml
rvm get head
rvm reinstall 1.9.3 --with-gcc=clang
(rvm 重新安装给了我一个关于 clang 没有选项“--with-libyaml”的警告,但无论如何它都解决了错误消息。)
【讨论】:
【参考方案7】:我遇到了同样的问题(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
【讨论】:
【参考方案8】:这至少在 Ubuntu 10.04 上对我有用
$ sudo apt-get install libtool
$ rvm 重新安装 1.9.3
【讨论】:
【参考方案9】:在我的情况下,解决方案是将 psych
gem 添加到 Gemfile。
【讨论】:
【参考方案10】:如果不使用 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 上尝试过,它似乎在那里也运行良好。)
【讨论】:
gem --version 应该输出什么?我安装了 Ruby 1.9.3-p327 但 gem --version 输出 1.8.23 (不确定这是否相关),当我进行捆绑更新时,奇怪的是有些 gem 需要 => 1.9.2 ***.com/questions/14116083/… 你的gem --version
听起来是对的,但也许你的路径因为以前使用 rvm 而被修改了
而如果必须安装yaml不带sudo,配置yaml时指定/usr/local
以外的前缀,然后用--with-opt-dir=/path/to/yaml/prefix --with-yaml --prefix=/path/to/ruby/prefix
配置ruby
我知道这已经有一年多了,但问题是关于 RVM 的错误。以“如果不使用 rvm”开头怎么可能合适?【参考方案11】:
这些答案都不适合我。
我在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
【讨论】:
【参考方案12】:我遇到了同样的问题(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!
【讨论】:
【参考方案13】:在 Solaris 上:
# sudo crle -64 -l /usr/local/lib
将/usr/local/lib
添加到共享库搜索路径
(见 man crle)
【讨论】:
这个关于os x的问题。【参考方案14】:我将 libyaml 文件与源代码分开构建,并将它们安装在 /usr/local/lib 中。 RVM 创建的 ruby 仍然没有看到它们,而不是使用 makefile 或系统 LD_LIBRARY_PATH 我只是将 /usr/local/lib/libyaml* 复制到 ~/.rvm/rubies/ruby-1.9.3-p327/库/
这消除了警告。
【讨论】:
【参考方案15】:在 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
【讨论】:
【参考方案16】:当我在 Snow Leopard 10.6.8 上从 64 位切换到 32 位时,我重新安装了 ruby(使用 rvm)以在 32 位上运行并遇到了同样的问题。所以我只是“清理”所有之前由 rvm 缓存的东西并解决了问题。希望这个提示可以帮助别人。
rvm 清理所有
rvm install ruby_version_here //(这样rvm也会重新下载最新的yaml)。
BTW,如果你还是遇到这个问题,我想你可以试试:
gem 安装心理
【讨论】:
【参考方案17】:这就是在 Ubuntu 上对我有用的方法: - 安装 libyaml-dev (sudo apt-get install libyaml-dev) - 安装 rvm + ruby 1.9.3
【讨论】:
【参考方案18】:我正在使用
rvm 1.16.20 (version) by Wayne E. Seguin , 米哈尔·帕皮斯 [https://rvm.io/]
在安装包的过程中也出现以下错误
.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/yaml.rb:56:in `':好像 您的 ruby 安装缺少 psych(用于 YAML 输出)。到 消除此警告,请安装 libyaml 并重新安装您的 红宝石。
这里有三种不同的方法来解决这个错误,而无需 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
修复 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
【讨论】:
我已经确认如果您使用的是最新的稳定版 rvm 版本 1.18.4,则不需要此补丁【参考方案19】:对于那些使用 Mountain Lion 和 RVM 版本 >= 1.18.x
RVM 附带了这个新工具,在安装 ruby 版本时用作标志。它被称为自动库。
我通过以下方式摆脱了这个心理问题:
rvm reinstall ruby-1.9.3-p392 --autolibs=3
通过以下方式阅读帮助文本:
rvm help autolibs
酷。
【讨论】:
【参考方案20】:我也为同样的失败与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
有效!
【讨论】:
【参考方案21】:我尝试了所有这些答案,但仍然无法正常工作。我用自制软件安装了 libyaml,然后用 rvm 安装了 Ruby 1.9.3 和 2.0.0。每次它抱怨我缺少心理(libyaml)。但是尝试安装 libyaml 告诉我它已经安装了。冲洗,重复。呃。
最后,我所做的是卸载 libyaml。然后我enabled autolibs in rvm,它(至少在 OSX 中)允许 rvm 更直接地安装和管理依赖项。现在,当我安装了 Ruby 时,rvm 能够安装 libyaml 并识别它在正确的位置。
因此,如果您已经尝试了所有其他选项,请尝试删除 libyaml,然后安装您的 Rubies。从错误消息来看,这是直观的,但这最终对我有用。
【讨论】:
你不需要 libyaml:你需要 libyaml-dev,这是 rvm 使用 --autolibs 为你安装的【参考方案22】:$ brew doctor
$ brew link libyaml
【讨论】:
为我解决了所有brew doctor
问题。我在尝试gem install jekyll
时遇到了一个与提问者的错误非常相似的错误。通过 rvm 的所有命令也都给出了错误。潜在且不那么明显的问题是自制软件,我假设 rvm 安装东西的方式有问题。我最近在 Mac OS 上升级到 Mavericks。就我而言,解决所有brew doctor
问题消除了每条错误消息。现在一切顺利。【参考方案23】:
我重新安装了支持 libyaml 的 ruby 1.9.3:
rvm reinstall 1.9.3 --with-libyaml
我确保在安装 psych 之前我会使用 1.9.3:
rvm use 1.9.3
我安装了心理:
gem install psych
【讨论】:
【参考方案24】: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"
通过编辑此文件禁用 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
更新您的路径和来源 .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
【讨论】:
【参考方案25】:我终于解决了这个问题。问题是,即使我用 brew 安装了 libyaml,它也从未链接过。我必须删除一个冲突的头文件,然后删除brew link libyaml
。
【讨论】:
【参考方案26】:使用 rvm for mac osx 安装 ruby,使用 autolibs 安装 libyaml 并首先卸载 libyaml 会有所帮助。
这对我有用:
brew uninstall libyaml
rvm autolibs enable
rvm reinstall ruby-2.1.1
【讨论】:
谢谢@user33302。上述解决方案也适用于 Mac OS EI CAPITON。【参考方案27】: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*
found here
【讨论】:
【参考方案28】:如果您从源代码构建 ruby(我在 Fedora 20 上构建了 1.9.3),则在执行 configure/make 构建 ruby 之前需要此:
yum install libyaml-devel
(除了 yum install libyaml。)类似于 Francis 在上面使用 rpmforge 的回答。
【讨论】:
也在 Centos 5.6 上确认【参考方案29】: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
【讨论】:
【参考方案30】:如果您在 macOS 上使用自制软件安装了 ruby,try this solution。
rm -rf /usr/local/lib/ruby/gems/ && brew reinstall ruby
请注意,这将删除所有已安装的 gem。最好在运行之前使用 gem list
保存已安装 gem 的列表。
【讨论】:
但是gem list
是首先导致错误的原因(对我而言)。以上是关于如何解决“ruby 安装缺少心理”错误?的主要内容,如果未能解决你的问题,请参考以下文章