Como instalar ferramentas de desenvolvimento quando o Ruby é compilado a partir do código fonte

3

Eu tenho o Windows 8 e preciso instalar o Ruby 2.1.2 para um projeto. Eu segui estas instruções . Eu descompactei a origem em C:\Ruby2.1.2\src\ , executei nmake em C:\Ruby2.1.2\build\ e executei nmake install com a pasta de destino C:\Ruby2.1.2\bin\ . Quando instalei o Ruby 2.1.2, recebi vários erros assim:

configuring zlib
Failed to configure zlib. It will not be installed.

Isso aconteceu para dbm, fiddle, gdbm, openssl, pty, readline, syslog, tk, tk / tkutil e zlib. No entanto, os testes em nmake test passam todos.

Eu já tenho Ruby 2.0.0 e 1.9.3, mas preciso de 2.0.0 para outros projetos. Eu estou usando o pik 0.3.0.pre 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 executar gem install para qualquer coisa, eu 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 escavações, tentei navegar para C: \ Ruby2.1.2 \ src \ ruby-2.1.2 \ ext \ zlib e executando 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. Mas o somente fontes Encontrei sobre a instalação de ferramentas de desenvolvimento que me direcionaram para o RubyInstaller que ainda não possui o Ruby 2.1.2.

Eu também tentei instalar o zlib separadamente e rodando ruby extconf.rb --with-zlib-dir="C:\Program Files (x86)\GnuWin32" , mas isso me deu o segundo erro novamente.

Outra coisa que eu tentei foi executar gem install zlib -- --with-zlib-dir="C:\Program Files (x86)\GnuWin32" , mas isso me causou o primeiro erro novamente.

Como instalo ferramentas de desenvolvimento para que eu possa fazer o Rubygems funcionar?

    
por Eva 11.07.2014 / 02:39

2 respostas

1

Eva, você conseguiu resolver seu problema?

Eu estou fazendo exatamente a mesma coisa que você (usando o Windows 8.1), e finalmente consegui instalar o zlib.

1) Eu baixei zlib128-dll.zip do link e descompactei o conteúdo em um diretório (por exemplo, c: \ zlib).

2) Depois de seguir algumas dicas deste post ( link ), eu criei estas dirs fora do meu c : diretório \ ruby-build \ usr:

zlib
zlib\include
zlib\lib

3) Depois eu copiei alguns arquivos dos meus diretórios C: \ zlib para 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) Então, a partir de uma janela de comando de 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 voila, eu zlib foi finalmente instalado.

Deixe-me saber se você tem alguma dúvida sobre meus passos.

    
por 04.09.2014 / 17:24
0

O Ruby inclui várias bibliotecas, parte de sua biblioteca padrão (stdlib) que depende de bibliotecas externas, como Zlib, OpenSSL, FFI, apenas para mencionar algumas.

Para construir o Ruby, você precisa disponibilizar essas bibliotecas para o Ruby, para que ele possa compilá-las.

No RubyInstaller, resolvemos esse problema construindo as dependências como pacotes e as usando 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 são diferentes.

Se o uso do Visual Studio não for realmente um requisito, talvez você possa usar as 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 compiler (GCC) versão de 32bits 4.7.2 e usar a verificação de fonte local apontada em LOCAL

Tudo isso é coberto pelo LEIAME

do RubyInstaller

Se precisar de mais ajuda, entre em contato com o Grupo do Google do RubyInstaller     

por 28.08.2014 / 00:47