Я использовал 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).
В моем случае
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
rvm package install libyaml
rvm pkg install libyaml
. Из rvm usage
: pkg :: Install a dependency package {readline,iconv,zlib,openssl}
.
Если вы не используете 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, и, похоже, он тоже отлично справился.)
gem --version
звучит правильно, но, может быть, вы нашли свой путь из-за прежнего использования rvm
для ubuntu и rvm
sudo apt-get install libtool
rvm pkg install libyaml
rvm reinstall 1.9.3
работал
brew install libyaml
rvm reinstall 1.9.3
Что сработало для меня (на Snow Leopard).
В моем случае решение заключалось в том, чтобы добавить камень psych
в Gemfile.
У меня была эта проблема. libyaml не собирался. Оказывается, мне не хватает libtool.
yum install libtool
yum install libyaml (or rvm pkg install libyaml)
rvm reinstall 1.9.3
Это решило мою проблему.
$ brew doctor
$ brew link libyaml
brew doctor
помогло мне. Я получил ошибку, очень похожую на ошибку спрашивающего при попытке gem install jekyll
. Все команды через rvm тоже выдавали ошибки. Основная и не столь очевидная проблема заключается в том, что у доморощенного, я полагаю, средства, с помощью которых rvm устанавливает вещи, были проблемы. Я недавно обновился до Mavericks на Mac OS. В моем случае решение всех вопросов, связанных с brew doctor
устраняло каждое сообщение об ошибке. Сейчас все работает без сбоев.
Наконец-то я получил это исправление. Проблема заключалась в том, что, хотя я установил libyaml с brew, он никогда не был связан. Мне пришлось удалить конфликтный файл заголовка, а затем brew link libyaml
.
Если вы установили ruby на macOS с homebrew, попробуйте это решение.
rm -rf /usr/local/lib/ruby/gems/ && brew reinstall ruby
Обратите внимание, что это избавит вас от всех установленных камней. Лучше всего сохранить список установленных драгоценных камней с помощью gem list
, прежде чем запускать его.
gem list
- то, что вызывает ошибку во-первых (для меня).
Установка ruby с rvm для mac osx, используйте autolibs для установки libyaml и первой деинсталляции libyaml.
Это сработало для меня:
brew uninstall libyaml
rvm autolibs enable
rvm reinstall ruby-2.1.1
Я переустановил 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
Я пробовал все эти ответы и до сих пор не смог заставить его работать. Я установил libyaml с homebrew, а затем установил Ruby 1.9.3 и 2.0.0 с rvm. Каждый раз, когда он жаловался, что мне не хватает психики (libyaml). Но, пытаясь установить libyaml, мне сказали, что он уже установлен. Прополощите, повторите. Urgh.
Наконец, я решил удалить libyaml. Затем я включил автолибы в rvm, который (по крайней мере, в OSX) позволяет rvm устанавливать и управлять зависимостями более напрямую. Теперь, когда я установил Rubies, rvm смог установить libyaml и признать, что он находится в нужном месте.
Итак, если вы пробовали все другие параметры, попробуйте удалить Libyaml, а затем установить Rubies. Он считается интуитивным из сообщений об ошибках, но тем, что в конечном итоге сработало для меня.
Это то, что сработало для меня на Ubuntu:
- установка libyaml-dev (sudo apt-get install libyaml-dev)
- установка rvm + ruby 1.9.3
Я создал файлы libyaml отдельно от источника и установил их в /usr/local/lib. Рубин, созданный RVM, все еще не видел их, а не гадость с makefile или системой LD_LIBRARY_PATH Я просто скопировал /usr/local/lib/libyaml * в ~/.rvm/rubies/ruby-1.9.3-p327/Library/
Это успокоило предупреждение.
Ни один из этих ответов не работал у меня.
Я нашел свой ответ на 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
У меня была та же проблема (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
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
У меня была эта ошибка и я заметил, что у меня были разные версии 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
, убедитесь, что знаете, какие камни переустанавливать.
Если вы создаете ruby из исходного кода (я построил 1.9.3 на Fedora 20), вам понадобится это, прежде чем вы выполните команду configure/make для создания ruby:
yum install libyaml-devel
(в дополнение к yum install libyaml.) Подобно Фрэнсису, ответьте, используя rpmforge выше.
Метод установки 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
Я использую
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
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
В 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
У меня была та же проблема (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!
В моем случае все, что мне нужно было сделать, было
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)
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
У меня была аналогичная проблема после обновления ОС, это решает мою проблему:
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*
Я также боролся с теми же неудачами с 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
Работы!
Для тех, у кого есть версия Mountain Lion и RVM >= 1.18.x
RVM поставляется с этим новым инструментом, который используется как флаг при установке рубиновых версий. Это называется автолибами.
Я избавился от этой психической проблемы, выполнив следующее:
rvm reinstall ruby-1.9.3-p392 --autolibs=3
Прочтите текст справки ДОПОЛНИТЕЛЬНО:
rvm help autolibs
Круто.
Когда я переключаюсь с 64 бит на 32 бит на Snow Leopard 10.6.8, я переустановил ruby (используемый rvm) для запуска на 32-битной и встретил ту же проблему. Поэтому я просто "очищаю" все, что было ранее кэшировано rvm, и проблемы решены. Надеюсь, этот совет поможет кому-то.
rvm очистить все
rvm install ruby_version_here//(таким образом, rvm также перезагрузит новейший yaml).
Кстати, если вы все еще встречаете эту проблему, я думаю, вы можете попробовать:
gem install psych
В Solaris:
# sudo crle -64 -l /usr/local/lib
добавить /usr/local/lib
в путь поиска совместно используемой библиотеки
(см. man crle)
Это сработало для меня хотя бы на Ubuntu 10.04
$sudo apt-get install libtool
$rvm переустановить 1.9.3
На Snow Leopard решение Catharz не помогло мне. Это решение, однако, сделало:
brew install libyaml
rvm get head
rvm reinstall 1.9.3 --with-gcc=clang
(Установщик rvm дал мне предупреждение о том, что clang не имеет опции "--with-libyaml", но он решил сообщение об ошибке независимо.)