¿Cómo resolver el error "la instalación de Ruby falta Psic" error?


158

Utilicé rvm para instalar ruby ​​1.9.3. A pesar de que se instaló correctamente, se quejó de libyaml. y ahora cada vez que quiero instalar una gema (digamos rieles) aparece esta advertencia:

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

Yo uso Mac os X 10.7 (Lion).


¿Has intentado instalar libyaml siguiendo estas instrucciones: pyyaml.org/wiki/LibYAML ?
marinero

1
¿Estás usando homebrew? Tratar brew doctor. ¿Enumera un problema con el enlace libyaml?
Stoutie

3
Usuarios de Mac: rm -rf /usr/local/lib/ruby/gems/ && brew reinstall rubycomo se indicó en el problema resuelto oficial de Gtihub de homebrew-core
Travis Clarke

Respuestas:


218

En mi caso

rvm pkg install libyaml

y

rvm reinstall ruby-1.9.3-p125

resuelve el problema.

Para las personas que usan Ubuntu, asegúrese de que libtoolesté instalado antes de los pasos anteriores:

sudo apt-get install libtool

Para usuarios de macOS (con homebrew):

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

11
En realidad quieres decir:rvm package install libyaml
johncblandii

3
No, quiso decir rvm pkg install libyaml. De rvm usage: pkg :: Install a dependency package {readline,iconv,zlib,openssl}.
jordanpg

Creo que depende de la versión de rvm que uses. En rvm 1.6.9 lo es package.
Vanuan

8
Después de ejecutar rvm pkg install libyaml, recomienda reinstalar todos los rubíes con rvm reinstall all --force. Puede ser útil si tiene más de uno.
Haralan Dobrev

77
Tenía que hacer rvm reinstall 1.9.3 --with-libyaml-dir=/home/rails/.rvm/usrlo sugerido en serverfault.com/questions/442150/…
pcv

20

para ubuntu y rvm

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

trabajó


1
Tuve que 'rvm desinstalar todo' antes de instalar libyaml. Esa es la única forma en que se borró el error
Sunil Gowda,

19

Si no usa rvm, sino que está construyendo e instalando ruby ​​1.9.3 desde cero, por ejemplo, está administrando sus versiones de ruby ​​con rbenv , primero debe instalar libyaml. Consíguelo en http://pyyaml.org/ ; por el momento, el archivo que desea es http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz . Abra el tarball y el CD en la carpeta resultante. Luego:

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

Ahora estás listo para construir rubí. Descargue ruby ​​desde http://ftp.ruby-lang.org/pub/ruby/ . Abra el tarball y el CD en la carpeta resultante. Ahora:

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

(O posiblemente sudo make install, dependiendo de dónde lo esté colocando). Si usa rbenv, sabrá que ha funcionado si cambia a rbenv global 1.9.3-p194(o como se llame su versión) y gem --versionfunciona sin advertencia. Eso funcionó para mí en Mac OS X 10.6.8. ( Actualización : acabo de probar esto en Mac OS X 10.8.1 y parece que también funcionó bien allí).


¿Qué debe gema - salida de versión? Instalé Ruby 1.9.3-p327 pero gem --version produce 1.8.23 (no estoy seguro de si eso está relacionado) y cuando hago la actualización de paquete, extrañamente dice que algunas gemas requieren => 1.9.2 stackoverflow.com/questions/ 14116083 / ...
Leahcim

los gem --versionsonidos correctos, pero tal vez usted tiene su camino munged debido uso anterior de RVM
mate

44
Y si debe instalar yaml sin sudo, especifique un prefijo que no sea /usr/localal configurar yaml, luego configure ruby ​​con--with-opt-dir=/path/to/yaml/prefix --with-yaml --prefix=/path/to/ruby/prefix
Chadwick

Sé que esto tiene más de un año, pero la pregunta era sobre un error con RVM. ¿Cómo podría ser apropiado comenzar con "Si no está usando rvm"?
Peter Degen-Portnoy

