
Tenho o Windows 8 e preciso instalar o Ruby 2.1.2 para um projeto. eu seguiestas instruções. Descompactei a fonte C:\Ruby2.1.2\src\
, executei nmake
e C:\Ruby2.1.2\build\
executei nmake install
com a pasta de destino C:\Ruby2.1.2\bin\
. Quando instalei o Ruby 2.1.2, recebi vários erros como este:
configuring zlib
Failed to configure zlib. It will not be installed.
Isso aconteceu com dbm, fiddle, gdbm, openssl, pty, readline, syslog, tk, tk/tkutil e zlib. No entanto, todos os testes nmake test
passam.
Já tenho Ruby 2.0.0 e 1.9.3, mas preciso do 2.0.0 para outros projetos. estou usandopik 0.3.0.prépara gerenciar as dependências e parece estar funcionando para 2.0.0 e 1.9.3.
No entanto, se eu mudar para Ruby 2.1.2, execute gem install
qualquer coisa, recebo:
ERROR: Loading command: install (LoadError)
cannot load such file -- zlib
ERROR: While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass
Depois de algumas pesquisas, tentei navegar para C:\Ruby2.1.2\src\ruby-2.1.2\ext\zlib e executar. ruby extconf.rb
O erro que recebi foi:
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 preciso instalar ferramentas de desenvolvimento. Maso apenas fontes eu encontreisobre a instalação de ferramentas de desenvolvimento me direcionou para o RubyInstaller que ainda não possui Ruby 2.1.2.
Também tentei instalar o zlib separadamente e executá-lo ruby extconf.rb --with-zlib-dir="C:\Program Files (x86)\GnuWin32"
, mas isso me deu o segundo erro novamente.
Outra coisa que tentei foi rodar gem install zlib -- --with-zlib-dir="C:\Program Files (x86)\GnuWin32"
, mas isso me deu o primeiro erro novamente.
Como instalo ferramentas de desenvolvimento para que rubygems funcionem?
Responder1
Eva, você conseguiu resolver seu problema?
Estou fazendo exatamente a mesma coisa que você (usando o Windows 8.1) e finalmente instalei o zlib.
1) Baixei zlib128-dll.zip dehttp://zlib.nete descompactou o conteúdo em um diretório (por exemplo, c:\zlib).
2) Então seguindo algumas dicas deste post (https://www.ruby-forum.com/topic/4421852), criei esses diretórios no meu diretório c:\ruby-build\usr:
zlib
zlib\include
zlib\lib
3) Então copiei alguns arquivos dos meus diretórios C:\zlib para os meus diretórios 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) Em seguida, em uma janela de comando das ferramentas nativas do VS 2012, naveguei para C:\ruby-2.1.2\ext\zlib e executei:
\ruby-build\usr\bin\ruby extconf.rb --with-zlib-dir=c:/ruby-build/usr/zlib
5) Então nmake, seguido por nmake install, e pronto, o zlib foi finalmente instalado.
Deixe-me saber se você tiver alguma dúvida sobre meus passos.
Responder2
Ruby inclui diversas bibliotecas, parte de seubiblioteca padrão(stdlib) que depende de bibliotecas externas, como Zlib, OpenSSL, FFI, só para citar algumas.
Para construir Ruby, você precisa disponibilizar essas bibliotecas para Ruby, para que ele possa compilar com elas.
No RubyInstaller, resolvemos esse problema construindo as dependências como pacotes e usando-as durante a compilação do Ruby.
No seu caso, parece que você está usando o Visual Studio, o que significa que você não pode usar os pacotes binários fornecidos pelo RubyInstaller, pois as dependências de tempo de execução deles são diferentes.
Se o uso do Visual Studio não for realmente um requisito, talvez você possa usar receitas do RubyInstaller para gerar um pacote local do Ruby 2.1.x:
cd rubyinstaller
rake ruby21 DKVER=mingw64-32-4.7.2 LOCAL=C:\path\to\ruby\source
Isso diz às receitas do RubyInstaller para usar mingw64
o compilador (GCC) de 32 bits versão 4.7.2 e usar o checkout de origem local apontado emLOCAL
Tudo isso é abordado no RubyInstallerLeia-me
Se precisar de mais assistência, entre em contato com o RubyInstallerGrupo do Google