Ошибка консоли Rails после обновления до Ubuntu 18.04

После обновления с Ubuntu 16.04 до Ubuntu 18.04 я получаю следующую ошибку при запуске rails console из корневого каталога проекта rails. Кажется, затронута только консоль, я могу без проблем запустить сервер puma.

Running via Spring preloader in process 23887
/home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `require': libreadline.so.6: cannot open shared object file: No such file or directory - /home/user/.rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/x86_64-linux/readline.so (LoadError)
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `block in require'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:258:in `load_dependency'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `require'
    from /home/user/.rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/irb/completion.rb:10:in `<top (required)>'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `require'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `block in require'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:258:in `load_dependency'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `require'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/railties-5.1.6/lib/rails/commands/console/console_command.rb:2:in `<top (required)>'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `require'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `block in require'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:258:in `load_dependency'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `require'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/railties-5.1.6/lib/rails/command/behavior.rb:82:in `block (2 levels) in lookup'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/railties-5.1.6/lib/rails/command/behavior.rb:78:in `each'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/railties-5.1.6/lib/rails/command/behavior.rb:78:in `block in lookup'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/railties-5.1.6/lib/rails/command/behavior.rb:77:in `each'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/railties-5.1.6/lib/rails/command/behavior.rb:77:in `lookup'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/railties-5.1.6/lib/rails/command.rb:68:in `find_by_namespace'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/railties-5.1.6/lib/rails/command.rb:42:in `invoke'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/railties-5.1.6/lib/rails/commands.rb:16:in `<top (required)>'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `require'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `block in require'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:258:in `load_dependency'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `require'
    from /home/user/dev/projects/SRTrackerMySQL/bin/rails:9:in `<top (required)>'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:286:in `load'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:286:in `block in load'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:258:in `load_dependency'
    from /home/user/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:286:in `load'
    from /home/user/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    from /home/user/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    from -e:1:in `<main>'

Я запускал bundle install и пробовал его с новыми проектами rails как с Rails 5.1.6, так и с Rails 5.2.

Я также пытался запустить RAILS_ENV=production bundle exec rails console

Я использую версию Ruby:

ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

person James    schedule 19.04.2018    source источник
comment
Вы читали самую первую строку сообщения об ошибке? Это должно дать вам некоторое представление. Отсутствующий файл находится в версии 2.4.0, но вы используете версию 2.4.1.   -  person lacostenycoder    schedule 19.04.2018
comment
У меня была такая же проблема после обновления до Ubuntu 19.04 с использованием Ruby 2.6.0.   -  person RousseauAlexandre    schedule 07.05.2019


Ответы (6)


Вы должны убедиться, что readline установлен. Вы используете RVM, поэтому можете запустить:

rvm requirements

и это должно помочь убедиться, что у вас установлено все, что вам нужно, а затем:

rvm reinstall 2.4.1

если это необходимо, чтобы убедиться, что ваш рубин готов к работе.

person Brian Samson    schedule 19.04.2018

У меня была точно такая же проблема, но мы используем rbenv вместо rvm. Аналогичный ответ Брайана сработал для меня:

rbenv uninstall 2.4.1
rbenv install 2.4.1
person kaydanzie    schedule 07.09.2018
comment
Ага. Тем не менее, вам не нужно запускать команду удаления (и не убивать запущенные проекты). Просто запустите rbenv install ‹что угодно›, и он спросит вас, хотите ли вы заменить. - person gamut; 14.10.2018
comment
У меня была такая же проблема при обновлении с Ubuntu 18.04 до Ubuntu 20.04. Это решение сработало для меня. - person evedovelli; 08.10.2020

Выполнение следующего кода на терминале решило проблему для меня:

cd /lib/x86_64-linux-gnu
sudo ln -s libreadline.so.7.0 libreadline.so.6
person Augusto Carmo    schedule 26.11.2019
comment
Это полный взлом, но он работает. То же самое для версии 8, когда требуется 7. - person sassman; 22.12.2020

У меня была такая же проблема после обновления. Я предполагаю, что проблема связана с RVM.

Итак, сначала удалите RVM.

rvm implode

Затем выполните следующие команды, чтобы снова установить RVM.

sudo apt install gnupg2
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
cd /tmp
curl -sSL https://get.rvm.io -o rvm.sh
less /tmp/rvm.sh
cat /tmp/rvm.sh | bash -s stable --rails
source /home/admat/.rvm/scripts/rvm

Перезагрузите RVM

rvm reload

Установите рубиновую версию

rvm install _version_

Используйте команду bundle для установки драгоценных камней

bundle install

ВЫПОЛНЕНО !!!!!

если вам нужны дополнительные сведения об установке ruby ​​в Ubuntu 18.04, попробуйте следующую ссылку Установить ruby ​​on rails с Ubuntu 18.04

person ADMAT Bandara    schedule 25.09.2018

Переустановка Ruby и перефразирование rbenv у меня не сработали. В конце концов я пошел на простую символическую ссылку текущего установленного libreadline.so7

locate libreadline.so

Это вернуло целый список возможных вариантов, но наиболее вероятным из них оказался /lib/x86_64-linux-gnu/libreadline.so.7.

sudo ln -s /lib/x86_64-linux-gnu/libreadline.so.7 /lib/x86_64-linux-gnu/libreadline.so.6

После связывания я могу запустить rails console и снова использовать byebug.

person Phil    schedule 20.11.2019

Я также не смог запустить rails console после обновления Ubuntu с 16.04 до 18.04. У меня получалось что-то похожее на это:

-bash: error while loading shared libraries: libreadline.so.6: cannot open shared object file: No such file or directory

Мне пришлось переустановить rvm снова, следуя инструкциям, опубликованным здесь: https://github.com/rvm/ubuntu_rvm

person almawhoob    schedule 31.08.2018