18
brew install libyaml
rvm reinstall 1.9.3

Es lo que funcionó para mí (en Snow Leopard).


Tenía que hacer esto también. rvm pkg install libyaml no lo hizo por mí.
stringo0

9

En mi caso, la solución fue agregar la psychgema al Gemfile.


6

Tuve este problema libyaml no compilaría. Resulta que me faltaba libtool.

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

Eso resolvió mi problema.


1
No hay paquete libtool disponible. Nada que hacer.
Paul

1
Centos no puede yum instalar libtool? no lo creas ... ¿estás usando un sistema no basado en redhat y necesitas apt-get?
phil88530

@ phil88530 la versión anterior de CentOS puede ser más estúpida de lo que piensas
Dennis C

@DennisCheung oh ok, nunca jugué con uno viejo
phil88530

6

Si ha instalado ruby ​​en macOS con homebrew, pruebe esta solución .

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

Tenga en cuenta que esto eliminará todas las gemas instaladas. Es mejor guardar una lista de gemas instaladas gem listantes de ejecutar esto.


Pero gem listes lo que causa el error en primer lugar (para mí).
orome

5
$ brew doctor
$ brew link libyaml

Resolver todos los brew doctorproblemas me lo solucionó. Obtuve un error muy similar al error del interrogador al intentarlo gem install jekyll. Todos los comandos a través de rvm también estaban dando errores. El problema subyacente y no tan obvio es que homebrew, supongo que el medio por el cual rvm instala cosas, tenía problemas. Recientemente me actualicé a Mavericks en Mac OS. En mi caso, resolver todos los brew doctorproblemas eliminó cada mensaje de error. Ahora todo funciona sin problemas.
Stoutie

4

Finalmente lo arreglé. El problema era que, aunque instalé libyaml con brew, nunca estaba vinculado. Tuve que eliminar un archivo de encabezado conflictivo y luegobrew link libyaml .


4

Instalando ruby ​​con rvm para mac osx, use autolibs para instalar libyaml y primero desinstalar libyaml ayuda.

Esto funcionó para mí:

brew uninstall libyaml
rvm autolibs enable
rvm reinstall ruby-2.1.1

Gracias @ user33302. La solución anterior también funcionó para mí en Mac OS EI CAPITON.
Sandeep Ahuja

3

Tuve el mismo problema (Lion 10.7.4) y lo solucioné actualizando rvm y reinstalando ruby

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

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

2) Luego use rvm para reinstalar ruby ​​1.9.3 (que se había instalado previamente con la versión anterior de rvm)

rvm reinstall 1.9.3

3

Reinstalé ruby ​​1.9.3 con soporte de libyaml:

rvm reinstall 1.9.3 --with-libyaml

Me aseguré de usar 1.9.3 antes de instalar psych:

rvm use 1.9.3

Instalé 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

recargue su .rvmrc (cd out, cd in)

bundle

2

Ninguna de estas respuestas funcionó para mí.

Encontré mi respuesta en https://github.com/sstephenson/ruby-build/issues/119 Estoy en la máquina virtual Centos 6.3.

DEBE instalar libyaml antes de instalar ruby. SI YA instaló ruby, debe deshacerse de los archivos antes de compilar la fuente nuevamente.

# 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

Construí los archivos libyaml por separado de la fuente y los instalé en / usr / local / lib. El rubí que creó RVM todavía no los veía, y en lugar de muck con el archivo MAKE o el sistema LD_LIBRARY_PATH acabo de copiar / usr / local / lib / libyaml * a ~ / .rvm / rubies / ruby-1.9.3-p327 / lib /

Eso calmó la advertencia.


2

Esto es lo que funcionó para mí en Ubuntu:
- instalar libyaml-dev (sudo apt-get install libyaml-dev)
- instalar rvm + ruby ​​1.9.3


2

