web-dev-qa-db-fra.com

comment résoudre l'erreur "L'installation de Ruby manque psych"?

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 une gemme (disons 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).

156
Pouya

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 que libtool est 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
217
peterpengnz

pour Ubuntu et RVM

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

travaillé

20
Gizmomogwai

Si vous n'utilisez pas rvm, vous construisez et installez plutôt Ruby 1.9.3 - par exemple, vous gérez vos versions de Ruby avec rbenv - vous devez d'abord installer libyaml. Obtenez-le de http://pyyaml.org/ ; pour le moment, le fichier que vous souhaitez utiliser est http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz . Ouvrez l'archive et le CD dans le dossier résultant. Ensuite:

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

Vous êtes maintenant prêt à construire Ruby. Téléchargez Ruby à partir de http://ftp.Ruby-lang.org/pub/Ruby/ . Ouvrez l'archive et le CD dans le dossier résultant. Maintenant:

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

(Ou éventuellement Sudo make install, selon l'endroit où vous le placez.) Si vous utilisez rbenv, vous saurez que cela a fonctionné si vous passez à rbenv global 1.9.3-p194 (ou à tout le nom de votre version) et gem --version fonctionne sans avertissement. Cela a fonctionné pour moi sur Mac OS X 10.6.8. ( Mise à jour : Je viens d'essayer cela sous Mac OS X 10.8.1 et cela semble avoir bien fonctionné là aussi.)

19
matt
brew install libyaml
rvm reinstall 1.9.3

Est ce ce qui a fonctionné pour moi (sur Snow Leopard).

16
Catharz

Dans mon cas, la solution consistait à ajouter la gemme psych au fichier Gemfile.

9
Vanuan

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

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

Cela a résolu mon problème.

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

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 supprimera toutes les gemmes installées. Il est préférable d’enregistrer une liste des gemmes installées avec gem list avant de l’exécuter.

4
orkoden

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.

4
Michael

Installer Ruby avec rvm pour mac osx, utilisez autolibs pour installer libyaml et la première désinstallation de libyaml vous aidera.

Cela a fonctionné pour moi:

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

J'ai eu le même problème (Lion 10.7.4), et corrigé 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) Puis utilisez rvm pour réinstaller Ruby 1.9.3 (précédemment installé avec la version précédente de 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

recharger votre .rvmrc (cd out, cd in)

bundle
2
vysogot

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 ps:

rvm use 1.9.3

J'ai installé psy:

gem install psych
2
adamo

C'est ce qui a fonctionné pour moi sur Ubuntu:
- installer libyaml-dev (Sudo apt-get installer libyaml-dev)
- installation de rvm + Ruby 1.9.3

2
Luc

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 Ruby 1.9.3 et 2.0.0 avec rvm. Chaque fois, il s'est plaint de mon manque de psy (libyaml). Mais essayer d'installer libyaml m'a dit qu'il était déjà installé. Rincez, répétez. Urgh.

Enfin, ce que j'ai fait était de désinstaller libyaml. Alors je autolibs activés dans rvm , ce qui (du moins sous OSX) permet à rvm d’installer et de gérer les dépendances plus directement. Maintenant, lorsque j’ai installé les Rubies, rvm a pu installer libyaml et a reconnu qu’il se trouvait au bon endroit.

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

2
Bob Ralian

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 compiler à nouveau la source !!!

# 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

J'ai construit les fichiers libyaml séparément des sources et les ai installés dans/usr/local/lib. Le Ruby que RVM a créé n'a toujours pas été vu, et plutôt que de bouder avec le makefile ou le système LD_LIBRARY_PATH, je viens de copier/usr/local/lib/libyaml * dans ~/.rvm/rubies/Ruby- 1.9.3-p327/lib /

Cela a calmé l'avertissement.

2
Dave Hildebrandt

J'avais cette erreur et j'ai remarqué que différentes versions de Ruby étaient installées avec HomeBrew, ainsi que de nombreux joyaux que je n'utilisais plus. Ainsi 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 de Gemfile, assurez-vous de connaître les gems à réinstaller.

1
Eneko Alonso

NON-RVM Ruby méthode d'installation.

% 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 modifiant 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
1
Francis Trujillo

