come risolvere l'errore "installazione ruby ​​mancante psich"?


158

Ho usato rvm per installare ruby ​​1.9.3. anche se è stato installato con successo, si è lamentato di libyaml. e ora ogni volta che voglio installare una gemma (diciamo rotaie) questo avviso appare:

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

Uso Mac os X 10.7 (Lion).


Hai provato a installare libyaml seguendo queste istruzioni: pyyaml.org/wiki/LibYAML ?
marinaio

1
Stai usando l'homebrew? Prova brew doctor. Elenca un problema con il collegamento libyaml?
Stoutie

3
Utenti Mac: rm -rf /usr/local/lib/ruby/gems/ && brew reinstall rubycome affermato nel problema risolto Gtihub ufficiale homebrew-core
Travis Clarke

Risposte:


218

Nel mio caso

rvm pkg install libyaml

e

rvm reinstall ruby-1.9.3-p125

problema risolto.

Per le persone che usano Ubuntu, assicurati che libtoolsia installato prima dei passaggi precedenti:

sudo apt-get install libtool

Per utenti macOS (con homebrew):

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

11
Intendi davvero:rvm package install libyaml
johncblandii,

3
No, intendeva dire rvm pkg install libyaml. Da rvm usage: pkg :: Install a dependency package {readline,iconv,zlib,openssl}.
jordanpg,

Penso che dipenda da quale versione di rvm usi. In rvm 1.6.9 lo è package.
Vanuan,

8
Dopo l'esecuzione, rvm pkg install libyamlsi consiglia di reinstallare tutti i rubini con rvm reinstall all --force. Potrebbe essere utile se ne hai più di uno.
Haralan Dobrev,

7
rvm reinstall 1.9.3 --with-libyaml-dir=/home/rails/.rvm/usr
Dovevo

20

per ubuntu e rvm

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

lavorato


1
Ho dovuto 'rvm uninstall all' prima di installare libyaml. Questo è l'unico modo per eliminare l'errore
Sunil Gowda,

19

Se non usi rvm, ma piuttosto stai costruendo e installando ruby ​​1.9.3 da zero - ad esempio, stai gestendo le tue versioni ruby ​​con rbenv - devi prima installare libyaml. Scarica da http://pyyaml.org/ ; al momento, il file desiderato è http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz . Apri il tarball e cd nella cartella risultante. Poi:

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

Ora sei pronto per costruire il rubino. Scarica ruby ​​da http://ftp.ruby-lang.org/pub/ruby/ . Apri il tarball e cd nella cartella risultante. Adesso:

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

(O forse sudo make install, a seconda di dove lo stai inserendo.) Se usi rbenv, saprai che ha funzionato se passi a rbenv global 1.9.3-p194(o come si chiama la tua versione) e gem --versionfunziona senza un avviso. Questo ha funzionato per me su Mac OS X 10.6.8. ( Aggiornamento : ho appena provato questo su Mac OS X 10.8.1 e sembra aver funzionato bene anche lì.)


cosa dovrebbe produrre gem --version output? Ho installato Ruby 1.9.3-p327 ma gem --version genera 1.8.23 (non sono sicuro che sia correlato) e quando faccio l'aggiornamento del bundle, stranamente dice che alcune gemme richiedono => 1.9.2 stackoverflow.com/questions/ 14116083 /…
Leahcim,

i tuoi gem --versionsuoni sono corretti, ma forse hai il tuo percorso confuso a causa dell'uso precedente di rvm
matt

4
E se è necessario installare yaml senza sudo, specificare un prefisso diverso da /usr/localquando si configura yaml, quindi configurare ruby ​​con--with-opt-dir=/path/to/yaml/prefix --with-yaml --prefix=/path/to/ruby/prefix
Chadwick,

So che ha più di un anno, ma la domanda riguardava un errore con RVM. Come si può iniziare con "If not using rvm"?
Peter Degen-Portnoy,

18
brew install libyaml
rvm reinstall 1.9.3

È quello che ha funzionato per me (su Snow Leopard).


Ho dovuto fare anche questo. rvm pkg install libyaml non l'ha fatto per me.
stringo0,

9

