Ruby on rails 升级到Ubuntu 18.04后出现Rails控制台错误

Ruby on rails 升级到Ubuntu 18.04后出现Rails控制台错误,ruby-on-rails,ruby,ruby-on-rails-5.1,ruby-on-rails-5.2,Ruby On Rails,Ruby,Ruby On Rails 5.1,Ruby On Rails 5.2,从ubuntu 16.04升级到ubuntu 18.04后,我从rails项目的根目录运行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': lib

从ubuntu 16.04升级到ubuntu 18.04后,我从rails项目的根目录运行
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>'

您需要确保已安装readline。您正在使用RVM,因此可以运行:

rvm要求

它应该有助于确保您安装了所需的所有设备,然后:

rvm重新安装2.4.1


如果需要确保你的红宝石是好去

在将Ubuntu从16.04升级到18.04之后,我也无法运行
rails控制台。我得到了类似的结果:

-bash: error while loading shared libraries: libreadline.so.6: cannot open shared object file: No such file or directory
我必须按照此处发布的说明重新安装rvm:
我也有同样的问题,但我们使用了
rbenv
而不是
rvm
。与Brian的答案类似的答案对我也适用:

rbenv uninstall 2.4.1
rbenv install 2.4.1

升级后我也有同样的问题。我猜问题发生在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
安装您的ruby版本

rvm install _version_
使用bundle命令安装gems

bundle install
完成

如果您想了解更多有关将ruby安装到ubuntu 18.04的详细信息,请尝试以下链接

重新安装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控制台
,并再次使用
byebug

在终端上运行以下代码为我解决了问题:

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

您是否阅读了错误消息的第一行?这会给你一些启示。缺少的文件在2.4.0中,但您使用的是2.4.1。在使用Ruby 2.6.0Yup升级到Ubuntu 19.04后,我遇到了同样的问题。不过,非常确定您不需要运行uninstall命令(也不需要终止正在运行的项目)。只要运行rbenv安装,它就会询问您是否要替换。我在从Ubuntu 18.04升级到Ubuntu 20.04时也遇到过同样的问题。这个解决方案对我有效。这是一个彻底的黑客,但它是有效的。当需要7时,版本8也是如此。
cd /lib/x86_64-linux-gnu
sudo ln -s libreadline.so.7.0 libreadline.so.6