web-dev-qa-db-ja.com

「Rubyのインストールにpsychがありません」エラーを解決する方法は?

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)を使用しています。

156
Pouya

私の場合

rvm pkg install libyaml

そして

rvm reinstall Ruby-1.9.3-p125

問題を解決しました。

Ubuntuを使用している場合は、上記の手順の前にlibtoolがインストールされていることを確認してください。

Sudo apt-get install libtool

MacOSユーザー(homebrewを使用):

rm -rf /usr/local/lib/Ruby/gems/ && brew reinstall Ruby
217
peterpengnz

ubuntuおよびrvm用

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

働いた

20
Gizmomogwai

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でうまくいきました。 (Update:Mac OS X 10.8.1でこれを試したところ、そこでもうまくいったようです。)

19
matt
brew install libyaml
rvm reinstall 1.9.3

(Snow Leopardで)私のために働いたものです。

16
Catharz

私の場合、解決策はpsych gemをGemfileに追加することでした。

9
Vanuan

この問題がありました。 libyamlはコンパイルされません。 libtoolが見つかりませんでした。

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

これで私の問題は解決しました。

6
AKWF
$ brew doctor
$ brew link libyaml
5
张健健

Homebrewを使用してmacOSにRubyをインストールした場合、 このソリューションを試してください

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

これにより、インストールされているすべてのgemが削除されることに注意してください。これを実行する前に、gem listでインストールされたgemのリストを保存するのが最適です。

4
orkoden

私は最終的にこれを修正しました。問題は、libyamlをbrewでインストールしても、リンクされないことでした。競合するヘッダーファイルを削除してからbrew link libyamlを削除する必要がありました。

4
Michael

Mac osx用のrvmでRubyをインストールし、autolibsを使用してlibyamlをインストールし、最初にlibyamlをアンインストールすると役立ちます。

これは私のために働いた:

brew uninstall libyaml
rvm autolibs enable
rvm reinstall Ruby-2.1.1
3
user33302