Nel mio caso la soluzione era quella di aggiungere la psychgemma al Gemfile.


6

Ho avuto questo problema libyaml non si sarebbe compilato. Si scopre che mi mancava libtool.

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

Ciò ha risolto il mio problema.


1
Nessun pacchetto libtool disponibile. Niente da fare.
Paul,

1
centos non riesci a installare libtool? non ci credo .. stai usando un sistema non redhat e hai bisogno di apt-get?
phil88530,

@ phil88530 la vecchia versione di CentOS può essere più stupida di quanto pensi
Dennis C

@DennisCheung oh ok, non ho mai giocato con un vecchio
phil88530,

6

Se hai installato ruby ​​su macOS con homebrew, prova questa soluzione .

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

Nota che questo eliminerà tutte le gemme installate. Meglio salvare un elenco di gemme installate con gem listprima di eseguire questo.


Ma gem listè ciò che causa l'errore in primo luogo (per me).
orome,

5
$ brew doctor
$ brew link libyaml

Risolvere tutti i brew doctorproblemi risolto per me. Ho riscontrato un errore molto simile all'errore dell'interrogatore durante il tentativo di gem install jekyll. Anche tutti i comandi tramite rvm davano errori. Il problema sottostante e non così ovvio è che l'homebrew, suppongo che il modo in cui rvm installa roba, abbia avuto problemi. Di recente avevo eseguito l'aggiornamento a Mavericks su Mac OS. Nel mio caso, la risoluzione di tutti i brew doctorproblemi ha eliminato ogni singolo messaggio di errore. Ora tutto funziona senza intoppi.
Stoutie

4

L'ho risolto finalmente. Il problema era che anche se ho installato libyaml con brew, non è mai stato collegato. Ho dovuto rimuovere un file di intestazione in conflitto e quindi brew link libyaml.


4

Installare ruby ​​con rvm per mac osx, utilizzare autolibs per installare libyaml e la prima disinstallazione di libyaml aiuta.

Questo ha funzionato per me:

brew uninstall libyaml
rvm autolibs enable
rvm reinstall ruby-2.1.1

Grazie @ user33302. La soluzione sopra ha funzionato anche per me su Mac OS EI CAPITON.
Sandeep Ahuja,

3

Ho avuto lo stesso problema (Lion 10.7.4) e l'ho risolto aggiornando rvm e reinstallando ruby

1) aggiorna rvm https://rvm.io//rvm/install/

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

2) Quindi utilizzare rvm per reinstallare ruby ​​1.9.3 (che era stato precedentemente installato con la versione precedente di rvm)

rvm reinstall 1.9.3

3

Ho reinstallato ruby ​​1.9.3 con il supporto libyaml:

rvm reinstall 1.9.3 --with-libyaml

Mi sono assicurato che avrei usato 1.9.3 prima di installare psych:

rvm use 1.9.3

Ho installato psych:

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

ricaricare il tuo .rvmrc (cd out, cd in)

bundle

2

Nessuna di queste risposte ha funzionato per me.

Ho trovato la mia risposta su https://github.com/sstephenson/ruby-build/issues/119 Sono su Centos 6.3 Virtual Machine.

DEVI installare libyaml prima di installare ruby. Se hai già installato ruby ​​devi sbarazzarti dei file prima di compilare di nuovo il sorgente !!!

# 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

Ho creato i file libyaml separatamente dal sorgente e li ho installati in / usr / local / lib. Il rubino creato da RVM non li vedeva ancora, e piuttosto che confondere con il makefile o il sistema LD_LIBRARY_PATH Ho appena copiato / usr / local / lib / libyaml * in ~ / .rvm / rubies / ruby-1.9.3-p327 / lib /

Ciò ha calmato l'avvertimento.


2

Questo è ciò che ha funzionato per me su Ubuntu:
- installazione di libyaml-dev (sudo apt-get install libyaml-dev)
- installazione di rvm + ruby ​​1.9.3


2

Ho provato tutte queste risposte e ancora non sono riuscito a farlo funzionare. Ho installato libyaml con homebrew e poi ho installato Ruby 1.9.3 e 2.0.0 con rvm. Ogni volta si lamentava che mi mancava lo psic (libyaml). Ma provare a installare libyaml mi ha detto che era già installato. Risciacqua, ripeti. Urgh.

