【问题标题】:Rails3 and readline problemRails3 和 readline 问题
【发布时间】:2011-03-30 14:13:26
【问题描述】:

我第一次在 rvm 中使用 rails3(我多年来一直在使用 rails2)。尝试启动控制台时,出现此错误:

require': no such file to load -- readline

我用谷歌搜索了一下,这似乎是一个常见问题。大多数解决方案似乎涉及 1) 安装以下内容:sudo apt-get install libncurses5-dev libreadline5-dev 2) 转到 gem 文件夹以获取 readline,运行 ruby extconf.rb 生成生成文件 3)做makemake install

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

现在有点卡住了。我是否遗漏了一些其他基本的东西,我需要制作所需的库/gem/whatever?

感谢任何建议 - 最大

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

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

【问题讨论】:

  • 我实际上刚刚解决了这个问题 - 解决方案添加到了 OP
  • “后续 gem 文件夹”在哪里?
  • @rogerdpack - 我没有了,但应该是/home/max/.rvm/gems/ruby-1.9.2-p0/gems/rdp-rb-readline-<version>

标签: ruby-on-rails ruby ruby-on-rails-3 rvm readline


【解决方案1】:

如果您使用的是rvm,您可以随时使用软件包安装程序工具来解决您的操作系统可能遇到的任何问题。 Ruby 经常使用与您安装的库有些不同的库:

rvm package install readline

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

【讨论】:

  • 感谢 tadman - 我刚刚尝试过,它似乎很高兴地完成了安装过程。但我仍然遇到同样的问题。我找到了另一个解决方案,我不知道这是否更好,我将其附加到我的 OP 中。但我更喜欢你的方法,并希望让它正常工作。
  • 请注意,您需要针对 rvm 管理的 readline 构建您的 ruby,以便使用 rvm install 正常工作。
  • 对不起tadman,我不太明白你的意思。你能提供更多细节吗?谢谢!
  • 如果在构建 Ruby 之后安装 readline 包,它没有任何作用。您必须使用安装的 readline 包重新构建 Ruby 才能正确链接。
【解决方案2】:
cd ~/.rvm/src/ruby-X.X.X-pXXX/ext/readline

(将 ruby​​-1.9.2-p180 替换为您的系统 ruby​​ 版本)

ruby extconf.rb

如果任何检查结果为否,请安装这些软件包:

sudo apt-get install libncurses5-dev libreadline5-dev

然后运行ruby extconf.rb

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

make
make install

现在它可以工作了。

【讨论】:

  • 它在我的情况下不起作用..所以我选择了那个 gem 'rb-readline'
  • 以上工作完美,谢谢。 sudo yum install readline-devel 用于 CentOS。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多