同じ問題(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
3
user761552
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
vysogot

LibyamlをサポートしたRuby 1.9.3を再インストールしました。

rvm reinstall 1.9.3 --with-libyaml

Psychをインストールする前に1.9.3を使用することを確認しました。

rvm use 1.9.3

Psychをインストールしました:

gem install psych
2
adamo

これがUbuntuで私にとってうまくいったことです:
-libyaml-devのインストール(Sudo apt-get install libyaml-dev)
-rvm + Ruby 1.9.3のインストール

2
Luc

私はこれらの答えをすべて試してみましたが、それでも機能させることができませんでした。 homebrewでlibyamlをインストールしてから、rvmでRuby 1.9.3および2.0.0をインストールしました。それは私が精神(libyaml)を逃していると不平を言うたびに。しかし、libyamlをインストールしようとすると、すでにインストールされていることがわかりました。すすぎ、繰り返します。ほら.

最後に、私がしたことはuninstalllibyamlでした。次に、 rvmでautolibsを有効化 にすると、(少なくともOSXでは)rvmが依存関係をより直接インストールして管理できるようになります。今、Rubiesをインストールしたとき、rvmはlibyamlをインストールし、それが正しい場所にあることを認識できました。

したがって、他のオプションをすべて試した場合は、実際にremovinglibyamlを試してから、Rubiesをインストールしてください。エラーメッセージから直感的に理解できますが、それが最終的にはうまくいきました。

2
Bob Ralian

これらの答えはどれも私にとってはうまくいきませんでした。

https://github.com/sstephenson/Ruby-build/issues/119 で答えを見つけました== Centos 6.3 Virtual Machineを使用しています。

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
2
chemoish

Libyamlファイルをソースとは別にビルドし、/ usr/local/libにインストールしました。 RVMが作成したRubyにはまだ表示されず、メイクファイルまたはシステムLD_LIBRARY_PATHをいじるのではなく、/ usr/local/lib/libyaml *を〜/ .rvm/rubies/Ruby-にコピーしました1.9.3-p327/lib /

それは警告を静めました。

2

このエラーが発生し、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を使用しない場合は、どのgemを再インストールするかを確認してください。

1
Eneko Alonso

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

GEM_HOMEを.cshrcおよびソースに設定します

% echo $GEM_HOME
% /home/francis/Ruby/lib/Ruby/gems

% gem install mysql2 pg Ruby-debug-ide Rails capistrano capistrano-ext passenger
1

CentOS 6.3では、上記のいずれも機能しませんでした。しかし、ソースからのlibyamlのインストールbeforeRubyのインストールは問題を解決しました。

$ 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
1
Dmitry G.

私は同じ問題を抱えていました(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バージョンの1.9.3でyamlを探していることに気付きました。だから私はダウングレードしました

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

そして、8Dで機能しました!

1
Ish

私の場合 必要なことはすべて

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)
1
orome

ソースからRubyをビルドしている場合(Fedora 20で1.9.3をビルドした場合)、configure/makeを実行してRubyをビルドする前にこれが必要になります。

yum install libyaml-devel

(libyamlのインストールに加えて)。上記のrpmforgeを使用したFrancisの回答に似ています。

1
Don Law

私は使っています

rvm 1.16.20(バージョン)by Wayne E. Seguin、Michal Papis [https://rvm.io/]

また、バンドルのインストール中に次のエラーが発生しました

.rvm/rubies/Ruby-1.9.3-p194/lib/Ruby/1.9.1/yaml.rb:56:in `':Rubyインストールにpsychが欠けているようです(YAML出力用) 。この警告を解消するには、libyamlをインストールしてRubyを再インストールしてください。

以下に、gemをインストールする必要のないこのエラーを解決する3つの異なる方法を示します。

  1. export 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. 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 **** 
#相対が有効な場合、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" 
 if [[-d "$ {rvm_rubies_path}/$ {rvm_Ruby_string}/lib64"]] 
!その後__rvm_update_configure_env LDFLAGS = "-L $ {rvm_rubies_path}/$ {rvm_Ruby_string}/lib64" 
 fi 
 else 
 libyaml_installed || libyaml#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"]] 
!次に__rvm_update_configure_env LDFLAGS = "-L $ {rvm_path}/usr/lib64" 
 fi 
 fi 
 
 --- 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}" 
 if [[-d "$ {rvm_rubies_path}/$ {rvm_Ruby_string}/lib64"]] 
!その後__rvm_update_configure_env LDFLAGS = "-L $ {rvm_rubies_path}/$ {rvm_Ruby_string}/lib64 $ {LDFLAGS}" 
 fi 
 else 
 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}" 
 if [[-d "$ {rvm_path}/usr/lib64"]] 
!その後__rvm_update_configure_env LDFLAGS = "-L $ {rvm_path}/usr/lib64 $ {LDFLAGS}" 
 fi 
 fi 
 
1
victorv
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
0
hamdiakoguz

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*

ここにあります

0
B1z

これは少なくともUbuntu 10.04で機能しました

$ sudo apt-get install libtool

$ rvm再インストール1.9.3

0
Abhay PS

Solarisの場合:

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

/usr/local/libを共有ライブラリ検索パスに追加するには(man crleを参照)

0
edx

私はまた、rvm install Ruby-2.0.0で同じ障害に何時間も苦労しました。 libyamlをインストールするためのさまざまな方法をすべて試しました。 wget sourceyum、およびrvm。同様のスレッドにリストされているさまざまなアプローチもすべて試しました。さまざまな方法をすべて試したため、複数のインストールとlibyamlの場所がありました。

RVMは、~/.rvmに必要な依存関係を完全にインストールできます。非RVMインストールからlibyamlファイルを削除するだけで、この問題は修正されました。

Sudo rm /usr/local/lib/libyaml*.*

rvm reinstall Ruby-2.0.0-p0

動作します!

0
Andrejs R.

Snow Leopard 10.6.8で64ビットから32ビットに切り替えると、Ruby(使用されているrvm)を再インストールして32ビットで実行し、同じ問題に遭遇しました。そのため、以前rvmによってキャッシュされたすべてのものを「クリーンアップ」し、問題を解決しました。このヒントが誰かを助けることを願っています。

すべてのrvmクリーンアップ

rvm install Ruby_version_here //(この方法で、rvmは最新のyamlも再ダウンロードします)。

ところで、まだこの問題が解決しない場合は、試してみてください。

gem install psych

0
anguu

Snow Leopardでは、Catharzによる解決策はうまくいきませんでした。ただし、このソリューションは次のことを行いました。

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

(rvmを再インストールすると、clangにオプション "--with-libyaml"がないという警告が表示されましたが、それでもエラーメッセージは解決しました。)

0
mrrena

Mountain LionおよびRVMバージョン1.18.x以上の場合

RVMには、Rubyバージョンをインストールする際のフラグとして使用されるこの新しいツールが付属しています。これはautolibと呼ばれます。

次のことを行うことで、この精神的な問題を取り除きました。

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

以下を実行する前に、ヘルプテキストを読んでください。

rvm help autolibs

クール。

0
Alan Andrade