как решить ошибку "установка ruby отсутствует psych"?

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

30 ответов


в моем случае

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

для ubuntu и rvm

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. Откройте tarball и cd в результирующую папку. Затем:

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

теперь вы готовы построить ruby. Скачать ruby из http://ftp.ruby-lang.org/pub/ruby/. Откройте tarball и cd в результирующую папку. Теперь:

./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, и, похоже, там все работает нормально тоже.)


brew install libyaml
rvm reinstall 1.9.3

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


в моем случае решением было добавить psych gem в Gemfile.


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

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

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


$ brew doctor
$ brew link libyaml

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


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

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

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


установка ruby с rvm для mac osx, используйте autolibs для установки libyaml и первой деинсталляции libyaml помогает.

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

brew uninstall libyaml
rvm autolibs enable
rvm reinstall ruby-2.1.1

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

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

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

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

перед установкой ruby необходимо установить libyaml. Если вы уже установили 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, все еще не видел их, и вместо того, чтобы гадить с makefile или system LD_LIBRARY_PATH, я просто скопировал /usr/local/lib/libyaml* в ~/.rvm / rubies / ruby-1.9.3-p327 / lib/

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


Это то, что сработало для меня на Ubuntu:
- установка libyaml-dev (sudo apt-get install libyaml-dev)
- установка rvm + ruby 1.9.3


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

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

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


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

rvm reinstall 1.9.3 --with-libyaml

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

rvm use 1.9.3

Я установил psych:

gem install psych

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


на 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

Я использую

rvm 1.16.20 (версия) Wayne E. Seguin , Михал Папис [https://rvm.io/]

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

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

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

  1. экспорт LD_LIBRARY_PATH=/usr/local / lib
  2. alter / etc / ld.Итак.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 ****
              # 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


не-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 % судо VI /и т. д./Юм.РЕПО.d / rpmforge.РЕПО

% 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

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

yum install libyaml-devel

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


у меня была эта ошибка, и я заметил, что у меня были разные версии 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, убедитесь, что вы знаете, какие драгоценные камни переустановить.


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

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)

на снежного барса, решение по Catharz не работает для меня. Это решение, однако, сделало:

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

(переустановка rvm дала мне предупреждение о том, что clang не имеет опции "--with-libyaml", но он решил сообщение об ошибке независимо.)


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

$ sudo apt-get install libtool

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


На Солярис:

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

добавить /usr/local/lib к пути поиска общей библиотеки (см. man crle)


когда я переключаюсь с 64 бит на 32 бит на Snow Leopard 10.6.8, я переустановил ruby (использовал rvm) для работы на 32bit и столкнулся с той же проблемой. Поэтому я просто "очищаю" все, что кэшировалось rvm раньше, и проблемы решаются. Надеюсь, этот совет может помочь кому-то.

rvm очистка все

rvm установите ruby_version_here //(таким образом, rvm также повторно загрузит новейший yaml).

кстати, если вы все еще сталкиваетесь с этой проблемой, я думаю, вы можете попробуйте:

gem установить psych


для тех, кто с Mountain Lion и RVM версии >= 1.18.x

RVM поставляется с этим новым инструментом, который используется в качестве флага при установке версий ruby. Это называется autolibs.

Я избавился от этой проблемы психологически следующим образом:

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

прочитайте текст справки раньше, выполнив:

rvm help autolibs

прохладный.


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

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

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

rvm reinstall ruby-2.0.0-p0

работает!