2011-03-30 79 views
6

我在一个rvm里第一次使用rails3(我一直在使用rails2多年)。试图启动控制台,我得到这个错误:Rails3和readline问题

require': no such file to load -- readline

我周围的一派,这似乎是一个常见的问题。大多数解决方案似乎包括1)在安装以下内容:安装在sudo apt-get install libncurses5-dev libreadline5-dev 2)要为readline的宝石文件夹,运行ruby extconf.rb产生一个makefile 3)做makemake install

现在,我没有的ReadLine我的rvm,所以我试图安装它。但无法弄清楚什么是创业板:gem install readline没有给出任何结果。我发现的唯一一个是gem install rdp-rb-readline。我安装了两个开发库,安装了rdp-rb-readline gem,去了后续的gem文件夹,并运行了ruby extconf.rb。这确实生成了一个makefile。但我不能make,或make install:我得到这些错误:现在的卡住

max-laptop:readline$ make cc -I. -I. -I/usr/lib/ruby/1.8/i486-linux -I. -DHAVE_READLINE_READLINE_H -DHAVE_READLINE_HISTORY_H -DHAVE_RL_FILENAME_COMPLETION_FUNCTION -DHAVE_RL_USERNAME_COMPLETION_FUNCTION -DHAVE_RL_COMPLETION_MATCHES -DHAVE_RL_DEPREP_TERM_FUNCTION -DHAVE_RL_COMPLETION_APPEND_CHARACTER -DHAVE_RL_BASIC_WORD_BREAK_CHARACTERS -DHAVE_RL_COMPLETER_WORD_BREAK_CHARACTERS -DHAVE_RL_BASIC_QUOTE_CHARACTERS -DHAVE_RL_COMPLETER_QUOTE_CHARACTERS -DHAVE_RL_FILENAME_QUOTE_CHARACTERS -DHAVE_RL_ATTEMPTED_COMPLETION_OVER -DHAVE_RL_LIBRARY_VERSION -DHAVE_RL_EVENT_HOOK -DHAVE_RL_CLEANUP_AFTER_SIGNAL -DHAVE_RL_CLEAR_SIGNALS -DHAVE_RL_VI_EDITING_MODE -DHAVE_RL_EMACS_EDITING_MODE -DHAVE_REPLACE_HISTORY_ENTRY -DHAVE_REMOVE_HISTORY -fPIC -fno-strict-aliasing -g -g -O2 -fPIC -c readline.c readline.c: In function ‘readline_readline’: readline.c:82: error: ‘rb_io_t’ undeclared (first use in this function) readline.c:82: error: (Each undeclared identifier is reported only once readline.c:82: error: for each function it appears in.) readline.c:82: error: ‘ofp’ undeclared (first use in this function) readline.c:82: error: ‘ifp’ undeclared (first use in this function) make: *** [readline.o] Error 1

类。我是否缺少其他基础知识,我需要制作所需的库/宝石/什么?

感谢您的任何意见 - 最大

SOLUTION: 我其实只是解决了这个 - 我卸载了RDP-RB-readline的宝石,然后做gem install rb-readline,然后加入gem 'rb-readline'到我的应用程序的Gemfile中。我想它只是需要知道在哪里寻找readline的东西,如果它不在平常的地方。我不需要对extconf.rb做任何事情,这很好,因为rb-readline gem没有。

我在我的问题结束时留下了这个问题,因为a)别人可能对问题有更好的理解,而不是我的试错法,b)万一别人有同样的问题。

+0

我其实只是解决了这个 - 解决方案添加到OP – 2011-03-30 14:31:33

+0

哪里是“后续gem文件夹”? – rogerdpack 2011-03-30 16:15:19

+0

@rogerdpack - 我没有它了,但它会'/home/max/.rvm/gems/ruby-1.9.2-p0/gems/rdp-rb-readline- ' – 2011-03-31 10:59:44

回答

4

如果您使用的是rvm,则始终可以使用软件包安装程序工具来修复您的操作系统可能遇到的任何问题。红宝石经常使用不同于你所安装的有点不同的库:

rvm package install readline 

rvm安装适用几个补丁针对特定的,正常工作的readline的版本,应该建立一个没有问题的。这个readline包不会影响你的系统安装,并且仅用于基于rvm的构建。

+1

谢谢tadman - 我只是试过了,它似乎很高兴地完成了安装过程。但我仍然遇到同样的问题。我找到了另一个解决方案,我不知道这是否更好,哪个我附加到我的OP。但我更喜欢你的方法,并希望能够正常工作。 – 2011-03-30 14:36:47

+0

需要注意的是,你需要在rvm管理的readline上构建你的'ruby',以便使用'rvm install'正常工作。 – tadman 2011-03-30 17:55:47

+0

对不起tadman,我不太明白你的意思。你能提供更多细节吗?谢谢! – 2011-03-31 10:57:19

3
cd ~/.rvm/src/ruby-X.X.X-pXXX/ext/readline 

(与您的系统红宝石版本替换红宝石1.9.2-P180)

ruby extconf.rb 

如果任何检查说没有,安装这些pakages:

sudo apt-get install libncurses5-dev libreadline5-dev 

和运行ruby extconf.rb

你应该得到所有的检查是,

make 
make install 

现在它会工作。

+0

它不工作,虽然在我的情况..所以我去那个宝石'rb-readline' – Rubyrider 2012-12-14 03:52:06

+0

上面的作品完美,谢谢。 sudo yum为CentOS安装readline-devel。 – 2013-01-18 00:46:03