comment résoudre l'erreur «l'installation de ruby ​​est manquante psych»?

158

J'ai utilisé rvm pour installer ruby ​​1.9.3. même s'il a été installé avec succès, il s'est plaint de libyaml. et maintenant, chaque fois que je veux installer un bijou (disons des rails), cet avertissement apparaît:

It seems your ruby installation is missing psych (for YAML output). To eliminate this warning, please install libyaml and reinstall your ruby.

J'utilise Mac os X 10.7 (Lion).

Pouya
la source
Avez-vous essayé d'installer libyaml en suivant ces instructions: pyyaml.org/wiki/LibYAML ?
marin le
1
Utilisez-vous homebrew? Essayez brew doctor. Est-ce qu'il répertorie un problème avec le lien libyaml?
Stoutie
3
Utilisateurs Mac: rm -rf /usr/local/lib/ruby/gems/ && brew reinstall rubycomme indiqué dans le problème officiel de Gtihub homebrew-core résolu
Travis Clarke

Réponses:

218

Dans mon cas

rvm pkg install libyaml

et

rvm reinstall ruby-1.9.3-p125

résolu le problème.

Pour les personnes utilisant Ubuntu, assurez-vous qu'il libtoolest installé avant les étapes ci-dessus:

sudo apt-get install libtool

Pour les utilisateurs de macOS (avec homebrew):

rm -rf /usr/local/lib/ruby/gems/ && brew reinstall ruby
Peterpengnz
la source
11
Vous voulez dire en fait:rvm package install libyaml
johncblandii
3
Non, il voulait dire rvm pkg install libyaml. De rvm usage: pkg :: Install a dependency package {readline,iconv,zlib,openssl}.
jordanpg
Je pense que cela dépend de la version de rvm que vous utilisez. Dans RVM 1.6.9, c'est package.
Vanuan le
8
Après l'exécution, rvm pkg install libyamlil recommande de réinstaller tous les rubis avec rvm reinstall all --force. Cela peut être utile si vous en avez plusieurs.
Haralan Dobrev
7
Dû faire rvm reinstall 1.9.3 --with-libyaml-dir=/home/rails/.rvm/usrcomme suggéré dans serverfault.com/questions/442150/…
pcv
20

pour ubuntu et rvm

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

travaillé

Gizmomogwai
la source
1
J'ai dû «tout désinstaller rvm» avant d'installer libyaml. C'est le seul moyen d'effacer l'erreur
Sunil Gowda
19

Si vous n'utilisez pas rvm, mais que vous construisez et installez ruby ​​1.9.3 à partir de zéro - par exemple, vous gérez vos versions ruby ​​avec rbenv - vous devez d'abord installer libyaml. Obtenez-le sur http://pyyaml.org/ ; pour le moment, le fichier que vous voulez est http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz . Ouvrez l'archive tar et le CD dans le dossier résultant. Ensuite:

./configure --prefix=/usr/local
make
sudo make install

Vous êtes maintenant prêt à créer du rubis. Téléchargez ruby ​​depuis http://ftp.ruby-lang.org/pub/ruby/ . Ouvrez l'archive tar et le CD dans le dossier résultant. Maintenant:

./configure --prefix=/wherever/you/want/it/to/go
make
make install

(Ou peut sudo make install- être , selon l'endroit où vous le mettez.) Si vous utilisez rbenv, vous saurez que cela a fonctionné si vous passez à rbenv global 1.9.3-p194(ou quel que soit le nom de votre version) et gem --versionfonctionne sans avertissement. Cela a fonctionné pour moi sur Mac OS X 10.6.8. ( Mise à jour : je viens d'essayer ceci sur Mac OS X 10.8.1 et cela semble avoir bien fonctionné là aussi.)

mat
la source
que doit sortir gem --version? J'ai installé Ruby 1.9.3-p327 mais gem --version génère 1.8.23 (je ne sais pas si c'est lié) et quand je fais la mise à jour du bundle, cela dit étrangement que certains gemmes nécessitent => 1.9.2 stackoverflow.com/questions/ 14116083 /…
Leahcim
vos gem --versionsons sont corrects, mais peut-être que vous avez votre chemin embrouillé à cause de l'utilisation antérieure de rvm
mat
4
Et si vous devez installer yaml sans sudo, spécifiez un préfixe autre que /usr/locallors de la configuration de yaml, puis configurez ruby ​​avec--with-opt-dir=/path/to/yaml/prefix --with-yaml --prefix=/path/to/ruby/prefix
Chadwick
Je sais que cela remonte à plus d'un an, mais la question portait sur une erreur avec RVM. Comment commencer par "Si vous n'utilisez pas rvm" pourrait être approprié?
Peter Degen-Portnoy
18
brew install libyaml
rvm reinstall 1.9.3

C'est ce qui a fonctionné pour moi (sur Snow Leopard).

Catharz
la source
Je devais faire ça aussi. rvm pkg install libyaml ne l'a pas fait pour moi.
stringo0
9

Dans mon cas, la solution était d'ajouter la psychgemme au Gemfile.

Vanuan
la source
6

J'ai eu ce problème. libyaml ne compilerait pas. Il s'est avéré que je manquais libtool.

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

Cela a résolu mon problème.

AKWF
la source
1
Aucun package libtool disponible. Rien à faire.
Paul
1
centos ne peut pas installer libtool? ne le croyez pas .. utilisez-vous un système non basé sur redhat et devez-vous apt-get?
phil88530
@ phil88530 L'ancienne version de CentOS peut être plus stupide que vous ne le pensez
Dennis C
@DennisCheung oh ok, jamais joué avec un ancien
phil88530
6

Si vous avez installé ruby ​​sur macOS avec homebrew, essayez cette solution .

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

Notez que cela éliminera toutes les gemmes installées. Il vaut mieux enregistrer une liste des gemmes installées avec gem listavant de l'exécuter.

Orkoden
la source
Mais gem listc'est ce qui cause l'erreur en premier lieu (pour moi).
orome
5
$ brew doctor
$ brew link libyaml
voie
la source
La résolution de tous les brew doctorproblèmes l'a résolu pour moi. J'ai eu une erreur très similaire à celle du questionneur en essayant de le faire gem install jekyll. Toutes les commandes via rvm donnaient également des erreurs. Le problème sous-jacent et pas si évident est que l'homebrew, je suppose que le moyen par lequel rvm installe des choses, avait des problèmes. J'avais récemment mis à niveau vers Mavericks sur Mac OS. Dans mon cas, la résolution de tous les brew doctorproblèmes a éliminé chaque message d'erreur. Maintenant, tout fonctionne correctement.
Stoutie
4

J'ai enfin résolu ce problème. Le problème était que même si j'avais installé libyaml avec brew, il n'était jamais lié. J'ai dû supprimer un fichier d'en-tête en conflit, puis brew link libyaml.

Michael
la source
4

Installer ruby ​​avec rvm pour mac osx, utiliser autolibs pour installer libyaml et la première désinstallation de libyaml aide.

Cela a fonctionné pour moi:

brew uninstall libyaml
rvm autolibs enable
rvm reinstall ruby-2.1.1
user33302
la source
Merci @ user33302. La solution ci-dessus a également fonctionné pour moi sur Mac OS EI CAPITON.
Sandeep Ahuja
3

J'ai eu le même problème (Lion 10.7.4), et je l'ai résolu en mettant à jour rvm puis en réinstallant ruby

1) mettre à niveau rvm https://rvm.io//rvm/install/

curl -L https://get.rvm.io | bash -s stable --ruby

2) Ensuite, utilisez rvm pour réinstaller ruby ​​1.9.3 (qui avait été précédemment installé avec la version antérieure de rvm)

rvm reinstall 1.9.3
user761552
la source
3

J'ai réinstallé ruby ​​1.9.3 avec le support libyaml:

rvm reinstall 1.9.3 --with-libyaml

Je me suis assuré que j'utiliserais 1.9.3 avant d'installer psych:

rvm use 1.9.3

J'ai installé psych:

gem install psych
Adam
la source
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

rechargez votre .rvmrc (sortie cd, entrée cd)

bundle
vysogot
la source
2

Aucune de ces réponses n'a fonctionné pour moi.

J'ai trouvé ma réponse sur https://github.com/sstephenson/ruby-build/issues/119 Je suis sur la machine virtuelle Centos 6.3.

VOUS DEVEZ installer libyaml avant d'installer ruby. SI vous avez DÉJÀ installé ruby, vous devez vous débarrasser des fichiers avant de recompiler les sources !!!

# 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
chemoish
la source
2

J'ai construit les fichiers libyaml séparément de la source et les ai installés dans / usr / local / lib. Le rubis que RVM a créé ne les a toujours pas vus, et plutôt que de bouffer avec le makefile ou le système LD_LIBRARY_PATH, j'ai juste copié / usr / local / lib / libyaml * dans ~ / .rvm / rubies / ruby-1.9.3-p327 / lib /

Cela a calmé l'avertissement.

Dave Hildebrandt
la source
2

Voici ce qui a fonctionné pour moi sur Ubuntu:
- installer libyaml-dev (sudo apt-get install libyaml-dev)
- installer rvm + ruby ​​1.9.3

Luc
la source
2

