2008-09-25 9 views
7

Esto es una continuación de this question.Actualización de gemas en Windows: ¿está roto?

Cuando emite el comando gem update en Windows, cada vez que se llega a una joya cuya última versión no tiene binarios de Windows, que va a tratar de construir la extensión nativa, que, por supuesto, fallar. Por ejemplo:

Updating sqlite3-ruby 
Building native extensions. This could take a while... 
ERROR: While executing gem ... (Gem::Installer::ExtensionBuildError) 
    ERROR: Failed to build gem native extension. 

c:/ruby/bin/ruby.exe extconf.rb update 
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. 

El comportamiento de edad pre-1.x de pedir la plataforma necesaria al menos hizo la actualización posible. Ahora no puedo actualizar en absoluto a menos que desinstale las gemas problemáticas (actualmente sqlite3-ruby y hpricot), ejecute la actualización, y luego vuelva a instalar las gemas usando el modificador --version.

¿Alguien tiene una solución para este enigma o estamos atrapados con él?


Nota:

$ gem -v 
1.2.0 

$ ruby -v 
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] 

Nota (26 de septiembre de 2008): me acaba de actualizar a 1.3.0 gemas y este problema persiste.

Nota (18 de noviembre de 2008): Acabo de actualizar a gems 1.3.1 y el problema persiste.

Nota (28 de abril de 2009): La última versión de gemas (1.3.2) ahora se salta cualquier gemas donde la construcción de extensiones nativas falla durante la actualización; en otras palabras, el problema es fijo. ¡Hurra!

+0

Qué quiere decir 28 de de abril de 2009? ¿O buscas la insignia del viajero del tiempo? –

+0

¿Qué sucede si deseo instalar una nueva gema y falla al instalarla? Gems 1.3.2 tiene esto resuelto ?? –

+0

Sí, hace mucho tiempo que se solucionó este problema. A partir de hoy, ahora estamos en RubyGems versión 1.3.7. –

Respuesta

4

Gems, a partir de version 1.3.2, ahora se saltará gemas que no logran construir, por lo que actualizar Rubygems a la última versión y el problema discutido aquí debe ser resuelto.

gem update --system 

La siguiente solución ahora es obsoleto, pero lo dejo aquí para que quede constancia.

I started a thread on this issue en el Ruby Forum (es una parte delantera de la lista de distribución). Hay una discusión interesante; vale la pena leerlo Incluso hay una solución muy hacky a este problema de la existencia:

`gem.bat outdated`.split(/\n/).map{|z|z.scan(/^[^[:space:]]+/)}.flatten.each{|z| `gem.bat update #{z}`} 

que llama el comando gem outdated y crea una lista de todas las gemas obsoletos. Luego itera sobre la lista y llama al gem update para cada gema obsoleta individual. Si uno falla, simplemente pasa al siguiente.

2

Parece que estamos atascados. He encontrado here que no hay gema mswin32 para la última versión (1.2.4), intenté instalarlo en mi computadora y tuve el mismo problema.

Instalación de la versión anterior funciona bien:

gem install sqlite3-ruby --version '1.2.3' 
+0

Sí, eso funciona y es lo que hice. El problema es entonces cuando posteriormente ejecuta la actualización de gem; automáticamente intenta actualizar a 1.2.4. –

1

Mirando el RubyForge file list para sqlite3-ruby revela que la versión 1.2.3 tiene gemas que se construyeron utilizando Visual Studio 6 y MinGW (sqlite3-ruby-1.2.3-mswin32.gem & sqlite3-ruby-1.2.3- x86-mingw32.gem). Sin embargo, la versión 1.2.4 no tiene tales gemas preconstruidas.

Si tiene instalado Visual Studio 6 o MinGW y tiene configuradas las variables de entorno del compilador (al menos para Visual Studio 6 pero no está seguro acerca de MinGW), la gema debe compilarse durante la instalación. No estoy seguro de si las gemas se compilarán en versiones más nuevas de Visual Studio.

2

ejecutar el comando de abajo y debería funcionar:

gem install sqlite3-ruby --platform=mswin32 
+0

este me ayudó. Gracias – Radek

Cuestiones relacionadas