ruby - Cómo obtener soporte de Readline en IRB usando RVM en Ubuntu 11.10
libreadline (12)
Desafortunadamente, ninguno de estos funcionó para mí. Terminé usando la solución rápida de http://beginrescueend.com/packages/readline/
Eso resolvió mi problema.
He intentado todo lo que se me ocurre para hacer que esto funcione, en vano, así que aquí estoy solicitando sugerencias sobre cómo depurar.
En primer lugar, ejecutando Ubuntu 11.10
Rvm instalado:
$ bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
Línea de lectura instalada usando apt-get:
$ sudo apt-get install libreadline-dev
Verifique la instalación 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
Instalar ruby, con soporte de lectura?
$ rvm install 1.9.2 --with-readline-dir=/usr
Aquí está la versión rvm:
$ rvm --version
rvm 1.9.2 by Wayne E. Seguin ([email protected]) [https://rvm.beginrescueend.com/]
Vamos a probar el caparazón de rubí:
$ 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
No, está bien, así que si no va a funcionar con la versión de lectura de ubuntu ??? intentemos con la versión propia de rvm de 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
Ok, hay un error allí, echemos un vistazo:
$ 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
Y como se esperaba, irb no funciona con 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 >
¿He instalado todos los requisitos de rvm? Sí aquí mira:
$ 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.
Y así continúa, y así sucesivamente ...
$ 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
Por lo tanto, para concluir, estaría muy agradecido si una chispa brillante pudiera sugerir cómo puedo depurar esta situación y resolverla.
ps - Sí, tengo "Google" este problema hasta la muerte ...
Esto resolvió mi problema para rvm con Ruby 1.9.3
gem install rb-readline
Estos pasos arreglaron mi problema (en un Lubuntu 12.04) después de compilar ruby y obtener continuamente el error de "error de lectura de compilación" cada vez que ejecuté:
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
Luché con este mismo problema con Ubuntu 11.10.
En mi caso, readline aparentemente compilaría correctamente si usaba lo siguiente:
$ rvm --skip-autoreconf pkg install readline
como se indica en la parte inferior de http://beginrescueend.com/packages/readline/
Sin embargo, cuando invocaba irb, obtenía el error normal "No se puede requerir readline"
Finalmente, basado en la línea de comando de Shane, invoqué lo siguiente:
$ 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
en lugar del comando mencionado en http://beginrescueend.com/packages/readline/
$ rvm install 1.9.2 --with-readline-dir=$rvm_path/usr
En mi caso, la versión 1.9.3 era lo que quería. Y finalmente, Irb creó una línea de lectura funcional.
Gracias a todos aquí por señalarme en la dirección correcta.
Mi configuración es ubuntu 11.10, RVM 1.10.2, ruby 1.9.3.
Este problema de readline generaba errores al ejecutar irb y evitaba el funcionamiento de la consola de rails debido al error:
''require'': no se puede cargar dicho archivo - readline (LoadError)
La solución que funcionó para mí fue la descrita por Bryan Larsen, es decir,
NO instale pkg readline, con o sin --skip-autoreconf
Haga la instalación de apt-get que los requisitos de rvm le dicen que haga, luego
rvm --skip-autoreconf pkg uninstall readline
rvm eliminar 1.9.3
rvm instalar 1.9.3
Thx por el consejo Bryan.
Ok, entonces esto puede parecer bastante obvio, bueno, siempre es cuando sabes la respuesta:
Dejé de usar RVM y cambié a rbenv, ¡lo que estoy muy contento de haber hecho!
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
Esto se instaló sin error, y aún no estoy convencido de que necesite el paquete gplv2 ya que tengo instalado libreadline6-dev. Sin embargo, STILL no resolvió mi problema. Eliminó RVM de la ecuación y me mostró que, a pesar de mis mejores esfuerzos, el shell IRB se negaba a usar readline.
La respuesta vino de leer esta gran guía:
Dentro de mi archivo ~ / .irbrc encontré:
IRB.conf[:USE_READLINE] = false
Una actualización rápida para:
IRB.conf[:USE_READLINE] = true
¡Y estoy cocinando con gasolina!
Gracias por todas las excelentes respuestas y sugerencias, realmente aprecio tu tiempo.
Olvídate de todo lo que oigas sobre cualquier lógica, solo mira aquí y haz lo mismo paso a paso:
(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
De todos modos, faltan demasiadas funciones, pero ... haga lo siguiente
$ 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 >
Puedes ver que funciona bien para mí.
1 - no olvides instalar 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 - desinstalación de pkg readline
$ rvm pkg uninstall readline
3 - vaya a $ rvm_path / src / ruby - # {version} / ext / readline y haga
$ ruby extconf.rb; make; make install
4 - olvídate del dolor de cabeza
Para mí, todo salió de la caja con la última versión de rvm. Mis pasos
bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )
de acuerdo con los 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
Puede probar un workarround instalando el paquete libreadline5-dev . Creo que la libreadline6-dev no está funcionando en este momento.
Tuve el mismo problema pero estoy en 11.04 y al leer el enlace me diste github.com/wayneeseguin/rvm/issues/553 y de la información en peplins comento que eliminé la llamada de autoreconf que se agregó aquí.
https://github.com/wayneeseguin/rvm/commit/94c301d y ahora compila readline sin ningún error. Añadí de nuevo en la llamada de autorreconf después de haber compilado readline antes de instalar Ruby nuevamente.
Así que así es como lo hice funcionar:
edite ~ / .rvm / scripts / functions / pkg y elimine lo siguiente:
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
Compila readline y quita ruby (utilicé el comando ree_dependencies pero no estoy seguro de que sea necesario):
rvm pkg install ree_dependencies
rvm remove 1.9.2
deshace tu eliminación a ~ / .rvm / scripts / functions / pkg
Luego instalé 1.9.2 con este comando (de nuevo es de la instalación de ree, que no estoy seguro es necesario pero esto es lo que usé)
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
y ahora todo parece funcionar como debería, espero que ayude a alguien.
Ubuntu 12.04 aquí: las respuestas aquí ayudaron, pero también fueron engañosas.
Si está utilizando Ubuntu 12.04, NO instale pkg readline, con o sin --skip-autoreconf. Después de que hayas hecho eso, readline o zlib se romperán no importa qué combinación de switches le des a la instalación de rvm 1.9.3.
Para que funcione, haga la instalación de apt-get que los rvm requirements
le dicen que haga, haga una línea de base de datos para la pkg uninstall readline
y luego haga un simple rvm remove 1.9.3; rvm install 1.9.3
rvm remove 1.9.3; rvm install 1.9.3
Si está utilizando Bundler , lo siguiente podría ayudar:
echo "gem ''rb-readline''" >> Gemfile
bundle install