2008-09-04 16 views
19

Actualización: Compruebe hacia fuera esta pregunta de seguimiento: Gem Update on Windows - is it broken?gema sqlite3-ruby: No se pudo construir extensión nativa joya


En Windows, cuando hago esto:

gem install sqlite3-ruby 

I obtiene el siguiente error:

Building native extensions. This could take a while... 
ERROR: Error installing sqlite3-ruby: 
     ERROR: Failed to build gem native extension. 

c:/ruby/bin/ruby.exe extconf.rb install sqlite3-ruby --platform Win32 
checking for fdatasync() in rt.lib... no 
checking for sqlite3.h... no 

nmake 
'nmake' is not recognized as an internal or external command, 
operable program or batch file. 


Gem files will remain installed in c:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4 for inspection. 
Results logged to c:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/ext/sqlite3_api/gem_make.out 

Lo mismo sucede con la gema hpricot. Parece que recuerdo estas gemas bien instaladas en < 1.0 gemas, pero ahora estoy en 1.2.0, las cosas se han vuelto complicadas.

También he intentado esto:

gem install sqlite3-ruby --platform Win32 

Huelga decir que esto no funciona bien (mismo error)

¿Alguien sabe lo que está pasando aquí y cómo solucionar este problema?


Actualización: Consulte esta pregunta de seguimiento: Gem Update on Windows - is it broken?

Respuesta

26

Como sugiere Nathan, esto parece estar relacionado con el hecho de que las últimas versiones de las gemas sqlite3-ruby y hpricot no parecen tener versiones de Windows. Esto es lo que se debe hacer cuando enfrentado con esta situación (nota, el nombre de la gema es automáticamente wildcarded, para que pueda escribir simplemente sql y obtener una lista de todas las gemas que comienza con sql):

$ gem list --remote --all sqlite 

*** REMOTE GEMS *** 

sqlite (2.0.1, 2.0.0, 1.3.1, 1.3.0, 1.2.9.1, 1.2.0, 1.1.3, 1.1.2, 1.1.1, 1.1) 
sqlite-ruby (2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.0, 2.0.3, 2.0.2) 
sqlite3-ruby (1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0.0, 0.9.0, 0.6.0, 0.5.0) 

continuación, puede elegir la versión que desea instalar:

gem install sqlite3-ruby -v 1.2.3 

Para satisfactoriamente instalar hpricot, hice esto:

gem install hpricot -v 0.6 

un fastidio que, haciendo un gem update intenta actualizar las gemas a sus últimas versiones rotas en Windows. Cuando la rutina de actualización encuentra un error, lo desvía de todo el proceso. Hay una solución (hacky) para este problema here.

Entonces, ¿este problema es un error en las gemas?¿Las gemas no deberían detectar automáticamente la plataforma e instalar la última versión compatible?

+0

Sospecho que el problema podría ser un error en la gema y no con el sistema de gemas en general. Si la gema no especifica que es específica de la plataforma, el sistema de gemas probablemente asuma que es una gema independiente de la plataforma e intenta instalarlo. –

2

¿Es posible que la versión más reciente aún no ha sido portado a Win32 todavía? Dado que esta gema en particular tiene enlaces al código compilado, requeriría una gema específica de la plataforma. Si forzo la instalación de la versión 1.2.3 en lugar de la actual 1.2.4, la versión específica de la plataforma se instala, pero cuando le permito a Gema intentar instalar la versión actual, obtengo la versión genérica 1.2.4 (en las gemas) carpeta de biblioteca, carece del sufijo -x86-mswin32 que las otras carpetas sqlite3-ruby tienen en sus nombres.

Tal vez alguien más pueda responder cómo gema maneja las gemas específicas de la plataforma. Se han cargado gemas separadas para cada plataforma y el software gema selecciona cuál para desplegar?

1

También me encontré con este problema. Vale la pena saber que la diferencia entre 1.2.3 y 1.2.4 no es significativa. Aquí están los 1.2.4. notas de la versión:

Release Name: 1.2.4

Notes: This release only updates the generated C file to reflect the compatibility changes that were made to the SWIG file. Binary builds (e.g., Windows) are not affected, and need no update. In general, you will not need this update unless you are using a version of Ruby prior to 1.8.6. (source: 1.2.4. release notes)

Espero que ayude a los demás!

1

tuve el mismo problema en Windows y tengo installe MinGW http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/MinGW%205.1.6/MinGW-5.1.6.exe/download y el problema se ha ido: -)

C:> joya instalar hpricot con éxito instalado hpricot-0.8.2-x86-mswin32 1 joya instalado Instalación de la documentación para el ri hpricot-0.8.2-x86-mswin32 .. . Instalación de la documentación para RDoc hpricot-0.8.2-x86-mswin32 ...

C:> joya instalar ruby-postgres instalado rubí-postgres-0.7.1.2006.04.06-x86-mswin32 con éxito instalados 1 gema Instalación de la documentación para el rubí ri-postgres-0.7.1.2006.04.06-x86-mswin32 ... Instalación de la documentación RDoc de rubí-postgres-0.7.1.2006.04.06-x86-mswin32 ...

2

primera de SQLite. org (http://www.sqlite.org/download.html)
descargar ->
Binarios precompilados: sqlite-dll-win32-x86-3071700.zip
y Código Fuente: sqlite-autoconf-3071700.tar.gz
luego extraer como:

-include 
    --sqlite3.h 
    --sqlite3ext.h 
-lib 
    --shell.c 
    --sqlite3.c 
    --sqlite3.def 
    --sqlite3.dll 

última instalación joya como:

gem install sqlite3 --platform=ruby -- --with-sqlite3-include=path\to\include 
--with-sqlite3-lib=path\to\lib --no-ri --no-rdoc 

Buena suerte!

Cuestiones relacionadas