як вирішити помилку "установка на рубіні відсутня психіка"?


158

Я використовував 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).


Ви намагалися встановити libyaml, дотримуючись цих інструкцій: pyyaml.org/wiki/LibYAML ?
матрос

1
Ви використовуєте домашню мову? Спробуйте brew doctor. Чи вказується проблема із посиланням libyaml?
Stoutie

3
Користувачам Mac: rm -rf /usr/local/lib/ruby/gems/ && brew reinstall rubyяк зазначено в офіційному доморощеного-ядрі Gtihub вирішене питання
Тревіс Кларк

Відповіді:


218

У моєму випадку

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
johncblandii

3
Ні, він мав на увазі rvm pkg install libyaml. Від rvm usage: pkg :: Install a dependency package {readline,iconv,zlib,openssl}.
jordanpg

Я думаю, це залежить від того, яку версію rvm ви використовуєте. У rvm 1.6.9 це package.
Вануан

8
Після запуску rvm pkg install libyamlрекомендує перевстановити всі рубіни rvm reinstall all --force. Це може бути корисно, якщо у вас їх більше.
Харалан Добрев

7
Довелося робити, rvm reinstall 1.9.3 --with-libyaml-dir=/home/rails/.rvm/usrяк було запропоновано в сервері defaultfault.com/questions/442150/…
pcv

20

для ubuntu та rvm

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

працювали


1
Мені довелося «rvm uninstall all» перед тим, як встановлювати libyaml. Це єдиний спосіб
усунення

19

Якщо ви не використовуєте rvm, а навпаки, ви будуєте та встановлюєте ruby ​​1.9.3 з нуля - наприклад, ви керуєте своїми рубіновими версіями за допомогою rbenv - спочатку слід встановити libyaml. Отримайте його з http://pyyaml.org/ ; на даний момент потрібний файл - http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz . Відкрийте тарбол і CD в папку, що виходить. Тоді:

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

Тепер ви готові створити рубін. Завантажте рубін з http://ftp.ruby-lang.org/pub/ruby/ . Відкрийте тарбол і 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, і, здається, там теж добре працювали.)


що повинно виводити дорогоцінний камінь - версію? Я встановив Ruby 1.9.3-p327, але gem - версії виходів 1.8.23 (не впевнений, що це пов'язано), і коли я оновлюю пакет, це дивно говорить, що деякі дорогоцінні камені вимагають => 1.9.2 stackoverflow.com/questions/ 14116083 /…
Леахім

ваші gem --versionзвуки правильні, але, можливо, у вас трапляється ваш шлях через колишнє використання rvm
matt

4
І якщо вам потрібно встановити yaml без sudo, вкажіть інший префікс, ніж /usr/localпри налаштуванні yaml, а потім налаштуйте ruby ​​з--with-opt-dir=/path/to/yaml/prefix --with-yaml --prefix=/path/to/ruby/prefix
Chadwick

Я знаю, що це більше року, але питання стосувалося помилки з RVM. Як можна було б почати з "Якщо не використовувати rvm"?
Пітер Деген-Портний

18
brew install libyaml
rvm reinstall 1.9.3

Це те, що працювало на мене (на Snow Leopard).


Мені довелося це робити також. rvm pkg встановити libyaml не зробив це для мене.
stringo0


6

У мене була ця проблема. libyaml не збирається. Виявляється, мені бракувало libtool.

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

Це вирішило мою проблему.


1
Немає доступних пакетів лібтуалу. Нічого робити.
Павло

1
centos не можете встановити libtool? не вірите .. Ви використовуєте не-Redhat основі системи і потрібно apt-отримати?
phil88530

@ phil88530 стара версія CentOS може бути дурнішою, ніж ви думаєте
Dennis C

@DennisCheung ой добре, ніколи не грав зі старим
phil88530

6

Якщо ви встановили рубін на macOS з домашньою мовою, спробуйте це рішення .

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

Зауважте, що це дозволить позбутися всіх встановлених дорогоцінних каменів. Найкраще збережіть список встановлених дорогоцінних каменів, gem listперш ніж це запустити.


Але gem listце те, що викликає помилку в першу чергу (для мене).
orome

5
$ brew doctor
$ brew link libyaml

Вирішення всіх brew doctorпитань вирішило це для мене. Під час спроби у мене з’явилася помилка, дуже схожа на помилку запитувача gem install jekyll. Усі команди через rvm теж помилялися. Основна і не настільки очевидна проблема полягає в тому, що домашня мова, я припускаю, за допомогою якої rvm встановлює речі, виникли проблеми. Нещодавно я перейшов на Mavericks на Mac OS. У моєму випадку вирішення всіх brew doctorпроблем усувало кожне повідомлення про помилку. Зараз все працює без проблем.
Stoutie

4

Це я вирішив остаточно. Проблема полягала в тому, що, хоча я встановив libyaml з варінням, він ніколи не був пов'язаний. Мені довелося видалити конфліктуючий файл заголовка, а потім brew link libyaml.


4

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

Це працювало для мене:

brew uninstall libyaml
rvm autolibs enable
rvm reinstall ruby-2.1.1

Дякуємо @ user33302 Наведене рішення також працювало для мене на Mac OS EI CAPITON.
Сандіп Ахуджа

3

У мене була така ж проблема (Lion 10.7.4), і виправлено її, оновивши rvm і перевстановивши рубін

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

3

Я перевстановив ruby ​​1.9.3 з підтримкою libyaml:

rvm reinstall 1.9.3 --with-libyaml

Я переконався, що я буду використовувати 1.9.3 перед установкою психіки:

rvm use 1.9.3

Я встановив психіку:

gem install psych

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, CD в)

