uru railsinstaller instalar for actualizar ruby windows pik

ruby - railsinstaller - ''Error al crear la extensión nativa de la gema'' en Windows 7(el sistema no puede encontrar la ruta especificada)



ruby download for windows (7)

El problema en definitiva

Estoy en Windows y me gem install json —platform=ruby el siguiente error al ejecutar gem install json —platform=ruby :

The system cannot find the path specified. Temporarily enhancing PATH to include DevKit... Building native extensions. This could take a while... The system cannot find the path specified. ERROR: Error installing json: ERROR: Failed to build gem native extension. C:/Ruby193/bin/ruby.exe extconf.rb creating Makefile Gem files will remain installed in C:/Ruby193/lib/ruby/gems/1.9.1/gems/json-1.8.1 for inspection. Results logged to C:/Ruby193/lib/ruby/gems/1.9.1/gems/json-1.8.1/ext/json/ext/generator/gem_make.out

Antecedentes y algunas investigaciones.

Primero que nada, no soy una persona de Windows, así que este es un mundo nuevo y valiente para mí. Haber heredado una computadora portátil del trabajo que tenía una colección de bibliotecas locas por todas partes, logré eliminar todas las instalaciones anteriores de ruby ​​y Devkit y luego instalé lo siguiente:

  • Ruby 1.9.3p484 con Ruby Installer en C:/Ruby193
  • Ruby 2.0.0p353 con Ruby Installer en C:/Ruby200
  • Devkit DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe (para ruby ​​1x) extraído en C:/Ruby193-devkit
  • Devkit DevKit-mingw64-32-4.7.2-20130224-1151-sfx.exe (32 bits para ruby ​​2x) extraído en C:/Ruby200-devkit-x32 .

Luego instalé Pik 0.2.8 como una gema y ejecuté pik_install en un nuevo directorio C:/bin según las instrucciones de instalación.

Mi PATH se parece a esto:

PATH=C:/bin;C:/Ruby193/bin;C:/windows;C:/windows/system32;C:/windows/system32/Wbem;c:/Program Files (x86)/Microsoft SQL Server/100/Tools/Binn/;c:/Program Files/Microsoft SQL Server/100/Tools/Binn/;c:/Program Files/Microsoft SQL Server/100/DTS/Binn/;C:/Program Files (x86)/Common Files/Roxio Shared/DLLShared/;C:/Program Files/Java/jdk1.6.0_33/bin;C:/Program Files (x86)/Common Files/Apple/Mobile Device Support/;C:/Program Files (x86)/Common Files/Apple/Apple Application Support;C:/Program Files (x86)/QuickTime/QTSystem/;C:/Program Files/TortoiseSVN/bin;C:/inpath;C:/Program Files (x86)/WinMerge;C:/ChromeDriver;C:/Program Files/WIDCOMM/Bluetooth Software/;C:/Program Files/WIDCOMM/Bluetooth Software/syswow64

Lo importante es que C:/bin y C:/Ruby193/bin están en la ruta. Esto significa que ruby ​​1.9.3 se carga de forma predeterminada cuando pik use 2.0.0p353 un shell y puedo cambiar exitosamente a 2.0.0 con pik use 2.0.0p353 . En otras palabras, pik funciona bien.

Devkit está diseñado para permitir la compilación de binarios nativos de C / C ++ desde gemas en Windows, a fin de utilizar un binario precompilado de ventanas.

Como tengo dos versiones de ruby ​​instaladas, y cada una requiere un devkit diferente (una para 2x y otra para 1x), tuve que hacer la configuración para devkit dos veces:

cd C:/Ruby193-devkit ruby dk.rb init # Edit config.yml to remove all but Ruby193 ruby dk.rb install cd C:/Ruby200-devkit ruby dk.rb init # Edit config.yml to remove all but C:/Ruby200 ruby dk.rb install

En este punto debería haber podido ejecutar gem install json —platform=ruby éxito, pero obtuve el error anterior. Después de una pequeña investigación , descubrí esto , que aconseja verificar que COMSPEC esté correctamente configurado y eliminar cualquier clave de AutoRun de HKEY_CURRENT_USER/Software/Microsoft/Command Processor . Tuve una de ANSIcon y la eliminé debidamente.

