Как решить ошибку "установка ruby ​​отсутствует псих"?

Я использовал 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).

35 ответов

Решение

В моем случае

rvm pkg install libyaml

а также

rvm reinstall ruby-1.9.3-p125

решил проблему.

Для людей, использующих Ubuntu, убедитесь, что libtool устанавливается до выполнения вышеуказанных шагов:

sudo apt-get install libtool

Для пользователей MacOS (с homebrew):

rm -rf /usr/local/lib/ruby/gems/ && brew reinstall ruby
brew install libyaml
rvm reinstall 1.9.3

Это то, что у меня сработало (на Snow Leopard).

Для убунту и рвм

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

работал

Если вы не используете rvm, а скорее собираете и устанавливаете ruby ​​1.9.3 с нуля - например, вы управляете своими версиями ruby ​​с помощью rbenv - вы должны сначала установить libyaml. Получить его с http://pyyaml.org/; на данный момент вам нужен файл http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz. Откройте архив и перейдите в получившуюся папку. Затем:

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

Теперь вы готовы построить рубин. Загрузите ruby ​​с http://ftp.ruby-lang.org/pub/ruby/. Откройте архив и перейдите в получившуюся папку. Сейчас:

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

(Или возможно sudo make install, в зависимости от того, где вы его кладете.) Если вы используете rbenv, вы поймете, что это сработало, если вы переключитесь на rbenv global 1.9.3-p194 (или как называется ваша версия) и gem --version работает без предупреждения. Это работало для меня на Mac OS X 10.6.8. (Обновление: я только что попробовал это на Mac OS X 10.8.1, и, похоже, там тоже хорошо работало.)

В моем случае решение было добавить psych драгоценный камень в Gemfile.

Если вы установили ruby ​​на macOS с помощью homebrew, попробуйте это решение.

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

Обратите внимание, что это избавит от всех установленных драгоценных камней. Лучше всего сохранить список установленных драгоценных камней с gem list прежде чем запустить это.

У меня была эта проблема. libyaml не будет компилироваться. Оказывается, мне не хватало libtool.

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

Это решило мою проблему.

$ brew doctor
$ brew link libyaml

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

rvm reinstall 1.9.3 --with-libyaml

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

rvm use 1.9.3

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

gem install psych

Установка ruby ​​с помощью rvm для Mac OSX, использование autolibs для установки libyaml и первая помощь по удалению libyaml.

Это сработало для меня:

brew uninstall libyaml
rvm autolibs enable
rvm reinstall ruby-2.1.1

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

Я наконец-то исправил это. Проблема заключалась в том, что, хотя я установил libyaml с brew, он никогда не был связан. Мне пришлось удалить конфликтующий заголовочный файл, а затем brew link libyaml,

На CentOS 6.3 ничего из вышеперечисленного не работало. Однако установка libyaml из исходного кода перед установкой ruby ​​решила проблему.

$ 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

а потом

rvm install 1.9.3
gem install rails

При проблемах сrbenvнаubuntu 22, мне пришлось установитьlibtoolиlibffi-devчерез apt и скомпилируем пакет yaml (спасибо Дмитрию за ответ):

      sudo apt install libtool
sudo apt install libffi-dev

wget https://pyyaml.org/download/libyaml/yaml-0.2.5.tar.gz
tar zxf yaml-0.2.5.tar.gz
cd yaml-0.2.5
./configure
make
make install

После этого я побежалrbenv install 3.2.2еще раз и это сработало.