bundle

2

Жодна з цих відповідей не працювала для мене.

Я знайшов свою відповідь на https://github.com/sstephenson/ruby-build/isissue/119 Я на віртуальній машині Centos 6.3.

ВАМ ПОВИНЕН Встановити libyaml, перш ніж встановити рубін. ЯКЩО ВИ ВЖЕ встановили рубін, Ви повинні позбутися файлів, перш ніж знову компілювати джерело !!!

# 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

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

Це вгамувало попередження.


2

Це те, що працювало для мене на Ubuntu:
- встановлення libyaml-dev (sudo apt-get install libyaml-dev)
- встановлення rvm + ruby ​​1.9.3


2

Я спробував усі ці відповіді, і досі не зміг змусити його працювати. Я встановив libyaml з домашньою мовою, а потім встановив Ruby 1.9.3 та 2.0.0 з rvm. Щоразу скаржився на те, що мені не вистачає психіки (libyaml). Але намагаючись встановити libyaml, він сказав мені, що він уже встановлений. Промийте, повторіть. Урх.

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

Тож якщо ви спробували всі інші варіанти, спробуйте видалити libyaml, а потім встановити рубіни. Це повідомлення про помилки - це зрозуміло, але це, нарешті, працювало для мене.


Вам не потрібен libyaml: вам потрібен libyaml-dev, який встановлює для вас rvm з --autolibs
плутанина

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!


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

Я використовую

rvm 1.16.20 (версія) Wayne E. Seguin, Michal Papis [https://rvm.io/]

а також отримали таку помилку під час встановлення пакету

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

Ось три різні способи вирішити цю помилку без необхідності встановити самоцвіт

  1. export LD_LIBRARY_PATH = / usr / local / lib
  2. 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
  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 /,} сценарії / функції / управління / рубін
    *** .rvm / src / rvm / script / функції / управління / ruby ​​2012-11-10 06: 28: 14.000000000 +0000
    --- .rvm / скрипти / функції / управління / 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} / включати"
    ! __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 = "- Я $ {rvm_path} / usr / включаю"
    ! __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 = "- Я $ {rvm_rubies_path} / $ {rvm_ruby_string} / включаю $ {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 = "- Я $ {rvm_path} / usr / включаю $ {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}"
              фі
            фі


Я підтвердив, що цей патч не потрібен, якщо ви використовуєте останню стабільну rvm версію 1.18.4
victorv

1

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

Працює!


1

Метод установки рубіну NON-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 шляхом редагування цього файлу та встановлення увімкнено = 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  

Ключові слова - лівіямль.

% 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

Якщо ви будуєте рубін з джерела (я створив 1.9.3 на Fedora 20), вам знадобиться це перед тим, як зробити конфігурацію / зробити для створення рубіну:

yum install libyaml-devel

(на додаток до yum install libyaml.) Подібно до відповіді Френсіса, використовуючи rpmforge вище.


Також підтверджено на Centos 5.6
marcovtwout

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

Якщо ви не використовуєте a Gemfile, переконайтеся, що знаєте, які дорогоцінні камені потрібно перевстановити.


1

У моєму випадку все, що мені потрібно було зробити, - це

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)

Я на macOS Sierra, і це працювало на мене. Це те саме рішення, про яке повідомлялося в цій проблемі GitHub тут. Спробуйте спочатку це рішення, оскільки воно набагато простіше і менш драстичне, ніж інші на цій сторінці.
mljrg

1
  • Ubuntu
  • Використання RVM
  • Причина: конфліктні версії дорогоцінних каменів Psych між рубіном 2.4.4 та рубіном 2.5.1

Я витратив кілька годин, намагаючись усунути свою помилку, і жодна з відповідей тут не підходила до моєї справи, тому я подумав, що опублікую, як я її вирішив ...

У моєму випадку, коли я бігав gem list | grep psych, у мене був такий результат:psych(default: 3.1.0, default: 3.0.2) .

Очевидно, оскільки версія 2.5.0, рубін залежить від нової версії душі (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 щоб переконатися, що в списку лише одна версія за замовчуванням зараз ...

тл; д-р cd /.rvm/gems/ruby-x.x.x@global/specifications/default mv psych-3.0.2 ../

Сподіваюся, це допоможе комусь!


0

Щодо Snow Leopard, рішення Catharz для мене не спрацювало. Однак це рішення зробило:

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

(Перевстановлення rvm дало мені попередження про те, що кланг не має опції "--with-libyaml", але він вирішив повідомлення про помилку незалежно.)


0

Це працювало на мене принаймні на Ubuntu 10.04

$ sudo apt-get install libtool

перевстановлення $ rvm 1.9.3


0

На Solaris:

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

додати /usr/local/libдо шляху пошуку спільної бібліотеки (див. man crle)


Це питання про os x.
zishe

0

Коли я перемикався з 64-бітного на 32-бітний на Snow Leopard 10.6.8, я перевстановив рубін (використовувався rvm), щоб працювати на 32-бітовій і зіткнувся з тією ж проблемою. Тому я просто "очищую" все те, що раніше зберігалося в rmm, і проблеми вирішувалися. Сподіваюся, що ця порада може комусь допомогти.

rvm очищення всіх

rvm встановити ruby_version_here // (Таким чином, rvm також перезавантажить найновіший ямл).

До речі, якщо ви все-таки зіткнулися з цією проблемою, я думаю, ви можете спробувати:

самоцвіт встановити психіку

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.