Sur CentOS 6.3, rien de ce qui précède n'a fonctionné. Cependant, l’installation de libyaml à partir de la source avant l’installation de 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
1
Dmitry G.

J'ai eu le même problème (Cent OS 5.7), aucune des solutions ci-dessus ne fonctionnait 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 plusieurs réinstallations, je me suis rendu compte que yaml était recherché dans la version Ruby de 1.9.1 au lieu de 1.9.3. Donc 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!

1
Ish

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 list inclut

psych (2.2.4, default: 2.2.2)
1
orome

Si vous construisez Ruby à partir des sources (j'ai compilé 1.9.3 sur Fedora 20), vous en aurez besoin avant de configurer/faire pour compiler Ruby:

yum install libyaml-devel

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

1
Don Law

J'utilise

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

et aussi obtenu l'erreur suivante lors de l'installation du paquet

.rvm/rubies/Ruby-1.9.3-p194/lib/Ruby/1.9.1/yaml.rb: 56: dans `': Il semble que votre installation Ruby manque de psy (pour la sortie YAML) . Pour éliminer cet avertissement, installez libyaml et réinstallez votre Ruby.

Voici trois façons différentes de résoudre cette erreur sans devoir installer gem psy

  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/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 **** 
 # Quand un parent est en vigueur libyaml est installé dans Ruby lui-même et sera donc 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" 
 si [[-d "$ {rvm_rubies_path}/$ {rvm_Ruby_Ruby_string}/lib64"]]. then __rvm_update_configure_env LDFLAGS = "- L $ {rvm_rubies_path}/$ {rvm_Ruby_string}/lib64" 
 fi 
 else 
 libyaml_installed || libyaml # Installe libyaml 
 
! __rvm_update_configure_env CFLAGS = "- I $ {chemin_rvm}/usr/include" 
! __rvm_update_configure_env LDFLAGS = "- L $ {chemin_rvm}/usr/lib" 
 if [[-d "$ {chemin_rvm}/usr/lib64"]] 
! then __rvm_update_configure_env LDFLAGS = "- L $ {rvm_path}/usr/lib64" 
 fi 
 fi 
 
 --- 106,123 ---- 
 # quand relatif est en vigueur libyaml est installé dans Ruby lui-même et sera donc 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}" .____ []. .]! then __rvm_update_configure_env LDFLAGS = "- L $ {rvm_rubies_path}/$ {rvm_Ruby_string}/lib64 $ {LDFLAGS}" 
 f 
 sinon 
 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}" 
 if [[-d "$ {chemin_rvm}/usr/lib64"]] 
! then __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

J'ai eu un problème similaire après la mise à jour OSX, ce qui résout mon problème:

   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*

trouvé ici

0
B1z

Cela a fonctionné pour moi au moins sur Ubuntu 10.04

$ Sudo apt-get install libtool

$ rvm réinstallez 1.9.3

0
Abhay PS

Sous Solaris:

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

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

0
edx

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

RVM est parfaitement capable d'installer les dépendances nécessaires dans ~/.rvm. Supprimer simplement les fichiers libyaml de l’installation non-RVM a corrigé ce problème pour moi:

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

rvm reinstall Ruby-2.0.0-p0

Travaux!

0
Andrejs R.

Lorsque je passais de 64 bits à 32 bits sur Snow Leopard 10.6.8, j'avais réinstallé Ruby (rvm utilisé) pour fonctionner en 32 bits et rencontrait le même problème. Je viens donc de "nettoyer" tout ce qui a été mis en cache par rvm auparavant et les problèmes résolus. J'espère que cette astuce peut aider quelqu'un.

rvm tout nettoyer

rvm install Ruby_version_here // (De cette façon, rvm téléchargera de nouveau le dernier fichier yaml).

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

bijou installer psych

0
anguu

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

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

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

0
mrrena

Pour ceux avec Mountain Lion et version RVM> = 1.18.x

RVM est livré avec ce nouvel outil qui sert d'indicateur lors de l'installation des versions Ruby. Cela s'appelle autolibs.

Je me suis débarrassé de ce problème psychique en procédant comme suit:

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

Lisez le texte d'aide AVANT en faisant:

rvm help autolibs

Cool.

0
Alan Andrade