如何在Ubuntu 11.10上使用RVM获得对IRB的Readline支持

我已经尝试了所有我能想到的工作,无济于事,所以我在这里请求关于如何debugging的build议。

首先,运行Ubuntu 11.10

安装rvm

$ bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer) 

使用apt-get安装readline:

 $ sudo apt-get install libreadline-dev 

检查readline安装:

 $ dpkg --get-selections | grep readline lib64readline-gplv2-dev install lib64readline5 install libreadline-dev install libreadline5 install libreadline6 install libreadline6-dev install readline-common install 

安装ruby,readline支持?

 $ rvm install 1.9.2 --with-readline-dir=/usr 

这里是rvm版本:

 $ rvm --version rvm 1.9.2 by Wayne E. Seguin (wayneeseguin@gmail.com) [https://rvm.beginrescueend.com/] 

让我们试试rubyshell:

 $ irb 1.9.2 :001 > puts "add history" add history => nil 1.9.2 :002 > ^[[A^[[A^[[A^[[A^[[A <------ PRESS UP ARROW DOES THIS 

不行,那么如果它不会与Ubuntu的readline版本? 让我们尝试使用rvm自己的readline版本:

 $ rvm pkg install readline Fetching readline-5.2.tar.gz to /home/keith/.rvm/archives % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1989k 100 1989k 0 0 318k 0 0:00:06 0:00:06 --:--:-- 418k Extracting readline-5.2.tar.gz to /home/keith/.rvm/src Applying patch '/home/keith/.rvm/patches/readline-5.2/shobj-conf.patch'... Prepare readline in /home/keith/.rvm/src/readline-5.2. ERROR: Error running 'autoreconf -is --force', please read /home/keith/.rvm/log/readline/autoreconf.log Configuring readline in /home/keith/.rvm/src/readline-5.2. Compiling readline in /home/keith/.rvm/src/readline-5.2. Installing readline to /home/keith/.rvm/usr Fetching readline-6.2.tar.gz to /home/keith/.rvm/archives % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2224k 100 2224k 0 0 310k 0 0:00:07 0:00:07 --:--:-- 444k Extracting readline-6.2.tar.gz to /home/keith/.rvm/src Applying patch '/home/keith/.rvm/patches/readline-6.2/patch-shobj-conf.diff'... Prepare readline in /home/keith/.rvm/src/readline-6.2. ERROR: Error running 'autoreconf -is --force', please read /home/keith/.rvm/log/readline/autoreconf.log Configuring readline in /home/keith/.rvm/src/readline-6.2. Compiling readline in /home/keith/.rvm/src/readline-6.2. Installing readline to /home/keith/.rvm/usr 

好的,那里有一个错误,让我们看看:

 $ more /home/keith/.rvm/log/readline/autoreconf.log [2011-11-17 22:31:15] autoreconf -is --force autoheader: warning: missing template: CTYPE_NON_ASCII autoheader: Use AC_DEFINE([CTYPE_NON_ASCII], [], [Description]) autoheader: warning: missing template: FIONREAD_IN_SYS_IOCTL autoheader: warning: missing template: HAVE_BSD_SIGNALS autoheader: warning: missing template: HAVE_GETPW_DECLS autoheader: warning: missing template: HAVE_LANGINFO_CODESET autoheader: warning: missing template: HAVE_MBRLEN autoheader: warning: missing template: HAVE_MBSCMP autoheader: warning: missing template: HAVE_MBSNRTOWCS autoheader: warning: missing template: HAVE_MBSRTOWCS autoheader: warning: missing template: HAVE_MBSTATE_T autoheader: warning: missing template: HAVE_POSIX_SIGNALS autoheader: warning: missing template: HAVE_POSIX_SIGSETJMP autoheader: warning: missing template: HAVE_STRUCT_DIRENT_D_FILENO autoheader: warning: missing template: HAVE_STRUCT_DIRENT_D_INO autoheader: warning: missing template: HAVE_USG_SIGHOLD autoheader: warning: missing template: HAVE_WCRTOMB autoheader: warning: missing template: HAVE_WCSCOLL autoheader: warning: missing template: HAVE_WCSDUP autoheader: warning: missing template: HAVE_WCTYPE autoheader: warning: missing template: HAVE_WCWIDTH autoheader: warning: missing template: MUST_REINSTALL_SIGHANDLERS autoheader: warning: missing template: NO_MULTIBYTE_SUPPORT autoheader: warning: missing template: SPEED_T_IN_SYS_TYPES autoheader: warning: missing template: STRCOLL_BROKEN autoheader: warning: missing template: STRUCT_WINSIZE_IN_SYS_IOCTL autoheader: warning: missing template: STRUCT_WINSIZE_IN_TERMIOS autoheader: warning: missing template: TIOCSTAT_IN_SYS_IOCTL autoheader: warning: missing template: VOID_SIGHANDLER autoreconf: /usr/bin/autoheader failed with exit status: 1 

和预期的一样,irb不能和readline一起工作:

 $ rvm install 1.8.7 --with-readline-dir=\$HOME/.rvm/usr Installing Ruby from source to: /home/keith/.rvm/rubies/ruby-1.8.7-p352, this may take a while depending on your cpu(s)... ruby-1.8.7-p352 - #fetching ruby-1.8.7-p352 - #extracting ruby-1.8.7-p352 to /home/keith/.rvm/src/ruby-1.8.7-p352 ruby-1.8.7-p352 - #extracted to /home/keith/.rvm/src/ruby-1.8.7-p352 Applying patch 'stdout-rouge-fix' (located at /home/keith/.rvm/patches/ruby/1.8.7/stdout-rouge-fix.patch) ruby-1.8.7-p352 - #configuring ruby-1.8.7-p352 - #compiling ruby-1.8.7-p352 - #installing Removing old Rubygems files... Installing rubygems-1.8.10 for ruby-1.8.7-p352 ... Installation of rubygems completed successfully. ruby-1.8.7-p352 - adjusting #shebangs for (gem irb erb ri rdoc testrb rake). ruby-1.8.7-p352 - #importing default gemsets (/home/keith/.rvm/gemsets/) Install of ruby-1.8.7-p352 - #complete $ 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.beginrescueend.com/packages/readline/ . Be sure you 'rvm remove X ; rvm install X' to re-compile your ruby with readline support after obtaining the readline libraries. 1.8.7 :001 > 

我有没有安装所有的rvm要求? 在这里看看:

 $ sudo apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion 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' autoconf is already the newest version. automake is already the newest version. bison is already the newest version. build-essential is already the newest version. curl is already the newest version. git-core is already the newest version. libc6-dev is already the newest version. libncurses5-dev is already the newest version. libreadline6 is already the newest version. libreadline6-dev is already the newest version. libreadline6-dev set to manually installed. libsqlite3-0 is already the newest version. libsqlite3-dev is already the newest version. libssl-dev is already the newest version. libtool is already the newest version. libxml2-dev is already the newest version. libxslt1-dev is already the newest version. libyaml-dev is already the newest version. openssl is already the newest version. sqlite3 is already the newest version. subversion is already the newest version. zlib1g is already the newest version. zlib1g-dev is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 

所以它继续下去,继续下去…..

 $ rvm remove 1.8.7 Removing /home/keith/.rvm/src/ruby-1.8.7-p352... Removing /home/keith/.rvm/rubies/ruby-1.8.7-p352... Removing ruby-1.8.7-p352 aliases... Removing ruby-1.8.7-p352 wrappers... Removing ruby-1.8.7-p352 environments... Removing ruby-1.8.7-p352 binaries... $ rvm install 1.8.7 --with-readline-dir=\$HOME/.rvm/usr Installing Ruby from source to: /home/keith/.rvm/rubies/ruby-1.8.7-p352, this may take a while depending on your cpu(s)... ruby-1.8.7-p352 - #fetching ruby-1.8.7-p352 - #extracting ruby-1.8.7-p352 to /home/keith/.rvm/src/ruby-1.8.7-p352 ruby-1.8.7-p352 - #extracted to /home/keith/.rvm/src/ruby-1.8.7-p352 Applying patch 'stdout-rouge-fix' (located at /home/keith/.rvm/patches/ruby/1.8.7/stdout-rouge-fix.patch) ruby-1.8.7-p352 - #configuring ruby-1.8.7-p352 - #compiling ruby-1.8.7-p352 - #installing Removing old Rubygems files... Installing rubygems-1.8.10 for ruby-1.8.7-p352 ... Installation of rubygems completed successfully. ruby-1.8.7-p352 - adjusting #shebangs for (gem irb erb ri rdoc testrb rake). ruby-1.8.7-p352 - #importing default gemsets (/home/keith/.rvm/gemsets/) Install of ruby-1.8.7-p352 - #complete $ 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.beginrescueend.com/packages/readline/ . Be sure you 'rvm remove X ; rvm install X' to re-compile your ruby with readline support after obtaining the readline libraries. 1.8.7 :001 > $ cd ~/.rvm/src/ruby-1.8.7-p352/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... yes checking for rl_filename_completion_function()... yes checking for rl_username_completion_function()... yes checking for rl_completion_matches()... yes checking for rl_deprep_term_function in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_completion_append_character in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_basic_word_break_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_completer_word_break_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_basic_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_completer_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_filename_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_attempted_completion_over in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_library_version in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_event_hook in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_cleanup_after_signal()... yes checking for rl_clear_signals()... yes checking for rl_vi_editing_mode()... yes checking for rl_emacs_editing_mode()... yes checking for replace_history_entry()... yes checking for remove_history()... yes creating Makefile $ make gcc -shared -o readline.so readline.o -L. -L/home/keith/.rvm/rubies/ruby-1.8.7-p352/lib -Wl,-R/home/keith/.rvm/rubies/ruby-1.8.7-p352/lib -L. -rdynamic -Wl,-export-dynamic -Wl,-R -Wl,/home/keith/.rvm/rubies/ruby-1.8.7-p352/lib -L/home/keith/.rvm/rubies/ruby-1.8.7-p352/lib -lruby -lreadline -lncurses -lrt -ldl -lcrypt -lm -lc $ make install /usr/bin/install -c -m 0755 readline.so /home/keith/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/site_ruby/1.8/i686-linux $ rvm remove 1.8.7 Removing /home/keith/.rvm/src/ruby-1.8.7-p352... Removing /home/keith/.rvm/rubies/ruby-1.8.7-p352... shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory Removing ruby-1.8.7-p352 aliases... Removing ruby-1.8.7-p352 wrappers... Removing ruby-1.8.7-p352 environments... Removing ruby-1.8.7-p352 binaries... $ rvm install 1.8.7 --with-readline-dir=\$HOME/.rvm/usr Installing Ruby from source to: /home/keith/.rvm/rubies/ruby-1.8.7-p352, this may take a while depending on your cpu(s)... ruby-1.8.7-p352 - #fetching ruby-1.8.7-p352 - #extracting ruby-1.8.7-p352 to /home/keith/.rvm/src/ruby-1.8.7-p352 ruby-1.8.7-p352 - #extracted to /home/keith/.rvm/src/ruby-1.8.7-p352 Applying patch 'stdout-rouge-fix' (located at /home/keith/.rvm/patches/ruby/1.8.7/stdout-rouge-fix.patch) ruby-1.8.7-p352 - #configuring ruby-1.8.7-p352 - #compiling ruby-1.8.7-p352 - #installing Removing old Rubygems files... Installing rubygems-1.8.10 for ruby-1.8.7-p352 ... Installation of rubygems completed successfully. ruby-1.8.7-p352 - adjusting #shebangs for (gem irb erb ri rdoc testrb rake). ruby-1.8.7-p352 - #importing default gemsets (/home/keith/.rvm/gemsets/) Install of ruby-1.8.7-p352 - #complete $ 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.beginrescueend.com/packages/readline/ . Be sure you 'rvm remove X ; rvm install X' to re-compile your ruby with readline support after obtaining the readline libraries. 1.8.7 :001 > $ $ rvm pkg install readline Fetching readline-5.2.tar.gz to /home/keith/.rvm/archives Extracting readline-5.2.tar.gz to /home/keith/.rvm/src Applying patch '/home/keith/.rvm/patches/readline-5.2/shobj-conf.patch'... Prepare readline in /home/keith/.rvm/src/readline-5.2. ERROR: Error running 'autoreconf -is --force', please read /home/keith/.rvm/log/readline/autoreconf.log Configuring readline in /home/keith/.rvm/src/readline-5.2. Compiling readline in /home/keith/.rvm/src/readline-5.2. Installing readline to /home/keith/.rvm/usr Fetching readline-6.2.tar.gz to /home/keith/.rvm/archives Extracting readline-6.2.tar.gz to /home/keith/.rvm/src Applying patch '/home/keith/.rvm/patches/readline-6.2/patch-shobj-conf.diff'... Prepare readline in /home/keith/.rvm/src/readline-6.2. ERROR: Error running 'autoreconf -is --force', please read /home/keith/.rvm/log/readline/autoreconf.log Configuring readline in /home/keith/.rvm/src/readline-6.2. Compiling readline in /home/keith/.rvm/src/readline-6.2. Installing readline to /home/keith/.rvm/usr $ sudo apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion 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' autoconf is already the newest version. automake is already the newest version. bison is already the newest version. build-essential is already the newest version. curl is already the newest version. git-core is already the newest version. libc6-dev is already the newest version. libncurses5-dev is already the newest version. libreadline6 is already the newest version. libreadline6-dev is already the newest version. libreadline6-dev set to manually installed. libsqlite3-0 is already the newest version. libsqlite3-dev is already the newest version. libssl-dev is already the newest version. libtool is already the newest version. libxml2-dev is already the newest version. libxslt1-dev is already the newest version. libyaml-dev is already the newest version. openssl is already the newest version. sqlite3 is already the newest version. subversion is already the newest version. zlib1g is already the newest version. zlib1g-dev is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. $ cd ~/.rvm/src/ruby-1.8.7-p352/ext/readline/ $ ruby extconf.rb --with-readline-dir=/usr checking for tgetnum() in -lncurses... yes checking for readline/readline.h... yes checking for readline/history.h... yes checking for readline() in -lreadline... yes checking for rl_filename_completion_function()... yes checking for rl_username_completion_function()... yes checking for rl_completion_matches()... yes checking for rl_deprep_term_function in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_completion_append_character in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_basic_word_break_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_completer_word_break_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_basic_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_completer_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_filename_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_attempted_completion_over in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_library_version in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_event_hook in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_cleanup_after_signal()... yes checking for rl_clear_signals()... yes checking for rl_vi_editing_mode()... yes checking for rl_emacs_editing_mode()... yes checking for replace_history_entry()... yes checking for remove_history()... yes creating Makefile $ make gcc -I. -I. -I/home/keith/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/1.8/i686-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 -I/usr/include -D_FILE_OFFSET_BITS=64 -fPIC -g -O2 -fPIC -c readline.c gcc -shared -o readline.so readline.o -L. -L/home/keith/.rvm/rubies/ruby-1.8.7-p352/lib -Wl,-R/home/keith/.rvm/rubies/ruby-1.8.7-p352/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -Wl,-R -Wl,/home/keith/.rvm/rubies/ruby-1.8.7-p352/lib -L/home/keith/.rvm/rubies/ruby-1.8.7-p352/lib -lruby -lreadline -lncurses -lrt -ldl -lcrypt -lm -lc $ make install /usr/bin/install -c -m 0755 readline.so /home/keith/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/site_ruby/1.8/i686-linux $ irb ruby-1.8.7-p352 :001 > p 1 1 => nil ruby-1.8.7-p352 :002 > $ $ rvm remove 1.8.7 Removing /home/keith/.rvm/src/ruby-1.8.7-p352... Removing /home/keith/.rvm/rubies/ruby-1.8.7-p352... Removing ruby-1.8.7-p352 aliases... Removing ruby-1.8.7-p352 wrappers... Removing ruby-1.8.7-p352 environments... Removing ruby-1.8.7-p352 binaries... $ rvm install 1.8.7 --with-readline-dir=/usr Installing Ruby from source to: /home/keith/.rvm/rubies/ruby-1.8.7-p352, this may take a while depending on your cpu(s)... ruby-1.8.7-p352 - #fetching ruby-1.8.7-p352 - #extracting ruby-1.8.7-p352 to /home/keith/.rvm/src/ruby-1.8.7-p352 ruby-1.8.7-p352 - #extracted to /home/keith/.rvm/src/ruby-1.8.7-p352 Applying patch 'stdout-rouge-fix' (located at /home/keith/.rvm/patches/ruby/1.8.7/stdout-rouge-fix.patch) ruby-1.8.7-p352 - #configuring ruby-1.8.7-p352 - #compiling ruby-1.8.7-p352 - #installing Removing old Rubygems files... Installing rubygems-1.8.10 for ruby-1.8.7-p352 ... Installation of rubygems completed successfully. ruby-1.8.7-p352 - adjusting #shebangs for (gem irb erb ri rdoc testrb rake). ruby-1.8.7-p352 - #importing default gemsets (/home/keith/.rvm/gemsets/) Install of ruby-1.8.7-p352 - #complete $ irb 1.8.7 :001 > p "hello world" "hello world" => nil 1.8.7 :002 > ^[[A^[[A^[[A^[[A^[[A 

所以最后,如果有一些明亮的火花可以表明我可以如何debugging这种情况并解决,我将非常感激。

PS – 是的,我有“谷歌”这个问题,致死….

Ubuntu 12.04在这里:答案在这里帮助,但也误导。

如果你使用的是Ubuntu 12.04,不要安装readline,不管有没有–skip-autoreconf。 做完这些之后,无论您给rvm install 1.9.3的开关组合如何,readline或zlib都会被中断。

要使其工作,请执行rvm requirements告诉你要做的apt-get安装,做一个pkg uninstall readline ,然后做一个简单的rvm remove 1.9.3; rvm install 1.9.3 rvm remove 1.9.3; rvm install 1.9.3

我在Ubuntu 11.10上也遇到了同样的问题。

在我的情况下,如果我使用下面的代码,readline会看起来正确地编译:

 $ rvm --skip-autoreconf pkg install readline 

http://beginrescueend.com/packages/readline/底部所&#x8FF0;

但是,当我调用irb时,我会得到正常的错误“无法要求readline”

最后,基于Shane的命令行,我调用了以下内容:

 $ rvm install 1.9.3 --with-readline-dir=$rvm_usr_path --with-iconv-dir=$rvm_usr_path --with-zlib-dir=$rvm_usr_path --with-openssl-dir=$rvm_usr_path 

而不是http://beginrescueend.com/packages/readline/上提到的命&#x4EE4;

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

在我的情况下,版本1.9.3是我想要的。 最后 irb提出了一个正常的readline。

感谢大家在这里指出我正确的方向。

好吧,这可能看起来很明显,当你知道答案的时候总是这样:

我放弃了使用RVM,并切换到rbenv – 我很高兴我做到了!

 sudo apt-get install libreadline-gplv2-dev CONFIGURE_OPTS="--with-readline-dir=/usr/include/readline --with-openssl-dir=/usr/local" rbenv-install 1.9.2-p290 

这安装没有错误 – 我仍然不相信我需要gplv2包,因为我已经安装了libreadline6-dev。 但是,仍然没有解决我的问题。 它确实从等式中删除了RVM,并告诉我,尽管我尽了最大的努力,但IRB shell却拒绝使用readline。

答案来自阅读这个伟大的指南:

RubyTools.pdf

在我的〜/ .irbrc文件里面我发现:

 IRB.conf[:USE_READLINE] = false 

快速更新到:

 IRB.conf[:USE_READLINE] = true 

而我正在用气做饭!

感谢所有伟大的答案和建议,我很感激你的时间。

这解决了我与红宝石1.9.3 rvm的问题

 gem install rb-readline 

我有同样的问题,但我在11年4月,从阅读你给的链接https://github.com/wayneeseguin/rvm/issues/553 ,从peplins评论那里的信息,我删除了这里添加的autoreconf调用
https://github.com/wayneeseguin/rvm/commit/94c301d现在readline编译没有任何错误&#x3002; 我在再次安装ruby之前编译过readline之后,回到了autoreconf调用中。

所以这就是我如何工作:

编辑〜/ .rvm / scripts / functions / pkg并删除以下内容:

 if [[ "${rvm_skip_autoreconf_flag:-0}" == 0 ]] && which autoreconf >/dev/null 2>&1 && which libtoolize >/dev/null 2>&1 && [[ -f configure.ac || -f configure.in ]] then __rvm_run "$package/autoreconf" \ "autoreconf -is --force" \ "Prepare $package in $rvm_src_path/$package-$version." fi 

编译readline并删除ruby(我使用ree_dependencies命令,但我不知道这是必要的):

 rvm pkg install ree_dependencies rvm remove 1.9.2 

撤消对〜/ .rvm / scripts / functions / pkg的删除
然后我用这个命令安装了1.9.2(同样是从ree安装,我不知道是否有必要,但这是我用的)

 rvm install 1.9.2 --with-readline-dir=$rvm_usr_path --with-iconv-dir=$rvm_usr_path --with-zlib-dir=$rvm_usr_path --with-openssl-dir=$rvm_usr_path 

现在看起来都是应该的,希望能帮到别人。

我的设置是Ubuntu 11.10,RVM 1.10.2,红宝石1.9.3。

这个readline问题在运行irb时出错,并且由于错误导致无法运行rails控制台:

'require':无法加载这样的文件 – readline(LoadError)

对我而言,解决方案就是Bryan Larsen所描述的解决方案

不要安装readline,不管有没有–skip-autoreconf

然后,执行rvm要求告诉你要做的apt-get安装

rvm –skip-autoreconf pkg卸载readline

rvm删除1.9.3

rvm安装1.9.3

Thx为提示Bryan。

这些步骤解决了我的问题(在Lubuntu 12.04)之前编译红宝石,并不断得到“编译readline失踪”错误,我跑任何时候:

 sudo aptitude 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 rvm pkg uninstall readline rvm remove 1.9.3 rvm install 1.9.3 

不幸的是,这些都没有为我工作。 我结束了从http://beginrescueend.com/packages/readline/使用快速修&#x590D;

这解决了我的问题。

你可以尝试安装libreadline5-dev软件包。 我试试libreadline6-dev现在不能正常工作。

对我来说,它只是用rvm的最新版本开箱即用。 我的步骤

 bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer ) 

根据rvm requirements

 apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion rvm install 1.9.3 rvm 

忘记你所听到的关于任何逻辑的一切,看看这里,一步一步地做:

  (ubuntu x64): $ 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 $ sudo aptitude install libedit-dev .. $ 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... yes checking for rl_getc_function() in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_filename_completion_function() in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_username_completion_function() in stdio.h,readline/readline.h,readline/history.h... no checking for rl_completion_matches() in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_refresh_line() in stdio.h,readline/readline.h,readline/history.h... no checking for rl_deprep_term_function in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_completion_append_character in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_basic_word_break_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_completer_word_break_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_basic_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_completer_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_filename_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_attempted_completion_over in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_library_version in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_editing_mode in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_line_buffer in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_point in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_event_hook in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_catch_sigwinch in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_catch_signals in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_cleanup_after_signal() in stdio.h,readline/readline.h,readline/history.h... no checking for rl_clear_signals() in stdio.h,readline/readline.h,readline/history.h... no checking for rl_set_screen_size() in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_get_screen_size() in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_vi_editing_mode() in stdio.h,readline/readline.h,readline/history.h... no checking for rl_emacs_editing_mode() in stdio.h,readline/readline.h,readline/history.h... no checking for replace_history_entry() in stdio.h,readline/readline.h,readline/history.h... no checking for remove_history() in stdio.h,readline/readline.h,readline/history.h... yes checking for clear_history() in stdio.h,readline/readline.h,readline/history.h... yes checking for RL_PROMPT_START_IGNORE in stdio.h,readline/readline.h,readline/history.h... yes checking for RL_PROMPT_END_IGNORE in stdio.h,readline/readline.h,readline/history.h... yes creating Makefile 

无论如何太多的功能缺失,但…下一步

 $ rvm pkg uninstall 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... yes checking for rl_getc_function() in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_filename_completion_function() in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_username_completion_function() in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_completion_matches() in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_refresh_line() in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_deprep_term_function in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_completion_append_character in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_basic_word_break_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_completer_word_break_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_basic_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_completer_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_filename_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_attempted_completion_over in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_library_version in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_editing_mode in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_line_buffer in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_point in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_event_hook in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_catch_sigwinch in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_catch_signals in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_cleanup_after_signal() in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_clear_signals() in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_set_screen_size() in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_get_screen_size() in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_vi_editing_mode() in stdio.h,readline/readline.h,readline/history.h... yes checking for rl_emacs_editing_mode() in stdio.h,readline/readline.h,readline/history.h... yes checking for replace_history_entry() in stdio.h,readline/readline.h,readline/history.h... yes checking for remove_history() in stdio.h,readline/readline.h,readline/history.h... yes checking for clear_history() in stdio.h,readline/readline.h,readline/history.h... yes checking for RL_PROMPT_START_IGNORE in stdio.h,readline/readline.h,readline/history.h... yes checking for RL_PROMPT_END_IGNORE in stdio.h,readline/readline.h,readline/history.h... yes creating Makefile $ make compiling readline.c linking shared-object readline.so $ make install /usr/bin/install -c -m 0755 readline.so /home/sky/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/x86_64-linux installing default readline libraries irb 1.9.3-p194 :001 > 

You can see it is work fine for me.

1 – don't forget to install libedit-dev

 # dpkg --get-selections| egrep '(readline|libedit)' libedit-dev install # <= BSD PACKAGE, not GNU, but... it is work fine to me libedit2 install # the same story as previous libreadline-dev install libreadline5 install libreadline6 install libreadline6-dev install readline-common install 

2 – uninstall pkg readline

 $ rvm pkg uninstall readline 

3 – go to $rvm_path/src/ruby-#{version}/ext/readline and do

 $ ruby extconf.rb; make; make install 

4 – forget about headache

If you are using Bundler then the following might help:

 echo "gem 'rb-readline'" >> Gemfile bundle install