Intenté todas estas respuestas y todavía no pude hacerlo funcionar. Instalé libyaml con homebrew y luego instalé Ruby 1.9.3 y 2.0.0 con rvm. Cada vez se quejaba de que me faltaba psicología (libyaml). Pero tratar de instalar libyaml me dijo que ya estaba instalado. Enjuague, repita. Urgh

Finalmente, lo que hice fue desinstalar libyaml. Luego habilité autolibs en rvm , que (al menos en OSX) permite que rvm instale y administre dependencias más directamente. Ahora, cuando instalé los Rubies, rvm pudo instalar libyaml y reconocer que estaba en el lugar correcto.

Entonces, si ha probado todas las otras opciones, intente eliminar libyaml y luego instale Rubies. Es intuitivo por los mensajes de error, pero eso fue lo que finalmente funcionó para mí.


No necesita libyaml: necesita libyaml-dev, que es lo que rvm instala para usted con --autolibs
Confusion

1

Tuve el mismo problema ( Cent OS 5.7 ), ninguna de las soluciones anteriores me funcionó.

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

Después de hacer varias reinstalaciones, me di cuenta de que está buscando yaml en versión ruby ​​en 1.9.1lugar de 1.9.3. Así que degradé

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

¡Y funcionó 8D!


1

En CentOS 6.3 ninguno de los anteriores funcionó. Sin embargo, la instalación de libyaml desde la fuente antes de instalar ruby ​​resolvió el 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

y entonces

rvm install 1.9.3
gem install rails

1

Estoy usando

