18

可能重复:
Ruby 1.9.2 和 Rails 3 无法打开 rails 控制台

我已经安装了 rvm 和 ruby​​ 1.9.2,它们都可以正常工作。使用 rvm 版本 1.10.2。我以前安装了 rvm 包 readline/zlib,但现在我在使用 readline 时遇到了大麻烦。我正在尝试在 rvm 中安装 ruby​​ 1.9.3,但我总是找不到 readline。

我试图遵循不同的解决方案:

 rvm remove 1.9.3
 rvm pkg install readline
 rvm install 1.9.3 --with-readline-dir=$rvm_path/usr/ \
     --with-zlib-dir=$rvm_path/usr/

 rvm use 1.9.3
 rvmsudo gem install bundler
 bundle install (all gems installed fine)
 rails c / rails s 
 .rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/irb/completion.rb:9:in `require': \
     cannot load such file -- readline (LoadError)

我安装了 libreadline-dev (版本 6,当前版本)(这些软件包所需的一切)

我还尝试了以下方法:

.rvm/src/ruby-1.9.3-p0/ext/readline]$ ruby extconf.rb 
 checking for tgetnum() in -lncurses... yes
 checking for readline/readline.h... yes
 checking for readline/history.h... yes
 checking for readline() in -lreadline... no
 checking for readline() in -ledit... no
 checking for editline/readline.h... no

.rvm/src/ruby-1.9.3-p0/ext/readline]$ ruby extconf.rb \
    --with-readline-dir=/home/claudiocontin/.rvm/usr/
 checking for tgetnum() in -lncurses... yes
 checking for readline/readline.h... yes
 checking for readline/history.h... yes
 checking for readline() in -lreadline... no
 checking for readline() in -ledit... no
 checking for editline/readline.h... no

 .rvm/src/ruby-1.9.3-p0/ext/readline]$ ruby extconf.rb \
    --with-readline-lib=/home/claudiocontin/.rvm/usr/
 checking for tgetnum() in -lncurses... yes
 checking for readline/readline.h... yes
 checking for readline/history.h... yes
 checking for readline() in -lreadline... no
 checking for readline() in -ledit... no
 checking for editline/readline.h... no

Makefile当然不会生成...

 apt-get install libreadline-dev
 Reading package lists... Done
 Building dependency tree       
 Reading state information... Done
 libreadline-dev is already the newest version.

想法?

4

3 回答 3

46

我试图做 rvm pkg readline,安装 ubuntu pkgs 等但没有任何成功。什么对我有用:

gem install rb-readline

将以下行添加到您的 Gemfile 中:

gem 'rb-readline'
于 2012-01-23T15:06:50.013 回答
12

我最终做的是从 rvm usr/lib/ 路径中删除所有 libreadline。

手动下载已安装的 libreadline5-dev 包(在本例中为 .deb),因为新的 ubuntu 发行版只有 libreadline6-dev 作为候选。

转到 rvm ruby​​ 1.9.3 src 并且:

ruby extconf.rb --with-editline-dir=/usr/ --with-readline-dir=/usr/
make
sudo make install

现在就像一个魅力。

非常痛苦的东西:)

编辑:

还要记住 readline 现在也使用 libeditline-dev ,您可以在配置 ruby​​ readline 时手动禁用,传递:--disable-libedit

 ruby extconf --disable-libedit
于 2012-01-19T19:46:22.167 回答
5

我总是发现让 RVM 与包很好地配合有点像巫术。很多时候,这是关于捕获依赖项 - 我整理了一个我过去很幸运的脚本,试试这个:

sudo apt-get install zlib1g-dev libssl-dev libsqlite3-dev libmysqlclient-dev imagemagick librmagick-ruby libxml2-dev libxslt1-dev build-essential openssl libreadline6 libreadline6-dev zlib1g libyaml-dev libsqlite3-0 sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison libpq-dev libpq5 libmysql-ruby libmysqlclient-dev

rvm pkg install autoconf
rvm pkg install zlib
rvm pkg install readline
rvm pkg install openssl
rvm pkg install iconv
rvm install 1.9.3
rvm use 1.9.3 --default
于 2012-01-19T03:26:24.710 回答