Как решить ошибку "установка 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
Это решило мою проблему.
Я переустановил 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.
- экспорт 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 **** # когда родственник активен, 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/default
mv 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
установлены!
Что я сделал:
sudo port install ruby26
sudo port select --set ruby ruby26
(это фактически исключает установку Ruby по умолчанию для macOS из игры)- удалил все драгоценные камни из
~/.gem/ruby/2.6.0/gems
что вызывало ошибки при вызовеgem
команда - бежать
gem pristine
команды для всех драгоценных камней, перечисленных в списке драгоценных камней (точные команды являются частью предупреждений) - Ну наконец то
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