У меня была такая же проблема (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

Если вы собираете ruby ​​из исходного кода (я собрал 1.9.3 на Fedora 20), вам понадобится это перед тем, как вы выполните configure/make для сборки ruby:

yum install libyaml-devel

(в дополнение к yum установите libyaml.) Аналогично ответу Фрэнсиса с использованием rpmforge выше.

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

Я нашел свой ответ на 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

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

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

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

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

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

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

Не 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, отредактировав этот файл и включив =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

Я использую

rvm 1.16.20 (версия) Уэйна Э. Сегина, Михала Паписа [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. экспорт 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. Исправить установку 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 ****
              # когда родственник активен, libyaml установлен в самом ruby, поэтому он будет перемещен с помощью 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"]]! затем __rvm_update_configure_env LDFLAGS="-L${rvm_rubies_path}/${rvm_ruby_string}/lib64"
              фи
            еще
              libyaml_installed || libyaml # Устанавливает 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"]]! затем __rvm_update_configure_env LDFLAGS="-L${rvm_path}/usr/lib64"
              фи
            фи

    --- 106 123
              # когда родственник активен, libyaml установлен в самом ruby, поэтому он будет перемещен с помощью 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"]]! затем __rvm_update_configure_env LDFLAGS="-L${rvm_rubies_path}/${rvm_ruby_string}/lib64 ${LDFLAGS}"
              фи
            еще
              libyaml_installed || libyaml # Устанавливает 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"]]! затем __rvm_update_configure_env LDFLAGS="-L${rvm_path}/usr/lib64 ${LDFLAGS}"
              фи
            фи

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

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)

У меня была такая же проблема (Cent OS 5.7), ни одно из вышеперечисленных решений мне не помогло.

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

После нескольких переустановок я понял, что он ищет yaml в ruby-версии 1.9.1 вместо 1.9.3, Так что я понизил

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

И это сработало 8D!

  • Ubuntu
  • Использование RVM
  • Причина: конфликтующие версии гемов Psych между Ruby 2.4.4 и Ruby 2.5.1

Я потратил несколько часов, пытаясь убрать свою ошибку, и ни один из ответов здесь не подходил для моего случая, поэтому я подумал, что опубликую, как я ее решил...

В моем случае, когда я бежал gem list | grep psych, У меня был следующий результат: psych(default: 3.1.0, default: 3.0.2).

Очевидно, начиная с версии 2.5.0, ruby ​​зависит от более новой версии Psy (3.1.0), и установка обоих по умолчанию испортила все. Обратите внимание, что я так и не узнал, почему они оба были установлены по умолчанию - из-за этого я полностью стер с моего компьютера версии rvm и ruby.

Итак, чтобы удалить старую версию (3.0.2) из-за установки по умолчанию, перейдите к ~/.rvm/gems/ruby-x.x.x@global/specifications/default. Если ты бежишьls | grep psychздесь будут возвращены обе версии драгоценного камня. Если вы хотите сохранить 3.1.0 по умолчанию, просто запуститеmv psych-3.0.2.gemspec ../ а затем попробуйте запустить gemlist чтобы убедиться, что сейчас по умолчанию отображается только одна версия...

tl; drcd /.rvm/gems/ruby-x.x.x@global/specifications/defaultmv psych-3.0.2 ../

Надеюсь, это кому-то поможет!

У меня была эта ошибка, и я заметил, что у меня установлены различные версии Ruby с HomeBrew, а также много драгоценных камней, которые я больше не использовал. Так что сделали полную уборку вот так:

$ 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

Если вы не используете GemfileУбедитесь, что вы знаете, какие драгоценные камни переустанавливать.

Я также боролся с теми же неудачами с rvm install ruby-2.0.0 для многих МНОГО часов. Я перепробовал все разные способы установки libyaml; wget source, yum а также rvm, Я также попробовал все различные подходы, перечисленные в похожих темах. Поскольку я попробовал все разные методы, у меня было несколько установок и локаций libyaml.

RVM вполне способен установить необходимые зависимости в ~/.rvm, Простое удаление файлов libyaml из инсталляции без RVM устранило эту проблему для меня:

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

rvm reinstall ruby-2.0.0-p0

Работает!

Это сработало для меня по крайней мере на Ubuntu 10.04

$ sudo apt-get установить libtool

$ rvm переустановить 1.9.3

Я столкнулся с той же проблемой. Я использую MacPorts с rbenv установлены!

Что я сделал:

  1. sudo port install ruby26
  2. sudo port select --set ruby ruby26 (это фактически исключает установку Ruby по умолчанию для macOS из игры)
  3. удалил все драгоценные камни из ~/.gem/ruby/2.6.0/gems что вызывало ошибки при вызове gem команда
  4. бежать gem pristine команды для всех драгоценных камней, перечисленных в списке драгоценных камней (точные команды являются частью предупреждений)
  5. Ну наконец то gem update --user-install
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
Другие вопросы по тегам