rvm 1.16.20 (versión) por Wayne E. Seguin, Michal Papis [https://rvm.io/]

y también recibí el siguiente error durante la instalación del paquete

.rvm / rubies / ruby-1.9.3-p194 / lib / ruby ​​/ 1.9.1 / yaml.rb: 56: en ``: Parece que falta la instalación de ruby ​​psych (para la salida YAML). Para eliminar esta advertencia, instale libyaml y reinstale su ruby.

Aquí hay tres formas diferentes de resolver este error sin tener que instalar gemas 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. Arreglar la instalación de rvm ruby ​​1.9.3 a través de

    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 / funciones / manage / ruby
    *** .rvm / src / rvm / scripts / funciones / manage / ruby ​​2012-11-10 06: 28: 14.000000000 +0000
    --- .rvm / scripts / funciones / manage / ruby ​​2013-01-25 17: 18: 00.000000000 +0000
    ***************
    *** 106,123 ****
              # cuando el pariente está vigente libyaml está instalado en ruby, por lo que se moverá 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"]]
    ! luego __rvm_update_configure_env LDFLAGS = "- L $ {rvm_rubies_path} / $ {rvm_ruby_string} / lib64"
              fi
            más
              libyaml_installed || libyaml # Instala 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"]]
    ! luego __rvm_update_configure_env LDFLAGS = "- L $ {rvm_path} / usr / lib64"
              fi
            fi

    --- 106,123 ----
              # cuando el pariente está vigente libyaml está instalado en ruby, por lo que se moverá 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"]]
    ! luego __rvm_update_configure_env LDFLAGS = "- L $ {rvm_rubies_path} / $ {rvm_ruby_string} / lib64 $ {LDFLAGS}"
              fi
            más
              libyaml_installed || libyaml # Instala 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"]]
    ! entonces __rvm_update_configure_env LDFLAGS = "- L $ {rvm_path} / usr / lib64 $ {LDFLAGS}"
              fi
            fi


He confirmado que este parche no es necesario si está utilizando la última versión estable de rvm 1.18.4
victorv

1

También luché con los mismos fracasos rvm install ruby-2.0.0durante muchas, MUCHAS horas. Había probado todos los métodos diferentes para instalar libyaml; wget source, yumY rvm. También probé todos los diferentes enfoques enumerados en hilos similares. Como probé todos los métodos diferentes, tuve varias instalaciones y ubicaciones de libyaml.

RVM es perfectamente capaz de instalar las dependencias necesarias en ~/.rvm. Simplemente eliminar los archivos libyaml de la instalación que no es RVM solucionó este problema para mí:

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

rvm reinstall ruby-2.0.0-p0

¡Trabajos!


1

Método de instalación rubí NO-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"

DESACTIVE rpmforge editando este archivo y establezca habilitado = 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  

El libyaml-devel es la clave.

% 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

Actualice su ruta y fuente .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

Establezca su GEM_HOME en .cshrc y fuente

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

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

1

Si está construyendo ruby ​​desde la fuente (construí 1.9.3 en Fedora 20), necesitará esto antes de hacer la configuración / make para construir ruby:

yum install libyaml-devel

(además de yum install libyaml.) Similar a la respuesta de Francis usando rpmforge arriba.


También confirmado en Centos 5.6
marcovtwout

1

Estaba teniendo este error y noté que tenía instaladas diferentes versiones de Ruby con HomeBrew, junto con muchas gemas que ya no usaba. Entonces hizo una limpieza completa como esta:

$ 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 no usa un Gemfile, asegúrese de saber qué gemas reinstalar.


1

En mi caso, todo lo que necesitaba hacer 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

Ahora, FWIW, gem listincluye

psych (2.2.4, default: 2.2.2)

Estoy en macOS Sierra, y esto funcionó para mí. Es la misma solución que se informa en este problema de GitHub aquí. Pruebe primero esta solución, ya que es mucho más simple y menos drástica que las otras en esta página.
mljrg

1
  • Ubuntu
  • Usando RVM
  • Motivo: versiones de gemas psicológicas conflictivas entre ruby ​​2.4.4 y ruby ​​2.5.1

Pasé unas horas intentando que mi error desapareciera y ninguna de las respuestas aquí se ajustaba a mi caso, así que pensé en publicar cómo lo resolví ...

En mi caso cuando me encontré gem list | grep psych, tuve el siguiente resultado: psych(default: 3.1.0, default: 3.0.2).

Aparentemente, desde la versión 2.5.0, ruby ​​depende de la versión más nueva de psych (3.1.0) y tener ambos configurados como predeterminados estaba arruinando todo. Tenga en cuenta que nunca terminé descubriendo por qué ambos estaban configurados como predeterminados: borré por completo las versiones rvm y ruby ​​de mi computadora debido a esto.

Entonces, para eliminar la versión anterior (3.0.2) de la configuración predeterminada, diríjase a ~/.rvm/gems/ruby-x.x.x@global/specifications/default. Si lo ejecuta ls | grep psych, devolverá ambas versiones de la gema aquí. Si desea mantener 3.1.0 como predeterminado, simplemente ejecute mv psych-3.0.2.gemspec ../y luego intente ejecutar gemlistpara asegurarse de que solo se enumere una versión como predeterminada ahora ...

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

¡Espero que esto ayude a alguien!


0

En Snow Leopard, la solución de Catharz no funcionó para mí. Esta solución, sin embargo, hizo:

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

(La reinstalación de rvm me dio una advertencia acerca de que clang no tenía la opción "--with-libyaml" pero resolvió el mensaje de error independientemente).


0

Esto funcionó para mí al menos en Ubuntu 10.04

$ sudo apt-get install libtool

$ rvm reinstalar 1.9.3


0

En Solaris:

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

para agregar /usr/local/liba la ruta de búsqueda de la biblioteca compartida (ver man crle)


Esta pregunta sobre os x.
zishe

0

Cuando cambié de 64 bits a 32 bits en Snow Leopard 10.6.8, reinstalé ruby ​​(utilicé rvm) para ejecutar en 32 bits y encontré el mismo problema. Así que simplemente 'limpié' todo lo que caché de rvm antes y problemas resueltos. Espero que este consejo pueda ayudar a alguien.

rvm cleanup all

rvm install ruby_version_here // (De esta forma, rvm también volverá a descargar el más nuevo yaml).

Por cierto, si aún encuentra este problema, creo que puede intentarlo:

joya instalar psic

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.