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

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

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 nmakee C:\Ruby2.1.2\build\executei nmake installcom 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 testpassam.

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 installqualquer 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.rbO 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 mingw64o 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

informação relacionada