Alla fine, quello che ho fatto è stato disinstallare libyaml. Quindi ho abilitato Autolibs in rvm , che (almeno in OSX) consente a rvm di installare e gestire le dipendenze più direttamente. Ora, quando ho installato i rubini, rvm è stato in grado di installare libyaml e riconoscere che era nel posto giusto.

Quindi, se hai provato tutte le altre opzioni, prova a rimuovere libyaml e quindi a installare i tuoi rubini. È intuitivo dal punto di vista dei messaggi di errore, ma è quello che alla fine ha funzionato per me.


Non hai bisogno di libyaml: hai bisogno di libyaml-dev, che è ciò che rvm installa per te con --autolibs
Confusion,

1

Ho avuto lo stesso problema ( Cent OS 5.7 ), nessuna delle soluzioni di cui sopra ha funzionato per me.

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

Dopo aver fatto diverse reinstallazioni, mi sono reso conto che stava cercando yaml nella versione ruby 1.9.1anziché 1.9.3. Quindi ho declassato

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

E ha funzionato 8D!


1

Su CentOS 6.3 nessuno dei precedenti ha funzionato. Tuttavia, l'installazione di libyaml dal sorgente prima di installare ruby ​​ha risolto il problema.

$ 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

e poi

rvm install 1.9.3
gem install rails

1

sto usando

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

e ho anche ricevuto il seguente errore durante l'installazione del bundle

.rvm / rubies / ruby-1.9.3-p194 / lib / ruby ​​/ 1.9.1 / yaml.rb: 56: in ``: Sembra che la tua installazione di ruby ​​manchi di psych (per l'output YAML). Per eliminare questo avviso, installa libyaml e reinstalla il tuo ruby.

Ecco tre modi diversi per risolvere questo errore senza dover installare gemme psych

  1. export LD_LIBRARY_PATH = / usr / local / lib
  2. alter /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. Correggere l'installazione di rvm ruby ​​1.9.3 tramite

    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 /,} script / funzioni / gestisci / ruby
    *** .rvm / src / rvm / script / funzioni / gestisci / ruby ​​2012-11-10 06: 28: 14.000000000 +0000
    --- .rvm / script / funzioni / manage / ruby ​​25-01-2013 17: 18: 00.000000000 +0000
    ***************
    *** 106.123 ****
              # quando il parente è in effetti libyaml è installato nel ruby ​​stesso, quindi verrà spostato con 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"]]
    ! allora __rvm_update_configure_env LDFLAGS = "- L $ {rvm_rubies_path} / $ {rvm_ruby_string} / lib64"
              fi
            altro
              libyaml_installed || libyaml # Installa 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"]]
    ! allora __rvm_update_configure_env LDFLAGS = "- L $ {rvm_path} / usr / lib64"
              fi
            fi

    --- 106.123 ----
              # quando il parente è in effetti libyaml è installato nel ruby ​​stesso, quindi verrà spostato con 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"]]
    ! quindi __rvm_update_configure_env LDFLAGS = "- L $ {rvm_rubies_path} / $ {rvm_ruby_string} / lib64 $ {LDFLAGS}"
              fi
            altro
              libyaml_installed || libyaml # Installa 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"]]
    ! quindi __rvm_update_configure_env LDFLAGS = "- L $ {rvm_path} / usr / lib64 $ {LDFLAGS}"
              fi
            fi


Ho confermato che questa patch non è necessaria se si utilizza l'ultima versione stabile di rvm 1.18.4
victorv,

1

Ho anche lottato con gli stessi fallimenti rvm install ruby-2.0.0per molte, MOLTE ore. Avevo provato tutti i diversi metodi per installare libyaml; wget source, yumE rvm. Ho anche provato tutti i diversi approcci elencati in thread simili. Poiché ho provato tutti i diversi metodi, avevo più installazioni e posizioni di libyaml.

RVM è perfettamente in grado di installare le dipendenze necessarie in ~/.rvm. La semplice rimozione dei file libyaml dall'installazione non RVM ha risolto questo problema per me:

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