J'ai essayé toutes ces réponses et je n'ai toujours pas réussi à le faire fonctionner. J'ai installé libyaml avec homebrew puis installé Ruby 1.9.3 et 2.0.0 avec rvm. A chaque fois, il se plaignait que je manquais de psych (libyaml). Mais essayer d'installer libyaml m'a dit qu'il était déjà installé. Rincez, répétez. Urgh.

Enfin, j'ai désinstallé libyaml. Ensuite, j'ai activé les autolibs dans rvm , ce qui (au moins sous OSX) permet à rvm d'installer et de gérer les dépendances plus directement. Maintenant, quand j'ai installé les Rubies, rvm a pu installer libyaml et reconnaître qu'il était au bon endroit.

Donc, si vous avez essayé toutes les autres options, essayez de supprimer libyaml, puis d'installer vos Rubies. Il est intuitif à partir des messages d'erreur, mais c'est ce qui a finalement fonctionné pour moi.

Bob Ralian
la source
Vous n'avez pas besoin de libyaml: vous avez besoin de libyaml-dev, qui est ce que rvm installe pour vous avec --autolibs
Confusion
1

J'ai eu le même problème ( Cent OS 5.7 ), aucune des solutions ci-dessus n'a fonctionné pour moi.

// 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.

Après avoir fait plusieurs réinstallations, j'ai réalisé qu'il recherchait yaml dans la version ruby ​​de 1.9.1au lieu de 1.9.3. Alors j'ai déclassé

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

Et cela a fonctionné 8D!

Ish
la source
1

Sur CentOS 6.3, rien de ce qui précède n'a fonctionné. Cependant, l'installation de libyaml à partir des sources avant d' installer ruby ​​a résolu le problème.

$ 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

puis

rvm install 1.9.3
gem install rails
Dmitry G.
la source
1

j'utilise