Desafortunadamente todavía no pude instalar la gema json.

Entonces me di cuenta de que tal vez se estaba utilizando la versión incorrecta de GCC o que no se había encontrado. Las dos versiones de Devkit vienen con diferentes versiones de gcc:

> C:/Ruby193-devkit/mingw/bin/gcc —version gcc (tdm-1) 4.5.2 > C:/Ruby200-devkit-x32/mingw/bin/gcc —version gcc (rubenv-4.7.2-release) 4.7.2

Luego me pregunté si pik no estaba cargando la versión de devtools (y por lo tanto gcc) para la versión específica de ruby ​​que había escogido, y siempre estaba usando 1.9.3. Gracias a este artículo , parece que ese no es el caso:

> pik use 193 > where ruby C:/Ruby193/bin/ruby.exe > cat C:/Ruby193/lib/ruby/site_ruby/devkit.rb # enable RubyInstaller DevKit usage as a vendorable helper library unless ENV[''PATH''].include?(''C://Ruby193-devkit//mingw//bin'') then puts ''Temporarily enhancing PATH to include DevKit...'' ENV[''PATH''] = ''C://Ruby193-devkit//bin;C://Ruby193-devkit//mingw//bin;'' + ENV[''PATH''] end ENV[''RI_DEVKIT''] = ''C://Ruby193-devkit'' ENV[''CC''] = ''gcc'' ENV[''CXX''] = ''g++'' ENV[''CPP''] = ''cpp'' > pik use 200 > where ruby C:/Ruby200/bin/ruby.exe > cat C:/Ruby200/lib/ruby/site_ruby/devkit.rb # enable RubyInstaller DevKit usage as a vendorable helper library unless ENV[''PATH''].include?(''C://Ruby200-devkit-x32//mingw//bin'') then phrase = ''Temporarily enhancing PATH to include DevKit...'' if defined?(Gem) Gem.ui.say(phrase) if Gem.configuration.verbose else puts phrase end puts "Prepending ENV[''PATH''] to include DevKit..." if $DEBUG ENV[''PATH''] = ''C://Ruby200-devkit-x32//bin;C://Ruby200-devkit-x32//mingw//bin;'' + ENV[''PATH''] end ENV[''RI_DEVKIT''] = ''C://Ruby200-devkit-x32'' ENV[''CC''] = ''gcc'' ENV[''CXX''] = ''g++'' ENV[''CPP''] = ''cpp''

(En realidad no tengo el gato disponible en Windows, pero es una explicación más clara)

Como puede ver, parece que la versión correcta de devkit está siendo agregada a la ruta por devkit.rb, que obviamente se está cargando porque mi error contiene ''Mejorar temporalmente el PATH para incluir DevKit ...''.

Volver al error original

Era:

The system cannot find the path specified. Temporarily enhancing PATH to include DevKit... Building native extensions. This could take a while... The system cannot find the path specified. ERROR: Error installing json: ERROR: Failed to build gem native extension. C:/Ruby193/bin/ruby.exe extconf.rb creating Makefile Gem files will remain installed in C:/Ruby193/lib/ruby/gems/1.9.1/gems/json-1.8.1 for inspection. Results logged to C:/Ruby193/lib/ruby/gems/1.9.1/gems/json-1.8.1/ext/json/ext/generator/gem_make.out

Desafortunadamente, el registro de resultados no ofrece exactamente mucha ayuda. Esto es lo que parece gem_make.out:

C:/Ruby193/bin/ruby.exe extconf.rb creating Makefile

Pensé que extconf.rb podría ofrecer algo de ayuda, pero no puedo hacer nada al respecto:

require ''mkmf'' unless $CFLAGS.gsub!(/ -O[/dsz]?/, '' -O3'') $CFLAGS << '' -O3'' end if CONFIG[''CC''] =~ /gcc/ $CFLAGS << '' -Wall'' unless $DEBUG && !$CFLAGS.gsub!(/ -O[/dsz]?/, '' -O0 -ggdb'') $CFLAGS << '' -O0 -ggdb'' end end $defs << "-DJSON_GENERATOR" create_makefile ''json/ext/generator''

