如何使用readline支持重新安装ruby?

我已经通过RVM安装了Ruby作为https://github.com/wayneeseguin/rvm#installation上的说明。

有关信息,我有所有档案( readline-5.2.tar.gz,readline-6.2.tar.gz,ruby-1.9.3-p327.tar.bz2,rubygems-1.8.24.tgz,wayneeseguin-rvm-stable。 ~/.rvm/archives目录中的tgz和yaml-0.1.4.tar.gz )我不想以任何方式重新下载它们。

当我做:

 sudo /usr/bin/apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion pkg-config 

我明白了:

 Reading package lists... Done Building dependency tree Reading state information... Done Note, selecting 'libxslt1-dev' instead of 'libxslt-dev' Note, selecting 'libncurses5-dev' instead of 'ncurses-dev' libtool is already the newest version. sqlite3 is already the newest version. libxslt1-dev is already the newest version. libc6-dev is already the newest version. openssl is already the newest version. git-core is already the newest version. subversion is already the newest version. zlib1g is already the newest version. libncurses5-dev is already the newest version. curl is already the newest version. libreadline6 is already the newest version. libyaml-dev is already the newest version. autoconf is already the newest version. pkg-config is already the newest version. libxml2-dev is already the newest version. build-essential is already the newest version. libssl-dev is already the newest version. libreadline6-dev is already the newest version. automake is already the newest version. zlib1g-dev is already the newest version. bison is already the newest version. libsqlite3-dev is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 

我甚至做过:

 $ rvm pkg install readline $ rvm reinstall 1.9.2 --with-readline-dir=$rvm_path/usr 

但我仍然在irb上得到这个:

 Readline was unable to be required, if you need completion or history install readline then reinstall the ruby. You may follow 'rvm notes' for dependencies and/or read the docs page https://rvm.io/packages/readline/ . Be sure you 'rvm remove X ; rvm install X' to re-compile your ruby with readline support after obtaining the readline libraries. 

我已经完成了4-5次重新安装过程。

如果您安装了rvm requirements的软件包, rvm requirements您的ruby很可能安装了readline支持。

您可以通过运行来validation是否已安装readline:

 rvm use 1.9.3 find $MY_RUBY_HOME -name readline.so | xargs ldd 

从我在回答中看到的,必须重复适当的流程:

 rm -rf $rvm_path/usr/ rvm get head rvm remove 1.9.3 rvm install 1.9.3 --debug 

如果你仍然无法使它工作 – 请确保你重复上述步骤,不要添加额外的标志或开关,确保从额外的编译标志清理/etc/rvmrc~/.rvmrc 。 如果全部失败则提供rvm install 1.9.3 --debug命令的输出。

考虑到您拥有RVM,您应该利用有用的命令rvm requirements ,因为这将为您提供为特定环境/操作系统运行所需的命令。

关于什么

 rvm reinstall 1.9.3 

一旦你安装了基本的依赖项,比如build essentials等,你就可以这样做。我有类似的问题,我不得不安装一些依赖项并重新安装ruby。

以下依赖项列表

 sudo apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core \ zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev \ autoconf libc6-dev libncurses5-dev automake libtool bison subversion pkg-config 

您可能只是使用旧式的configure / make方式重建ruby可执行文件。 它不应该花那么长时间。 优点是它将利用它找到的依赖关系,例如readline。