rvm 1.16.20 (version) par Wayne E. Seguin, Michal Papis [https://rvm.io/]

et a également obtenu l'erreur suivante lors de l'installation du bundle

.rvm / rubies / ruby-1.9.3-p194 / lib / ruby ​​/ 1.9.1 / yaml.rb: 56: in `` ': Il semble que votre installation ruby ​​manque psych (pour la sortie YAML). Pour éliminer cet avertissement, veuillez installer libyaml et réinstaller votre ruby.

Voici trois façons différentes de résoudre cette erreur sans avoir à installer gem psych

  1. export LD_LIBRARY_PATH = / usr / local / lib
  2. modifier /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. Correction de l'installation de RVM Ruby 1.9.3 via

    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 / fonctions / gérer / ruby
    *** .rvm / src / rvm / scripts / functions / manage / ruby ​​10/11/2012 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 est installé dans ruby ​​lui-même donc il sera déplacé avec 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"]]
    ! puis __rvm_update_configure_env LDFLAGS = "- L $ {rvm_rubies_path} / $ {rvm_ruby_string} / lib64"
              Fi
            autre
              libyaml_installed || libyaml # Installe libyaml

    ! __rvm_update_configure_env CFLAGS = "- I $ {rvm_path} / usr / include"
    ! __rvm_update_configure_env LDFLAGS = "- L $ {rvm_path} / usr / lib"
              si [[-d "$ {chemin_vm} / usr / lib64"]]
    ! puis __rvm_update_configure_env LDFLAGS = "- L $ {rvm_path} / usr / lib64"
              Fi
            Fi

    --- 106 123 ----
              # when relative is in effect libyaml est installé dans ruby ​​lui-même donc il sera déplacé avec 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
            autre
              libyaml_installed || libyaml # Installe libyaml

    ! __rvm_update_configure_env CFLAGS = "- I $ {rvm_path} / usr / include $ {CFLAGS}"
    ! __rvm_update_configure_env LDFLAGS = "- L $ {chemin_rvm} / usr / lib $ {LDFLAGS}"
              si [[-d "$ {chemin_vm} / usr / lib64"]]
    ! puis __rvm_update_configure_env LDFLAGS = "- L $ {rvm_path} / usr / lib64 $ {LDFLAGS}"
              Fi
            Fi

victorv
la source
J'ai confirmé que ce correctif n'est pas nécessaire si vous utilisez la dernière version stable de RVM 1.18.4
victorv
1

J'ai également lutté contre les mêmes échecs rvm install ruby-2.0.0pendant de nombreuses heures. J'avais essayé toutes les différentes méthodes pour installer libyaml; wget source, yumet rvm. J'ai également essayé toutes les différentes approches répertoriées dans des fils similaires. Parce que j'ai essayé toutes les différentes méthodes, j'ai eu plusieurs installations et emplacements de libyaml.

RVM est parfaitement capable d'installer les dépendances nécessaires dans ~/.rvm. La simple suppression des fichiers libyaml d'une installation non-RVM a résolu ce problème pour moi:

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

rvm reinstall ruby-2.0.0-p0

Travaux!

Andrejs R.
la source
1

Méthode d'installation ruby ​​NON-RVM.

% 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"

DÉSACTIVEZ rpmforge en éditant ce fichier et définissez 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  

Le libyaml-devel est la clé.

% 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

Mettez à jour votre chemin et votre source .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

Définissez votre GEM_HOME dans .cshrc et source

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

% gem install mysql2 pg ruby-debug-ide rails capistrano capistrano-ext passenger
Francis Trujillo
la source
1

Si vous construisez ruby ​​à partir des sources (j'ai construit la 1.9.3 sur Fedora 20), vous en aurez besoin avant de faire la configuration / la création pour construire ruby:

yum install libyaml-devel

(en plus de yum install libyaml.) Similaire à la réponse de Francis utilisant rpmforge ci-dessus.

Don Law
la source
Également confirmé sur Centos 5.6
marcovtwout
1

J'avais cette erreur et j'ai remarqué que j'avais différentes versions de Ruby installées avec HomeBrew, ainsi que de nombreuses gemmes que je n'utilisais plus. Alors a fait un nettoyage complet comme ceci:

$ 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

Si vous n'utilisez pas a Gemfile, assurez-vous de savoir quelles gemmes réinstaller.

Eneko Alonso
la source
1

Dans mon cas, tout ce que j'avais à faire était

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

Maintenant, FWIW, gem listcomprend

psych (2.2.4, default: 2.2.2)
orome
la source
Je suis sur macOS Sierra, et cela a fonctionné pour moi. C'est la même solution rapportée dans ce problème GitHub ici Essayez d'abord cette solution car elle est beaucoup plus simple et moins drastique que les autres de cette page.
mljrg
1
  • Ubuntu
  • Utilisation de RVM
  • Raison: Versions conflictuelles de gemmes Psych entre ruby ​​2.4.4 et ruby ​​2.5.1

J'ai passé quelques heures à essayer de faire disparaître mon erreur et aucune des réponses ici ne convenait à mon cas, alors j'ai pensé que je publierais comment je l'ai résolu ...

Dans mon cas, lorsque j'ai couru gem list | grep psych, j'avais la sortie suivante:psych(default: 3.1.0, default: 3.0.2) .

Apparemment, depuis la version 2.5.0, ruby ​​dépend de la version la plus récente de psych (3.1.0) et avoir les deux par défaut était tout gâcher. Notez que je n'ai jamais fini par découvrir pourquoi ils étaient tous les deux définis par défaut - j'ai complètement effacé les versions rvm et ruby ​​de mon ordinateur à cause de cela.

Donc, pour supprimer l'ancienne version (3.0.2) par défaut, dirigez-vous vers ~/.rvm/gems/ruby-x.x.x@global/specifications/default. Si vous l'exécutez ls | grep psych, les deux versions de la gemme seront renvoyées ici. Si vous souhaitez conserver 3.1.0 par défaut, exécutez simplement mv psych-3.0.2.gemspec ../, puis essayez d'exécuter gemlistpour vous assurer qu'il ne répertorie qu'une seule version par défaut maintenant ...

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

J'espère que cela aide quelqu'un!

vicentesantos
la source
0

Sur Snow Leopard, la solution de Catharz n'a pas fonctionné pour moi. Cette solution, cependant, a fait:

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

(La réinstallation de rvm m'a averti que clang n'avait pas l'option "--with-libyaml" mais a résolu le message d'erreur malgré tout.)

Mrrena
la source
0

Cela a fonctionné pour moi au moins sur Ubuntu 10.04

$ sudo apt-get install libtool

$ rvm réinstaller 1.9.3

Abhay PS
la source
0

Sur Solaris:

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

à ajouter /usr/local/libau chemin de recherche de la bibliothèque partagée (voir man crle)

edx
la source
Cette question sur os x.
zishe
0

Quand je suis passé de 64 bits à 32 bits sur Snow Leopard 10.6.8, j'avais réinstallé ruby ​​(utilisé rvm) pour fonctionner sur 32 bits et rencontré le même problème. Donc, je viens de «nettoyer» tout ce qui avait été mis en cache par rvm auparavant et les problèmes résolus. J'espère que cette astuce peut aider quelqu'un.

rvm nettoyer tout

rvm install ruby_version_here // (De cette façon, rvm re-téléchargera également le dernier yaml).

BTW, si vous rencontrez toujours ce problème, je pense que vous pouvez essayer:

gem installer psych

anguu
la source