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 nmake
in C:\Ruby2.1.2\build\
und lief nmake install
mit 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 test
jedem 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 install
fü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.rb
Der 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?
Antworten:
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:
3) Dann habe ich einige Dateien aus den Verzeichnissen C: \ zlib in die Verzeichnisse C: \ ruby-build \ usr kopiert:
4) Dann navigierte ich in einem VS 2012 Native Tools-Befehlsfenster zu C: \ ruby-2.1.2 \ ext \ zlib und führte Folgendes aus:
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.
quelle
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:
Dies weist RubyInstaller-Rezepte an, die
mingw64
32-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
quelle