2010-08-13 24 views
9

Tengo problemas para instalar la gema sqlite3-ruby en crunchbang linux. Después de googlear en las últimas horas y seguir a varias personas con el mismo problema, todavía no lo he hecho funcionar.¡Problema al instalar sqlite3-ruby!

Aquí es lo que veo después de probar un 'sudo gem install sqlite3-ruby'

extensiones nativas de construcción. Esto podría llevar un tiempo ...
ERROR: Error al instalar sqlite3-ruby:
ERROR: Error al construir la extensión nativa de la gema.

/usr/bin/ruby1.8 extconf.rb
comprobación de sqlite3.h ... sí
comprobación de sqlite3_libversion_number() en -lsqlite3 ... sí
comprobación de rb_proc_arity() ... no
comprobando sqlite3_initialize() ... no
sqlite3-ruby solo es compatible con las versiones sqlite3 3.6.16+, actualice!
* * extconf.rb no
No se pudo crear Makefile debido a alguna razón, probablemente, la falta de
bibliotecas y/o cabeceras necesarias. Consulte el archivo mkmf.log para obtener más información sobre
. Es posible que necesite opciones de configuración.

Siguiente Me encontré con esta página; http://groups.google.com/group/sqlite3-ruby/browse_thread/thread/f22d098b561c48af/6e754f7b2fc3cd75?#6e754f7b2fc3cd75

He descargado sqlite-fusión-3.7.0.1.tar.gz y emitió los siguientes comandos:

tar zxvf sqlite-fusión-3.7.0.1.tar.gz
cd sqlite-3.7. 0,1
mkdir $ HOME/sqlite
./configure --prefix = $ HOME/sqlite
hacer & & make install
sudo gem install sqlite3-ruby - with-sqlite3-dir = $ HOME/sqlite

Sin embargo, sigo recibiendo exactamente el mismo error. He usado 'sudo apt-get install sqlite3 libsqlite3-dev', pero sigo recibiendo exactamente el mismo error.

¿Algún consejo?

Y como pequeño detalle, ¿cómo es que cuando uso 'sudo apt-get install sqlite3', toma 3.5.9 en lugar de la 3.7.0.1 que descargué manualmente?

Respuesta

3

Esto se debe a que extconf.rb está recuperando su antigua biblioteca 3.5.9 al probar las funciones antes de armar el archivo Makefile.

Una solución a cortar este corto es apt-get remove sqlite3 y vuelva a intentar

sudo gem install sqlite3-ruby -- --with-sqlite3-dir=$HOME/sqlite 

Esto le puede salvar de incompatibilidades si desea utilizar binaria línea de comandos sqlite3.

Otra solución es copiar su nuevo ~/sqlite/lib/libsqlite3.a en el directorio de construcción de su gema (vea gem env, algo así como gems/sqlite3-ruby-1.3.1/ext/sqlite3) y vuelva a intentar

sudo gem install sqlite3-ruby 

El ensayo deberá recoger su nueva colección de ahora e instalar bien.

1

Tuve exactamente el mismo problema. La solución de Jarek funcionó cuando moví todos los archivos (no solo libsqlite3.a) de ~/sqlite/lib a gems/sqlite3-ruby-1.3.1/ext/sqlite3.

15

instalar una versión inferior de sqlite3-ruby debe resolver su problema:

sudo gem install sqlite3-ruby --version=1.2.5 
+2

Esto funcionó para mí. – Chris

1

Shawn, vamos a tratar de dar más detalles.

Ruby se está adaptando a la biblioteca sqlite3 compilando pequeños ejemplos y verificando si la compilación fue exitosa. Esto recoge la biblioteca anterior, que no incluye las funciones requeridas.

La primera solución es eliminar la biblioteca anterior y dirigir Ruby al directorio donde descargó la nueva versión. Dependiendo del sistema que esté utilizando, debe elegir el administrador de paquetes correcto: apt-get, dpkg, yum, yast, ipkg, ... para eliminar el paquete obsoleto. Esto asegura que tu construcción no recoja ninguna pieza vieja. Luego debe asegurarse de que está apuntando Ruby al directorio correcto donde se encuentra la nueva biblioteca con la opción --with-sqlite3-dir.

La segunda solución es una especie de truco. Se basa en el compilador C recogiendo los archivos en el directorio actual antes que los demás. Puede usar cp, mc o cualquier otro administrador de archivos para copiar las bibliotecas .a y .h en el directorio de compilación. La compilación debe estar bien, pero su comando sqlite3 seguirá siendo el anterior, posiblemente incompatible con las bases de datos creadas con su nueva biblioteca.

HTH, Jarek

2

por la README.rdoc sqlite3-ruby (ahora llamado sqlite3), puede utilizar el siguiente método para dirigir a las bibliotecas correctas:

If you have sqlite3 installed in a non-standard location, you can specify the location of the include and lib files by doing:

gem install sqlite3 -- --with-sqlite3-include=/opt/local/include \

--with-sqlite3-lib=/opt/local/lib

+0

si descargó e instaló sqlite3 de la fuente en/usr/local ¡este es el camino a seguir! Gracias. – Dmitri

1

tuve un problema similar - simplemente comento a cabo la siguiente línea de ./Gemfile molesto en el directorio del proyecto a:

# gem 'sqlite3-ruby', :require => 'sqlite3' 

e hice:

bundle install 

script/rails servidor funcionaba bien de nuevo. ¡Uf!

parece que sqlite3 se duplica - raro

1

me encontré con el mismo problema en OSX 10.5.8

Las soluciones era bastante simple:

1.- Xcode descargado desde dev manzana .: xcode314_2809_developerdvd.dmg (requiere registro) 2.- Descargar e instalar macports: http://distfiles.macports.org/MacPorts/MacPorts-1.9.2-10.5-Leopard.dmg 3.- sudo port install sqlite3

y todo estaba trabajando como destinado a.

¡Esperamos la disponibilidad!