2011-03-30 17 views
6

Estoy usando rails3 por primera vez (he estado usando rails2 durante años) dentro de un rvm. Tratando de iniciar la consola, me sale este error:Rails3 y problema de lectura

require': no such file to load -- readline

Googled alrededor y esto parece ser un problema común. La mayoría de las soluciones parecen implicar 1) instalar el siguiente: instalado en readline sudo apt-get install libncurses5-dev libreadline5-dev 2) ir a la carpeta joya para readline, corriendo ruby extconf.rb que genera un archivo MAKE 3) haciendo make y make install

Ahora, yo no tenía mi rvm, así que traté de instalarlo. Pero no pude determinar qué es la gema: gem install readline no da ningún resultado. El único que encontré fue gem install rdp-rb-readline. Instalé las dos bibliotecas de desarrollo, instalé la gema rdp-rb-readline, fui a la siguiente carpeta gema y ejecuté ruby extconf.rb. Esto de hecho generó un archivo MAKE. Pero no puedo make o make install: i obtener estos errores:

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

poco atascado ahora. ¿Me falta algo fundamental que necesito para hacer las bibliotecas necesarias/gema/lo que sea?

agradecido por cualquier consejo - max

SOLUCIÓN: que en realidad sólo resolvió este - He desinstalado la gema RDP-rb-readline, entonces hice gem install rb-readline, luego agregó gem 'rb-readline' a Gemfile de mi aplicación. Supongo que solo necesitaba saber dónde buscar la línea de lectura si no estaba en el lugar habitual. No necesité hacer nada con extconf.rb, lo cual es bueno porque la gema rb-readline no tiene una.

Dejé esto al final de mi pregunta porque a) alguien más podría tener una mejor comprensión del problema en lugar de mi enfoque de prueba y error yb) en caso de que alguien más tenga el mismo problema.

+0

De hecho acabo de resolver esto - solución agregada a OP –

+0

¿dónde estaba la "carpeta de gem posterior"? – rogerdpack

+0

@rogerdpack - ya no lo tengo, pero hubiera sido '/home/max/.rvm/gems/ruby-1.9.2-p0/gems/rdp-rb-readline- ' –

Respuesta

4

Si está utilizando rvm, siempre puede hacer uso del servicio de instalación del paquete para solucionar cualquier problema que pueda tener su sistema operativo. Rubí menudo utiliza las bibliotecas que son un poco diferente de lo que se ha instalado:

rvm package install readline 

El instalador rvm aplica varios parches en contra de una versión específica, conocida de trabajo de readline y debe construir sin problemas. Este paquete readline no afectará la instalación de su sistema, y ​​se usa solo para compilaciones basadas en rvm.

+1

Gracias tadman - i simplemente lo intenté y pareció pasar felizmente por el proceso de instalación. Pero todavía tengo el mismo problema. Encontré otra solución, no sé si eso es mejor, que adjunté a mi PO. Pero me gusta su enfoque y me gustaría hacerlo funcionar correctamente. –

+0

Como nota, debe compilar su 'ruby' contra la línea de lectura gestionada por rvm para que funcione correctamente utilizando' rvm install'. – tadman

+0

Lo siento tadman, no entiendo muy bien a qué te refieres. ¿Podrías dar más detalles? ¡Gracias! –

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

(sustituir rubí-1.9.2-p180 con tu versión de rubí sistema)

ruby extconf.rb 

si ninguna comprobación dice que no, instalar estos pakages:

sudo apt-get install libncurses5-dev libreadline5-dev 

y ejecutar ruby extconf.rb

debe obtener todas las comprobaciones sí,

make 
make install 

ahora funcionará.

+0

no funciona aunque en mi caso ... así que fui con esa gema 'rb-readline' – Rubyrider

+0

Above funciona perfectamente, gracias. 'sudo yum install readline-devel' para CentOS. –

Cuestiones relacionadas