「ruby installation is missing psych」エラーを解決するには?


158

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


次の手順に従ってlibyamlをインストールしようとしましたか?pyyaml.org/wiki/LibYAML
セーラー

1
自作を使用していますか?お試しくださいbrew doctor。libyamlリンクの問題はリストされていますか?
Stoutie

3
Macユーザー:rm -rf /usr/local/lib/ruby/gems/ && brew reinstall ruby公式の自作コア Gtihubで解決された問題
トラビスクラーク

回答:


218

私の場合

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

11
実際の意味は次のrvm package install libyaml
とおりです。– johncblandii

3
いいえ、彼は意味しましたrvm pkg install libyaml。からrvm usagepkg :: Install a dependency package {readline,iconv,zlib,openssl}
jordanpg、2012年

使用しているRVMのバージョンによって異なると思います。RVM 1.6.9ではですpackage
12

8
実行後、rvm pkg install libyamlすべてのルビーをで再インストールすることをお勧めしrvm reinstall all --forceます。複数ある場合に便利です。
Haralan Dobrev

7
しなければならなかった rvm reinstall 1.9.3 --with-libyaml-dir=/home/rails/.rvm/usrで提案されているようにserverfault.com/questions/442150/...
PCV

20

ubuntuおよびrvmの場合

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

働いた


1
libyamlをインストールする前に、「rvm uninstall all」を実行する必要がありました。これが、エラーが解決された唯一の方法です
Sunil Gowda '16

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/からダウンロードします。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 stackoverflow.com/questions/ 14116083 /…
Leahcim 2013年

あなたのgem --versionサウンドは正しいですが、以前のrvmの使用が原因でパスが変更された可能性があります
matt

4
また、sudoを使用せずにyamlをインストールする必要がある場合は、yamlを/usr/local構成するとき以外にプレフィックスを指定し、次にRubyを--with-opt-dir=/path/to/yaml/prefix --with-yaml --prefix=/path/to/ruby/prefix
Chadwick

私はこれが1年以上前のものであることを知っていますが、問題はRVMのエラーに関するものでした。「rvmを使用しない場合」から始めるのが適切でしょうか?
Peter Degen-Portnoy 14

18
brew install libyaml
rvm reinstall 1.9.3

(Snow Leopardで)私にとってはうまくいきました。


私もこれをしなければなりませんでした。rvm pkg install libyamlは私のためにそれをしませんでした。
stringo0 2013


6

私はこの問題を抱えていました。libyamlはコンパイルされません。libtoolが欠落していたことがわかりました。

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

それで問題は解決しました。


1
使用可能なパッケージlibtoolはありません。何もする必要はありません。
Paul

1
centosはlibtoolをインストールできませんか?それを信じていない..あなたは非redhatベースのシステムを使用していて、apt-getする必要がありますか?
phil88530

CentOSの古いバージョン@ phil88530は、思ったより馬鹿げている
Dennis C

@DennisCheungああ、まあ、古いもので遊んだことはない
phil88530

6

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

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

これにより、インストールされているすべてのgemが削除されることに注意してください。gem listこれを実行する前に、インストール済みのGemのリストを保存することをお勧めします。


しかし、gem list(私にとっては)最初の場所でエラーを引き起こすものです。
オロメ

5
$ brew doctor
$ brew link libyaml

すべてのbrew doctor問題を解決することで解決しました。しようとしgem install jekyllたときに質問者のエラーと非常によく似たエラーが発生しました。rvmを介したすべてのコマンドでもエラーが発生していました。根本的でそれほど明白ではない問題は、自作、つまりrvmが何かをインストールする手段が問題を抱えていることを想定していることです。最近、Mac OSでMavericksにアップグレードしました。私の場合、すべてのbrew doctor問題を解決すると、すべてのエラーメッセージが排除されました。今、すべてがスムーズに機能しています。
Stoutie

4

ようやく修正しました。問題は、brewでlibyamlをインストールしても、リンクされないことでした。私は、相反するヘッダファイルを削除しなければなりませんでしたbrew link libyaml


4

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

これは私のために働きました:

brew uninstall libyaml
rvm autolibs enable
rvm reinstall ruby-2.1.1

@ user33302に感謝します。上記のソリューションは、Mac OS EI CAPITONでも動作しました。
Sandeep Ahuja 2016年

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

3

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

rvm reinstall 1.9.3 --with-libyaml

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

rvm use 1.9.3

私は精神をインストールしました:

gem install psych

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

2

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

私はhttps://github.com/sstephenson/ruby-build/issues/119で私の答えを見つけました にあります。Centos6.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

2

libyamlファイルをソースとは別にビルドし、/ usr / local / libにインストールしました。RVMが作成したルビーはまだそれらを認識せず、makefileやシステムLD_LIBRARY_PATHをいじくるのではなく、/ usr / local / lib / libyaml *を〜/ .rvm / rubies / ruby​​-1.9.3-p327 /にコピーしましたlib /

それは警告を静めた。


2

これは私にとってUbuntuで機能したものです:
-libyaml-devのインストール(sudo apt-get install libyaml-dev)
-rvm + ruby​​ 1.9.3のインストール


2

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

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

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


libyamlは不要です。libyaml-devが必要です。これは、-autolibsを使用してrvmがインストールするものです
混乱

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で動作しました!


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

1

私は使っています

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

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

。この警告を解消するには、libyamlをインストールしてルビーを再インストールしてください。

ここでは、gem install psychを使用せずにこのエラーを解決する3つの方法を示します。

  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. 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はルビ自体にインストールされるため、ルビで移動されます
              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
            そうしないと
              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はルビ自体にインストールされるため、ルビで移動されます
              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
            そうしないと
              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


最新の安定したRVMバージョン1.18.4を使用している場合、このパッチは不要であることを確認しました
victorv

1

私も同じ失敗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

動作します!


1

非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

ソースからrubyをビルドする場合(私はFedora 20で1.9.3をビルドしました)、rubyをビルドするためのconfigure / makeを行う前にこれが必要になります。

yum install libyaml-devel

(yum install libyamlに加えて)上記のrpmforgeを使用したFrancisの回答に似ています。



1

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


1

私の場合、私がする必要があるのは

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)

私はmacOS Sierraを使用していますが、これでうまくいきました。これは、このGitHubの問題でここに報告されているものと同じソリューションです。このソリューションは、このページの他のソリューションよりもはるかに単純で、それほど劇的ではないため、最初に試してください。
mljrg 2017

1
  • Ubuntu
  • RVMの使用
  • 理由:Ruby 2.4.4とRuby 2.5.1の間でPsych Gemバージョンが競合している

エラーを解消するために数時間費やしましたが、ここでの返信はどれも私のケースに適していなかったので、解決方法を投稿したいと思いました...

私が実行したときの場合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してから、1つのバージョンのみがデフォルトとしてリストされていることを確認してください...

tl; dr cd /.rvm/gems/ruby-x.x.x@global/specifications/default mv psych-3.0.2 ../

これが誰かを助けることを願っています!


0

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

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

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


0

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

$ sudo apt-get install libtool

$ rvm再インストール1.9.3


0

Solarisの場合:

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

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


OS Xに関するこの質問。
zishe 2014年

0

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

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

rvm install ruby​​_version_here //(これにより、rvmは最新のyamlも再ダウンロードします)。

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

gem install psych

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.