El Makefile en C:/Ruby193/lib/ruby/gems/1.9.1/gems/json-1.8.1/ext/json/ext/generator parece a esto . Me parece extraño que este Makefile incluso esté siendo creado.

Si alguien con un poco más de experiencia con Windows / Ruby puede arrojar alguna luz sobre esto, ¡sería increíble!

PD. Estoy en Windows 7 Professional SP1

Actualizar después de un poco más de excavación

Así que quería comprobar que devkit estaba mejorando el camino con los directorios de devkit correctos. Gracias a una sugerencia de otra pregunta de SO, moví las instalaciones de devkit dentro de los directorios de Ruby:

El devkit tdm ahora vive en C:/Ruby193/devkit mientras que el mingw64 vive en C:/Ruby200/devkit . Después de ejecutar ruby dk.rb install -f para cada devkit, abrí ambos archivos devkit.rb para verificar que la ruta se haya actualizado correctamente. Lo hicieron, y actualicé las opciones, por lo que debería imprimir "La mejora temporal de PATH incluye DevKit for 1.9" o "La mejora temporal de PATH incluye DevKit for 2". A modo de confirmación de que se está cargando el devkit correcto:

C:/>pik 193 C:/>ruby -rdevkit -ve "puts ENV[''PATH'']" ruby 1.9.3p484 (2013-11-22) [i386-mingw32] Temporarily enhancing PATH to include DevKit for 1.9... C:/Ruby193/devkit/bin;C:/Ruby193/devkit/mingw/bin;C:/bin;C:/Ruby193/bin;C:/windows;C:/windows/system32;C:/windows/system32/Wbem;c:/Program Files (x86) /Microsoft SQL Server/100/Tools/Binn/;c:/Program Files/Microsoft SQL Server/100/Tools/Binn/;c:/Program Files/Microsoft SQL Server/100/DTS/Binn/;C:/Pro gram Files (x86)/Common Files/Roxio Shared/DLLShared/;C:/Program Files/Java/jdk1.6.0_33/bin;C:/Program Files (x86)/Common Files/Apple/Mobile Device Su pport/;C:/Program Files (x86)/Common Files/Apple/Apple Application Support;C:/Program Files (x86)/QuickTime/QTSystem/;C:/Program Files/TortoiseSVN/bin ;C:/inpath;C:/Program Files (x86)/WinMerge;C:/ChromeDriver;C:/Program Files/WIDCOMM/Bluetooth Software/;C:/Program Files/WIDCOMM/Bluetooth Software/sy swow64 C:/>pik 200 C:/>ruby -rdevkit -ve "puts ENV[''PATH'']" ruby 2.0.0p353 (2013-11-22) [i386-mingw32] Temporarily enhancing PATH to include DevKit for 2... C:/Ruby200/devkit/bin;C:/Ruby200/devkit/mingw/bin;C:/bin;C:/Ruby200/bin;C:/windows;C:/windows/system32;C:/windows/system32/Wbem;c:/Program Files (x86) /Microsoft SQL Server/100/Tools/Binn/;c:/Program Files/Microsoft SQL Server/100/Tools/Binn/;c:/Program Files/Microsoft SQL Server/100/DTS/Binn/;C:/Pro gram Files (x86)/Common Files/Roxio Shared/DLLShared/;C:/Program Files/Java/jdk1.6.0_33/bin;C:/Program Files (x86)/Common Files/Apple/Mobile Device Su pport/;C:/Program Files (x86)/Common Files/Apple/Apple Application Support;C:/Program Files (x86)/QuickTime/QTSystem/;C:/Program Files/TortoiseSVN/bin ;C:/inpath;C:/Program Files (x86)/WinMerge;C:/ChromeDriver;C:/Program Files/WIDCOMM/Bluetooth Software/;C:/Program Files/WIDCOMM/Bluetooth Software/sy swow64

Para que todo se vea como funciona correctamente. pero:

