Невозможно разрешить ошибку Ruby (отсутствует psych)

Всякий раз, когда я запускаю что-то с Ruby на моем сервере, я получаю следующую ошибку:

/usr/local/rvm/rubies/ruby-1.9.3-p194/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.

Я установил Ruby с помощью RVM на свой VPS.

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

Я не уверен, какой тип системы работает на моем VPS, но он не имеет apt-get команда. Это имеет yum...

8 ответов

Решение

У меня была эта проблема, и установка libyaml не помогла. Оказалось, что психиатр нуждался в libyaml-devel. Я был на centos6, поэтому я сделал это:

curl -O http://www6.atomicorp.com/channels/atomic/centos/6/x86_64/RPMS/atomic-release-1.0-14.el6.art.noarch.rpm

sudo  rpm -Uvh atomic-release-1.0-14.el6.art.noarch.rpm

sudo yum install libyaml-devel

rvm reinstall 1.9.3-p194

Я должен не согласиться с @JunaidKirkire в том, что я думаю, что вы используете CentOS или Redhat 5, который по умолчанию использует очень старую версию Ruby, и я думаю, что использование RVM - гораздо лучший способ. Я полагаю, вам просто нужно скомпилировать libyaml из исходного кода со следующим:

rvm pkg install libyaml

Это скажет вам каталог, в который он компилируется, в моем случае это /Users/ehowe/.rvm/usr

Затем вам нужно перекомпилировать Ruby с помощью следующей опции:

rvm reinstall 1.9.3 --with-libyaml-dir=$directory_that_rvm_installed_libyaml_to

Так что в моем случае я бы сделал:

rvm install 1.9.3 --with-libyaml-dir=/Users/ehowe/.rvm/usr

Если вы запускаете rvm от имени root, он будет установлен в /usr/local/rvm/usr, Если вы запускаете его как пользователь, как рекомендуется, это будет /home/$user/.rvm/usr

В дистрибутиве на основе RHEL, таком как CentOS 6.x, вам нужно добавить еще один репозиторий yum, такой как EPEL, который содержит пакет libyaml-devel.

Ключи для EPEL или скачать
RPM для EPEL

Больше информации:

Также предложил бы использовать yum-plugin-priority

Добавить EPEL Yum Repository

rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
rpm -Kih http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

Установите libyaml-devel через yum

yum -y install libyaml-devel

пакеты

Dependencies Resolved

====================================================================================
 Package                       Arch         Version           Repository       Size
====================================================================================
Installing:
 libyaml-devel                 x86_64       0.1.3-1.el6       epel             84 k
Installing for dependencies:
 libyaml                       x86_64       0.1.3-1.el6       epel             52 k

Transaction Summary
====================================================================================
Install       2 Package(s)

Проблема может быть решена путем установки libyaml, Ниже приведены соответствующие пакеты для самых популярных дистрибутивов:

  • мягкая фетровая шляпа libyaml
  • Ubuntu и другие основанные на Debian libyaml-dev
  • Некоторые другие, как CentOS libyaml-devel

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

ruby-devel libxml2 libxml2-devel libxslt libxslt-devel

В случае, если люди все еще сталкиваются с этим, я исправил это, используя новую функцию autolibs в RVM, которая автоматически устанавливает зависимости, используя ваши библиотеки homebrew (ознакомьтесь с rvm help autolibs для информации.)

rvm reinstall 1.9.3 --autolibs=2

Убедитесь, что на вашем компьютере Redhat есть действующая подписка:

# subscription-manager list 

+-------------------------------------------+
    Installed Product Status
+-------------------------------------------+
Product Name:   Red Hat Enterprise Linux Server
Product ID:     69
Version:        7.1
Arch:           x86_64
Status:         Subscribed
Status Details: 
Starts:         06/13/2014
Ends:           06/12/2015

Статус должен сказать "Подписан". Если нет, то пострадайте от получения логина и, возможно, покупки подписки по адресу https://access.redhat.com/management/consumers.

Когда это будет сделано, запустите

# subscription-manager repos --enable rhel-7-server-optional-rpms

тогда libyaml-devel установит ОК.

У меня была такая же проблема libyaml с CentOS 6.2

Ведение...

rvm pkg install libyaml
rvm reinstall 1.9.3 --with-libyaml-dir=/usr/local/rvm/usr

Исправил это для меня.

(спасибо @ Eugene)

Вы, кажется, работаете над Fedora. Проверьте официальный сайт Ruby для получения инструкций по установке на Fedora.

Попробуйте эту ссылку тоже http://sraji.wordpress.com/2011/01/25/how-to-install-ruby-on-fedora-14/

Другие вопросы по тегам