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

149

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

  • 0
    Вы пытались установить libyaml, следуя этим инструкциям: pyyaml.org/wiki/LibYAML ?
  • 0
    Да, у меня есть. неудачно!
Показать ещё 2 комментария
Теги:
macos
rvm

32 ответа

216
Лучший ответ

В моем случае

rvm pkg install libyaml

и

rvm reinstall ruby-1.9.3-p125

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

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

sudo apt-get install libtool

Для пользователей macOS (с доморощенным):

rm -rf /usr/local/lib/ruby/gems/ && brew reinstall ruby
  • 11
    Вы на самом деле имеете в виду: rvm package install libyaml
  • 3
    Нет, он имел в виду rvm pkg install libyaml . Из rvm usage : pkg :: Install a dependency package {readline,iconv,zlib,openssl} .
Показать ещё 12 комментариев
19

Если вы не используете rvm, а скорее строите и устанавливаете ruby ​​1.9.3 с нуля - например, вы управляете своими рубиновыми версиями 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 ​​из 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, и, похоже, он тоже отлично справился.)

  • 0
    что должен выводить gem --version? Я установил Ruby 1.9.3-p327, но gem --version выдает 1.8.23 (не уверен, что это связано), и когда я выполняю обновление комплекта, странно сказано, что для некоторых гемов требуется => 1.9.2 stackoverflow.com/questions/ 14116083 / ...
  • 0
    Ваша gem --version звучит правильно, но, может быть, вы нашли свой путь из-за прежнего использования rvm
Показать ещё 3 комментария
19

для ubuntu и rvm

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

работал

  • 1
    Мне пришлось «удалить все rvm» перед установкой libyaml. Это единственный способ устранить ошибку
16
brew install libyaml
rvm reinstall 1.9.3

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

  • 0
    Я должен был сделать это также. rvm pkg install libyaml не сделал этого для меня.
  • 0
    горный лев работает!
9

В моем случае решение заключалось в том, чтобы добавить камень psych в Gemfile.

6

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

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

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

  • 1
    Пакет libtool недоступен. Нечего делать.
  • 1
    Centos не может yum установить libtool? не верьте этому .. вы используете систему, не основанную на redhat, и вам нужно apt-get?
Показать ещё 2 комментария
5
$ brew doctor
$ brew link libyaml
  • 0
    Решение всех проблем, связанных с brew doctor помогло мне. Я получил ошибку, очень похожую на ошибку спрашивающего при попытке gem install jekyll . Все команды через rvm тоже выдавали ошибки. Основная и не столь очевидная проблема заключается в том, что у доморощенного, я полагаю, средства, с помощью которых rvm устанавливает вещи, были проблемы. Я недавно обновился до Mavericks на Mac OS. В моем случае решение всех вопросов, связанных с brew doctor устраняло каждое сообщение об ошибке. Сейчас все работает без сбоев.
  • 0
    РВМ создал много вопросов в доморощенного ...
Показать ещё 1 комментарий
4

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

3

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

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

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

  • 0
    Но gem list - то, что вызывает ошибку во-первых (для меня).
3

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

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

brew uninstall libyaml
rvm autolibs enable
rvm reinstall ruby-2.1.1
  • 0
    Спасибо @ user33302. Выше решение также работал для меня на Mac OS EI CAPITON.
2

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

rvm reinstall 1.9.3 --with-libyaml

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

rvm use 1.9.3

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

gem install psych
  • 0
    Я бы сказал, что немного пояснительного текста было бы неплохо.
  • 0
    Пост обновлен, спасибо.
2

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

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

Итак, если вы пробовали все другие параметры, попробуйте удалить Libyaml, а затем установить Rubies. Он считается интуитивным из сообщений об ошибках, но тем, что в конечном итоге сработало для меня.

  • 0
    Вам не нужен libyaml: вам нужен libyaml-dev, который rvm устанавливает для вас с помощью --autolibs
  • 0
    Это сработало для меня
2

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

2

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

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

2

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

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

У меня была та же проблема (Lion 10.7.4) и исправлена ​​ее, обновив rvm, а затем переустановив ruby ​​

1) upgrade 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
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
1

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

1

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

yum install libyaml-devel

(в дополнение к yum install libyaml.) Подобно Фрэнсису, ответьте, используя rpmforge выше.

  • 0
    Также подтверждено на Centos 5.6
1

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

ОТКЛЮЧИТЬ 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 и источнике

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

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

Я использую

rvm 1.16.20 (версия) Уэйн Э. Сегин, Michal Papis [https://rvm.io/]

а также при ошибке установки пакета

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

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

  • export LD_LIBRARY_PATH =/usr/local/lib
  • 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
    
  • Исправить 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

  • 0
    ням установить libtool у меня не сработало
  • 0
    Я подтвердил, что этот патч не нужен, если вы используете последнюю стабильную версию rvm 1.18.4
Показать ещё 1 комментарий
1

В 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
1

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

0

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

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)
  • 0
    Я на MacOS Sierra, и это сработало для меня. Это же решение сообщили в этом вопросе GitHub здесь Попробуйте это решение первым , как это намного проще и менее резкое , чем другие в этой странице.
0
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
0

У меня была аналогичная проблема после обновления ОС, это решает мою проблему:

   brew rm libyaml
   brew cleanup libyaml
   brew install libyaml
   brew rm openssl
   brew cleanup openssl
   brew install openssl
   rvm remove *your version*
   rvm install *latest version*

найдено здесь

0

Я также боролся с теми же неудачами с 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

Работы!

0

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

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

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

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

Прочтите текст справки ДОПОЛНИТЕЛЬНО:

rvm help autolibs

Круто.

0

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

rvm очистить все

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

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

gem install psych

0

В Solaris:

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

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

  • 0
    Этот вопрос о OS X.
0

Это сработало для меня хотя бы на Ubuntu 10.04

$sudo apt-get install libtool

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

0

На Snow Leopard решение Catharz не помогло мне. Это решение, однако, сделало:

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню