как решить ошибку "установка ruby ​​отсутствует псих"? - PullRequest
156 голосов
/ 24 февраля 2012

Я использовал rvm для установки ruby ​​1.9.3. хотя он был успешно установлен, он пожаловался на libyaml. и теперь каждый раз, когда я хочу установить гем (скажем, рельсы), появляется это предупреждение:

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

Ответы [ 32 ]

3 голосов
/ 22 июня 2012

У меня была такая же проблема (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
2 голосов
/ 17 ноября 2012

Я собрал файлы libyaml отдельно от исходного кода и установил их в / usr / local / lib.Рубин, созданный RVM, все еще не видел их, и вместо того, чтобы копаться в make-файле или системе LD_LIBRARY_PATH, я просто скопировал / usr / local / lib / libyaml * в ~ / .rvm / rubies / ruby-1.9.3-p327 /lib /

Это успокоило предупреждение.

2 голосов
/ 16 октября 2012

Ни один из этих ответов не работал для меня.

Я нашел свой ответ на https://github.com/sstephenson/ruby-build/issues/119 Я на виртуальной машине Centos 6.3.

ВЫ ДОЛЖНЫ установить libyaml перед установкой ruby. Если вы уже установили 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 голосов
/ 29 ноября 2012

Вот что у меня сработало в Ubuntu:
- установка libyaml-dev (sudo apt-get установить libyaml-dev)
- установка rvm + ruby ​​1.9.3

2 голосов
/ 25 февраля 2012
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 голосов
/ 03 мая 2013

Я переустановил ruby ​​1.9.3 с поддержкой libyaml:

rvm reinstall 1.9.3 --with-libyaml

Я убедился, что буду использовать 1.9.3 перед установкой psych:

rvm use 1.9.3

Я установил псих:

gem install psych
2 голосов
/ 21 апреля 2013

Я попробовал все эти ответы и все еще не смог заставить его работать. Я установил libyaml с homebrew, а затем установил Ruby 1.9.3 и 2.0.0 с помощью rvm. Каждый раз жаловался, что мне не хватает психов (libyaml). Но попытка установить libyaml сказала мне, что он уже установлен. Промыть, повторить. Urgh.

Наконец, я сделал удаление libyaml. Затем я включил автолибы в rvm , что (по крайней мере в OSX) позволяет rvm более напрямую устанавливать и управлять зависимостями. Теперь, когда я установил Rubies, rvm смог установить libyaml и определить, что он был в нужном месте.

Так что, если вы перепробовали все другие варианты, попробуйте на самом деле удалить libyaml и затем установить ваши рубины. Это интуитивно понятно из сообщений об ошибках, но это то, что в итоге сработало для меня.

1 голос
/ 25 января 2013

Я использую

rvm 1.16.20 (версия) от Wayne E. Seguin, Michal Papis [https://rvm.io/]

, а также получил следующую ошибку при установке пакета

.rvm / rubies / ruby-1.9.3-p194 / lib / ruby ​​/ 1.9.1 / yaml.rb: 56: in `': кажется, в вашей установке ruby ​​отсутствует psych (дляВыход YAML).Чтобы устранить это предупреждение, пожалуйста, установите libyaml и переустановите ваш ruby.

Вот три различных способа решения этой ошибки без необходимости устанавливать самоустановку psych

  1. export 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. Fix 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 ****
              # when relative is in effect libyaml is installed in ruby itself so it will be moved with 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" ]]
    !         then __rvm_update_configure_env LDFLAGS="-L${rvm_rubies_path}/${rvm_ruby_string}/lib64"
              fi
            else
              libyaml_installed || libyaml # Installs 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" ]]
    !         then __rvm_update_configure_env LDFLAGS="-L${rvm_path}/usr/lib64"
              fi
            fi

    --- 106,123 ----
              # when relative is in effect libyaml is installed in ruby itself so it will be moved with 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
            else
              libyaml_installed || libyaml # Installs 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" ]]
    !         then __rvm_update_configure_env LDFLAGS="-L${rvm_path}/usr/lib64 ${LDFLAGS}"
              fi
            fi

1 голос
/ 07 июля 2013

Метод установки без 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 и source

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

% gem install mysql2 pg ruby-debug-ide rails capistrano capistrano-ext passenger
1 голос
/ 03 октября 2017

В моем случае все что мне нужно было сделать было

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