
Tengo Windows 8 y necesito instalar Ruby 2.1.2 para un proyecto. Seguíestas instrucciones. Descomprimí el archivo fuente C:\Ruby2.1.2\src\
, ejecuté nmake
y C:\Ruby2.1.2\build\
ejecuté nmake install
con la carpeta de destino C:\Ruby2.1.2\bin\
. Cuando instalé Ruby 2.1.2, recibí varios errores como este:
configuring zlib
Failed to configure zlib. It will not be installed.
Esto sucedió con dbm, fiddle, gdbm, openssl, pty, readline, syslog, tk, tk/tkutil y zlib. Sin embargo, las pruebas en nmake test
todos pasan.
Ya tengo Ruby 2.0.0 y 1.9.3, pero necesito 2.0.0 para otros proyectos. estoy usandopic 0.3.0.prepara administrar las dependencias, y parece estar funcionando para 2.0.0 y 1.9.3.
Sin embargo, si cambio a Ruby 2.1.2 y ejecuto gem install
cualquier cosa, obtengo:
ERROR: Loading command: install (LoadError)
cannot load such file -- zlib
ERROR: While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass
Después de investigar un poco, intenté navegar a C:\Ruby2.1.2\src\ruby-2.1.2\ext\zlib y ejecutar. ruby extconf.rb
El error que obtuve fue:
checking for deflateReset() in z.lib... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby2.1.2/bin/usr/bin/ruby
--with-zlib-dir
--with-zlib-include
--without-zlib-include=${zlib-dir}/include
--with-zlib-lib
--without-zlib-lib=${zlib-dir}/lib
--with-zlib
--without-zlib
C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:456:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:541:in `try_link0'
from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:556:in `try_link'
from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:742:in `try_func'
from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:973:in `block in have_library'
from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:918:in `block in checking_for'
from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:351:in `block (2 levels) in postpone'
from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:321:in `open'
from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:351:in `block in postpone'
from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:321:in `open'
from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:347:in `postpone'
from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:917:in `checking_for'
from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:968:in `have_library'
from extconf.rb:13:in `block in <main>'
from extconf.rb:13:in `each'
from extconf.rb:13:in `find'
from extconf.rb:13:in `<main>'
Parece que necesito instalar herramientas de desarrollo. Peroel solo fuentes encontrésobre la instalación de herramientas de desarrollo me dirigió a RubyInstaller, que aún no tiene Ruby 2.1.2.
También intenté instalar zlib por separado y ejecutarlo ruby extconf.rb --with-zlib-dir="C:\Program Files (x86)\GnuWin32"
, pero eso me dio nuevamente el segundo error.
Otra cosa que intenté fue ejecutar gem install zlib -- --with-zlib-dir="C:\Program Files (x86)\GnuWin32"
, pero eso me dio nuevamente el primer error.
¿Cómo instalo herramientas de desarrollo para que Rubygems funcione?
Respuesta1
Eva, ¿pudiste solucionar tu problema?
Estoy haciendo exactamente lo mismo que tú (usando Windows 8.1) y finalmente instalé zlib.
1) Descargué zlib128-dll.zip dehttp://zlib.nety descomprimió el contenido en un directorio (por ejemplo, c:\zlib).
2) Luego, siguiendo algunos consejos de esta publicación (https://www.ruby-forum.com/topic/4421852), creé estos directorios a partir de mi directorio c:\ruby-build\usr:
zlib
zlib\include
zlib\lib
3) Luego copié algunos archivos de mis directorios C:\zlib a mis directorios c:\ruby-build\usr:
*.h files (both) from C:\zlib\include to c:\ruby-build\usr\zlib\include
zdll.lib from C:\zlib\lib to c:\ruby-build\usr\zlib\lib.
zlib1.dll *AS* zlib.dll from C:\zlib to both c:\ruby-build\usr\zlib\lib and c:\ruby-build\usr\bin
(not sure which one or both are necessary).
4) Luego, desde una ventana de comandos de herramientas nativas de VS 2012, navegué a C:\ruby-2.1.2\ext\zlib y ejecuté:
\ruby-build\usr\bin\ruby extconf.rb --with-zlib-dir=c:/ruby-build/usr/zlib
5) Luego nmake, seguido de nmake install, y listo, finalmente se instaló zlib.
Déjame saber si tienes alguna pregunta sobre mis pasos.
Respuesta2
Ruby incluye varias bibliotecas, parte de subiblioteca estándar(stdlib) que depende de bibliotecas externas, como Zlib, OpenSSL, FFI, solo por mencionar algunas.
Para compilar Ruby, debe poner esas bibliotecas a disposición de Ruby, para que pueda compilar con ellas.
En RubyInstaller, resolvimos ese problema creando las dependencias como paquetes y usándolas durante la compilación de Ruby.
En su caso, parece que está usando Visual Studio, lo que significa que no puede usar los paquetes binarios proporcionados por RubyInstaller ya que las dependencias de tiempo de ejecución de ellos difieren.
Si el uso de Visual Studio realmente no es un requisito, entonces quizás pueda usar las recetas de RubyInstaller para generar un paquete local de Ruby 2.1.x:
cd rubyinstaller
rake ruby21 DKVER=mingw64-32-4.7.2 LOCAL=C:\path\to\ruby\source
Esto le indica a las recetas de RubyInstaller que usen mingw64
el compilador (GCC) de 32 bits versión 4.7.2 y usen el código fuente local indicado enLOCAL
Todo esto está cubierto en RubyInstaller.LÉAME
Si necesita más ayuda, comuníquese con RubyInstaller.grupo de google