So installieren Sie Entwicklungstools, wenn Ruby aus dem Quellcode kompiliert wird

3

Ich habe Windows 8 und muss Ruby 2.1.2 für ein Projekt installieren. Ich habe diese Anweisungen befolgt . Ich entpackte die Quelle in C:\Ruby2.1.2\src\, lief nmakein C:\Ruby2.1.2\build\und lief nmake installmit dem Zielordner C:\Ruby2.1.2\bin\. Bei der Installation von Ruby 2.1.2 sind folgende Fehler aufgetreten:

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

Dies geschah für dbm, fiddle, gdbm, openssl, pty, readline, syslog, tk, tk / tkutil und zlib. Die Tests sind jedoch in nmake testjedem Fall erfolgreich.

Ich habe bereits Ruby 2.0.0 und 1.9.3, aber ich brauche 2.0.0 für andere Projekte. Ich verwende pik 0.3.0.pre , um die Abhängigkeiten zu verwalten, und es scheint für 2.0.0 und 1.9.3 zu funktionieren.

Wenn ich jedoch gem installfür irgendetwas auf Ruby 2.1.2 umsteige , erhalte ich:

ERROR:  Loading command: install (LoadError)
        cannot load such file -- zlib
ERROR:  While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass

Nach einigem Graben, versuchte ich zu C Navigation: \ Ruby2.1.2 \ src \ ruby-2.1.2 \ ext \ zlib und läuft ruby extconf.rbDer Fehler , den ich dafür bekam , war:

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>'

Es sieht so aus, als müsste ich Entwicklungstools installieren. Aber die einzige Quellen fand ich über die Installation von Entwicklungs - Tools hat mich zu RubyInstaller , die nicht Ruby - 2.1.2 noch hat.

Ich habe auch versucht, zlib separat zu installieren und auszuführen ruby extconf.rb --with-zlib-dir="C:\Program Files (x86)\GnuWin32", aber das gab mir den zweiten Fehler erneut.

Eine andere Sache, die ich versuchte, lief gem install zlib -- --with-zlib-dir="C:\Program Files (x86)\GnuWin32", aber das gab mir den ersten Fehler wieder.

Wie installiere ich Entwicklungstools, damit Rubygems funktionieren?

Eva
quelle
Ich habe das gleiche Problem :( Würde gerne die Lösung finden. Ein Hinweis, den ich bekam, waren die Rechenaufgaben vom Ruby-Installer, aber alles, was es zu tun scheint, ist, die zlib1.dll in den src-Ordner von Ruby zu legen. Das habe ich getan Ich habe jedoch noch keine Zeit, dies gründlich zu testen.
Automatico

Antworten:

1

Eva, Konntest du dein Problem lösen?

Ich mache genau dasselbe wie Sie (unter Windows 8.1) und habe endlich zlib installiert.

1) Ich habe zlib128-dll.zip von http://zlib.net heruntergeladen und den Inhalt in ein Verzeichnis entpackt (z. B. c: \ zlib).

2) Dann folge ich einigen Hinweisen aus diesem Beitrag ( https://www.ruby-forum.com/topic/4421852 ) und erstelle diese Verzeichnisse aus meinem Verzeichnis c: \ ruby-build \ usr:

zlib
zlib\include
zlib\lib

3) Dann habe ich einige Dateien aus den Verzeichnissen C: \ zlib in die Verzeichnisse C: \ ruby-build \ usr kopiert:

*.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) Dann navigierte ich in einem VS 2012 Native Tools-Befehlsfenster zu C: \ ruby-2.1.2 \ ext \ zlib und führte Folgendes aus:

\ruby-build\usr\bin\ruby extconf.rb --with-zlib-dir=c:/ruby-build/usr/zlib

5) Dann nmake, gefolgt von nmake install, und voila, ich zlib wurde schließlich installiert.

Lassen Sie mich wissen, wenn Sie Fragen zu meinen Schritten haben.

Robert Wojack
quelle
0

Ruby enthält mehrere Bibliotheken, die Teil ihrer Standardbibliothek (stdlib) sind und von externen Bibliotheken abhängen, wie Zlib, OpenSSL, FFI, um nur einige zu nennen.

Um Ruby zu erstellen, müssen Sie diese Bibliotheken für Ruby verfügbar machen, damit sie mit Ruby kompiliert werden können.

In RubyInstaller haben wir dieses Problem behoben, indem wir die Abhängigkeiten als Pakete erstellt und sie während der Ruby-Kompilierung verwendet haben.

In Ihrem Fall wird angezeigt, dass Sie Visual Studio verwenden. Dies bedeutet, dass Sie die von RubyInstaller bereitgestellten Binärpakete nicht verwenden können, da sich die Laufzeitabhängigkeiten von diesen unterscheiden.

Wenn die Verwendung von Visual Studio wirklich nicht erforderlich ist, können Sie möglicherweise RubyInstaller-Rezepte verwenden, um ein lokales Paket von Ruby 2.1.x zu generieren:

cd rubyinstaller
rake ruby21 DKVER=mingw64-32-4.7.2 LOCAL=C:\path\to\ruby\source

Dies weist RubyInstaller-Rezepte an, die mingw6432-Bit-Version des Compilers (GCC) 4.7.2 zu verwenden und die in gezeigte lokale Quellkasse zu verwendenLOCAL

All dies wird in der README von RubyInstaller behandelt

Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an die Google-Gruppe von RubyInstaller

Luis Lavena
quelle