Rails3和readline问题

Max*_*ams 6 ruby ruby-on-rails readline rvm ruby-on-rails-3

我在rvm中第一次使用rails3(我多年来一直使用rails2).试图启动控制台,我收到此错误:

require': no such file to load -- readline

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

现在,我没有在我的rvm中安装readline,所以我尝试安装它.但无法弄清楚宝石是什么:gem install readline没有给出任何结果.我找到的唯一一个是gem install rdp-rb-readline.我安装了两个dev库,安装了rdp-rb-readline gem,转到后续的gem文件夹,然后运行ruby extconf.rb.这确实生成了一个makefile.但我不能makemake 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

有点卡住了.我错过了其他基本的东西,我需要制作所需的库/宝石/什么?

感谢任何建议 - 最多

解决方案:我实际上刚刚解决了这个问题 - 我卸载了rdp-rb-readline gem,然后做了gem install rb-readline,然后添加gem 'rb-readline'到我的应用程序的Gemfile中.我想它只需要知道在哪里寻找readline的东西,如果它不在通常的地方.我不需要对extconf.rb做任何事情,这很好,因为rb-readline gem没有.

我在问题的最后留下了这个因为a)其他人可能对问题有了更好的理解,而不是我的试错方法和b)以防其他人有同样的问题.

tad*_*man 4

如果您使用的是rvm,则始终可以使用软件包安装程序工具来修复操作系统可能存在的任何问题。Ruby 经常使用与您安装的库稍有不同的库:

rvm package install readline
Run Code Online (Sandbox Code Playgroud)

安装程序rvm针对特定的、已知工作的 readline 版本应用多个补丁,并且应该不会出现问题。此 readline 包不会影响您的系统安装,并且仅用于基于 rvm 的构建。