C:/>gem install json --platform=ruby Temporarily enhancing PATH to include DevKit for 2... Building native extensions. This could take a while... The system cannot find the path specified. ERROR: Error installing json: ERROR: Failed to build gem native extension. C:/Ruby200/bin/ruby.exe extconf.rb creating Makefile Gem files will remain installed in C:/Ruby200/lib/ruby/gems/2.0.0/gems/json-1.8.1 for inspection. Results logged to C:/Ruby200/lib/ruby/gems/2.0.0/gems/json-1.8.1/ext/json/ext/generator/gem_make.out C:/>pik 193 C:/>gem install json --platform=ruby Temporarily enhancing PATH to include DevKit... Building native extensions. This could take a while... The system cannot find the path specified. ERROR: Error installing json: ERROR: Failed to build gem native extension. C:/Ruby193/bin/ruby.exe extconf.rb creating Makefile Gem files will remain installed in C:/Ruby193/lib/ruby/gems/1.9.1/gems/json-1.8.1 for inspection. Results logged to C:/Ruby193/lib/ruby/gems/1.9.1/gems/json-1.8.1/ext/json/ext/generator/gem_make.out

Esto claramente nos dice dos cosas:

  1. Se está cargando algún otro archivo devkit.rb cuando estoy usando ruby ​​1.9, ya que el mensaje ''for 1.9'' no se está imprimiendo.
  2. Es poco probable que este sea el problema real, ya que el error es idéntico en ambos casos.

Voy a ver si puedo compilar manualmente usando los Makefiles generados.


Así que esta no es la mejor respuesta del mundo, pero parece que encontré una solución. Si configuro la bandera verbosa, todo funciona bien:

gem install json --platform=ruby --verbose

Hay un registro aquí: http://gist.github.com/dannysmith/8055495

Eso no tiene sentido, sería genial si alguien pudiera explicar por qué esto parece haber solucionado el error. Tal vez esto es un error en devkit?


Asegúrese de que la versión de ruby ​​que instaló (32 o 64 bits) coincida con la versión de DevKit. Ambos tienen que ser 32 o 64, que era el problema que estaba teniendo. Puede que no sea el problema exacto aquí, pero pensé que lo tiraría por ahí. Aquí hay una publicación que vale la pena revisar:

Rieles en Windows - problema de instalación


Cómo lo arreglé:

  1. Descargué el último instalador de ruby ​​desde https://rubyinstaller.org/downloads/
  2. Ejecute el instalador, siguiendo las indicaciones para instalar dependencias.
  3. Reinicié mi computadora
  4. Agregué el directorio ruby ​​/ bin a mi PATH.

He instalado gem json con las versiones 1.8.1, pero no pude resolver este problema para json 1.6.1 usando

gem install json --platform=ruby --verbose

Entonces, lo intenté desde aquí https://github.com/oneclick/rubyinstaller/issues/184

gem update --system 2.0.3

Y después de eso

gem install json -v 1.6.1 --platform=ruby --verbose

Resuelve el problema específico de json 1.6.1 para la máquina Win 7 (64 bits)


Instala la versión de 32 bits en Windows ...

ver windows 6.1.76011

64 bits dio un mensaje de error sobre makefile y encabezados. Intenté todas las demás sugerencias, incluidas las de Rubyinstaller sobre COMSPEC y el registro, agregando gcc a la ruta y otras. Algunas gemas se instalarían, pero git_fame y json no serían tan necesarias para compilar.

Edición: Parece que git_fame usa mimer_plus. mimer_plus asume herramientas gnu (herramientas unix). Parece que necesitas instalar mingw primero. Eso no estaba claramente indicado en la página de Rubyinstaller.


Intente ejecutar el símbolo del sistema en el modo de administración. Después de unas 7-10 horas me di cuenta de esto ...


Yo tuve el mismo problema. Usé PowerShell para revisar mi camino

ps> $ s = $ env: ruta

ps> $ s.split ("{;}")

seguro que mi ruby ​​mingw no estaba en el camino. Tenía el ruby ​​/ bin en la ruta, pero el mingw / bin estaba en una carpeta diferente. Entré en la ruta de mi entorno, lo agregué y mi instalación funcionó.