rvm reinstall ruby-2.0.0-p0

Lavori!


1

Metodo di installazione rubino 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"

DISABILITARE rpmforge modificando questo file e impostando 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  

Il libyaml-devel è la chiave.

% 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

Aggiorna il tuo percorso e sorgente .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

Imposta il tuo GEM_HOME in .cshrc e sorgente

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

% gem install mysql2 pg ruby-debug-ide rails capistrano capistrano-ext passenger

1

Se stai costruendo ruby ​​dalla fonte (ho creato 1.9.3 su Fedora 20), avrai bisogno di questo prima di fare la configurazione / make per costruire ruby:

yum install libyaml-devel

(oltre a yum install libyaml.) Simile alla risposta di Francis usando rpmforge sopra.


Confermato anche su Centos 5.6
marcovtwout il

1

Stavo avendo questo errore e ho notato che avevo installato diverse versioni di Ruby con HomeBrew, insieme a molte gemme che non utilizzavo più. Quindi ha fatto una pulizia completa come questa:

$ 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

Se non usi a Gemfile, assicurati di sapere quali gemme reinstallare.


1

Nel mio caso tutto ciò che dovevo fare era

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

Ora, FWIW, gem listinclude

psych (2.2.4, default: 2.2.2)

Sono su macOS Sierra e questo ha funzionato per me. È la stessa soluzione riportata in questo numero di GitHub qui Prova prima questa soluzione poiché è molto più semplice e meno drastica delle altre in questa pagina.
mljrg il

1
  • Ubuntu
  • Utilizzando RVM
  • Motivo: versioni gemme Psych in conflitto tra ruby ​​2.4.4 e ruby ​​2.5.1

Ho trascorso alcune ore a cercare di eliminare il mio errore e nessuna delle risposte qui era adatta al mio caso, quindi ho pensato di pubblicare come l'ho risolto ...

Nel mio caso, quando mi sono imbattuto gem list | grep psych, ho avuto il seguente risultato: psych(default: 3.1.0, default: 3.0.2).

Apparentemente dalla versione 2.5.0, ruby ​​dipende dalla versione più recente di psych (3.1.0) e avere entrambe le impostazioni predefinite stava rovinando tutto. Si noti che non ho mai scoperto perché quelli erano entrambi impostati come predefiniti - a causa di ciò ho completamente cancellato le versioni rvm e ruby ​​dal mio computer.

Quindi, per rimuovere la versione precedente (3.0.2) dall'impostazione predefinita, vai su ~/.rvm/gems/ruby-x.x.x@global/specifications/default. Se lo esegui ls | grep psychrestituirà qui entrambe le versioni della gemma. Se si desidera mantenere la versione 3.1.0 come predefinita, basta eseguire mv psych-3.0.2.gemspec ../e quindi provare a eseguire gemlistper assicurarsi che stia elencando solo una versione come predefinita ora ...

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

Spero che questo aiuti qualcuno!


0

Su Snow Leopard, la soluzione di Catharz non ha funzionato per me. Questa soluzione, tuttavia, ha fatto:

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

(La rvm reinstallata mi ha dato un avvertimento sul fatto che clang non ha l'opzione "--with-libyaml" ma ha risolto il messaggio di errore a prescindere.)


0

Questo ha funzionato per me almeno su Ubuntu 10.04

$ sudo apt-get install libtool

$ rvm reinstall 1.9.9


0

Su Solaris:

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

da aggiungere /usr/local/libal percorso di ricerca della libreria condivisa (vedi man crle)


Questa domanda su os x.
Il

0

Quando passo da 64 bit a 32 bit su Snow Leopard 10.6.8, ho reinstallato ruby ​​(usato rvm) per funzionare su 32 bit e ho riscontrato lo stesso problema. Quindi ho semplicemente 'ripulito' tutto ciò che è stato memorizzato nella cache prima di rvm e che i problemi sono stati risolti. Spero che questo suggerimento possa aiutare qualcuno.

rvm cleanup all

rvm install ruby_version_here // (In questo modo, rvm scaricherà di nuovo anche il più recente yaml).

A proposito, se riscontri ancora questo problema, penso che puoi provare:

gem install psych

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.