Wie aktualisiere ich Ruby Gems hinter einem Proxy (ISA-NTLM)?
Frage
Die Firewall, hinter der ich stehe, führt den Microsoft ISA-Server im reinen NTLM-Modus aus.Hat jemand Erfolg damit, seine Ruby-Gems über Ruby SSPI-Gem oder eine andere Methode zu installieren/aktualisieren?
...oder bin ich nur faul?
Notiz:rubysspi-1.2.4 funktioniert nicht.
Dies funktioniert auch für „igem“, Teil des IronRuby-Projekts
Lösung
Ich konnte meine nicht über den Befehlszeilenschalter zum Laufen bringen, aber ich habe es geschafft, indem ich einfach meine eingestellt habe HTTP_PROXY
Umgebungsvariable.(Beachten Sie, dass die Groß-/Kleinschreibung wichtig zu sein scheint).Ich habe eine Batch-Datei, die eine Zeile wie diese enthält:
SET HTTP_PROXY=http://%USER%:%PASSWORD%@%SERVER%:%PORT%
Ich habe natürlich die vier referenzierten Variablen festgelegt, bevor ich zu dieser Zeile komme.Wenn mein Benutzername beispielsweise „wolfbyte“ ist, mein Passwort „geheim“ ist und mein Proxy „pigsy“ heißt und auf Port 8080 läuft:
SET HTTP_PROXY=http://wolfbyte:secret@pigsy:8080
Möglicherweise möchten Sie bei der Handhabung vorsichtig sein, da Ihr Kennwort in der Sitzung des Computers im Klartext gespeichert wird. Ich denke jedoch nicht, dass dies ein allzu großes Problem darstellen sollte.
Andere Tipps
Für das Windows-Betriebssystem habe ich Fiddler verwendet, um das Problem zu umgehen.
- Installieren/führen Sie Fiddler von www.fiddler2.com aus
Führen Sie gem aus:
$ gem install --http-proxy http://localhost:8888 $gem_name
Das hat total funktioniert:
gem install --http-proxy http://COMPANY.PROXY.ADDRESS $gem_name
Ich habe cntlm verwendet (http://cntlm.sourceforge.net/) auf Arbeit.Die Konfiguration ist ntlmaps sehr ähnlich.
- gem install --http-proxy http://localhost:3128 _name_of_gem_
Funktioniert großartig und ermöglicht mir auch, meine Ubuntu-Box mit dem ISA-Proxy zu verbinden.
Kasse http://cntlm.wiki.sourceforge.net/ für mehr Informationen
Ich habe einige dieser Lösungen ausprobiert, aber keine davon hat funktioniert.Endlich habe ich eine Lösung gefunden, die für mich funktioniert:
gem install -p http://proxy_ip:proxy_port rails
Verwendung der -p
Parameter zum Übergeben des Proxys.Ich verwende Gem Version 1.9.1.
Das hat mein Problem perfekt gelöst:
gem install -p http://proxy_ip:proxy_port compass
Möglicherweise müssen Sie Ihren Benutzernamen und Ihr Passwort hinzufügen:
gem install -p http://[username]:[password]@proxy_ip:proxy_port compass
Erstellen Sie eine .gemrc-Datei (entweder in /etc/gemrc oder ~/.gemrc oder zum Beispiel mit chef gem in /opt/chef/embedded/etc/gemrc), die Folgendes enthält:
http_proxy: http://proxy:3128
Dann kannst du gem install
wie gewöhnlich.
Wenn Sie Probleme bei der Authentifizierung über Ihren Proxy haben, stellen Sie sicher, dass Sie die Umgebungsvariablen genau im folgenden Format festlegen:
set HTTP_PROXY=some.proxy.com
set HTTP_PROXY_USER=user
set HTTP_PROXY_PASS=password
Der user:password@
Die Syntax scheint nicht zu funktionieren und es gibt auch einige schlecht benannte Umgebungsvariablen auf Stack Overflow und verschiedenen Forenbeiträgen.
Beachten Sie auch, dass es eine Weile dauern kann, bis der Download Ihrer Edelsteine beginnt.Zuerst dachte ich, es würde nicht funktionieren, aber mit etwas Geduld begannen sie wie erwartet mit dem Download.
Ich habe alle oben genannten Lösungen ausprobiert, aber keine davon hat funktioniert.Wenn Sie Linux/MacOS verwenden, empfehle ich dringend, Tsocks über einen SSH-Tunnel zu verwenden.Damit dieses Setup funktioniert, benötigen Sie einen Computer, auf dem Sie sich per SSH anmelden können, und außerdem ein installiertes Programm namens tsocks.
Die Idee hier ist, einen dynamischen Tunnel über SSH (einen SOCKS5-Proxy) zu erstellen.Anschließend konfigurieren wir Tsocks so, dass sie diesen Tunnel verwenden und unsere Anwendungen starten, in diesem Fall:
tsocks gem install ...
oder um Rails 3.0 zu berücksichtigen:
tsocks bundle install
Eine ausführlichere Anleitung finden Sie unter:
http://blog.byscripts.info/2011/04/bypass-a-proxy-with-ssh-tunnel-and-tsocks-under-ubuntu/
Obwohl das Verfahren für Ubuntu geschrieben wurde, sollte es für alle Unix-basierten Maschinen anwendbar sein.Eine Alternative zu tsocks für Windows ist FreeCap (http://www.freecap.ru/eng/).Ein funktionsfähiger SSH-Client unter Windows heißt Putty.
Zu diesem Thema gibt es zahlreiche Beiträge. Um anderen zu helfen, stundenlanges Ausprobieren verschiedener Lösungen zu ersparen, ist hier das Endergebnis meiner stundenlangen Tüftelei.
Die drei Lösungen rund um das Internet sind derzeit:RUBYSSPI APSERVER CNTLM
rubysspi funktioniert nur auf einem Windows-Rechner, AFAIK, da es auf der Win32Api-Bibliothek basiert.Wenn Sie also auf einem Windows-Rechner versuchen, über einen Proxy zu laufen, ist dies die Lösung für Sie.Wenn Sie eine Linux-Distribution verwenden, haben Sie Pech.
Apserver scheint ein totes Projekt zu sein.Der in den Beiträgen, die ich gesehen habe, aufgeführte Link führte zur 404-Seite auf SourceForge.Ich suche auf SourceForge nach „apserver“ und erhalte nichts.
Der Sourceforge-Link für cntlm, zu dem ich Weiterleitungen gesehen habe http://cntlm.awk.cz/, aber das läuft ab.Eine Suche auf SourceForge ergibt diesen Link, der funktioniert: http://sourceforge.net/projects/cntlm/
Nach dem Herunterladen und Konfigurieren von cntlm ist es mir gelungen, ein Gem über den Proxy zu installieren, daher scheint dies die beste Lösung für Linux-Distributionen zu sein.
Eine Problemumgehung ist die Installation http://apserver.sourceforge.net Konfigurieren Sie es auf Ihrem lokalen Computer und führen Sie Gems über diesen Proxy aus.
- Installieren:Laden Sie einfach Apserver 097 herunter (und nicht das experimentelle 098!) und entpacken Sie es.
- Konfigurieren:Bearbeiten Sie die Datei server.cfg und geben Sie die Werte für Ihren MS-Proxy ein
PARENT_PROXY
UndPARENT_PROXY_PORT
.Geben Sie die Werte für DOMAIN und USER ein.Lassen Sie PASSWORT leer (nichts nach dem Doppelpunkt) – Sie werden beim Starten dazu aufgefordert. - Führen Sie apserver aus:
cd aps097; python main.py
- Edelsteine ausführen:
gem install—http-proxy http://localhost:5865/ library
Ich arbeite hinter einem Proxy und habe gerade SASS installiert, indem ich es direkt heruntergeladen habe http://rubygems.org.
Ich bin dann gerannt sudo gem install [path/to/downloaded/gem/file]
.Ich kann nicht sagen, dass dies bei allen Edelsteinen funktioniert, aber es könnte einigen Leuten helfen.
Das hat bei mir in einer Windows-Box funktioniert:
set HTTP_PROXY=http://server:port
set HTTP_PROXY_USER=username
set HTTP_PROXY_PASS=userparssword
set HTTPS_PROXY=http://server:port
set HTTPS_PROXY_USER=username
set HTTPS_PROXY_PASS=userpassword
Ich habe eine Batchdatei mit diesen Zeilen, die ich verwende, um bei Bedarf Umgebungswerte festzulegen.
Der Trick war in meinem Fall HTTPS_PROXY
Sätze.Ohne sie bekam ich immer einen 407-Proxy-Authentifizierungsfehler.
Wenn Sie auf einem *nix-System arbeiten, verwenden Sie Folgendes:
export http_proxy=http://${proxy.host}:${port}
export https_proxy=http://${proxy.host}:${port}
und dann versuchen:
gem install ${gem_name}
rubysspi-1.3.1 funktionierte bei mir unter Windows 7 mit den Anweisungen auf dieser Seite:
Wenn Sie den SOCKS5-Proxy verwenden möchten, können Sie rubygems-socksproxy ausprobieren https://github.com/gussan/rubygems-socksproxy.
Bei mir funktioniert es unter OSX 10.9.3.
Wenn Sie sich hinter einem Proxy befinden, können Sie dorthin navigieren Ruby-Downloads, Klicken Sie auf „Herunterladen“, um das angegebene Update (oder Gem) an den gewünschten Speicherort herunterzuladen.
Navigieren Sie anschließend über die Ruby-Befehlszeile zum heruntergeladenen Speicherort, indem Sie Folgendes verwenden: pushd [directory]
z.B : pushd D:\Setups
Führen Sie dann den folgenden Befehl aus: gem install [update name] --local
z.B: gem install rubygems-update --local
.
Getestet unter Windows 7 mit Ruby-Update Version 2.4.1.
Verwenden Sie zur Überprüfung den folgenden Befehl: ruby -v
Anstatt Batchdateien zu bearbeiten (was Sie möglicherweise für andere Ruby-Gems tun müssen, z. B.Bundler), ist es wahrscheinlich besser, dies einmal und richtig zu machen.
Unter Windows musste ich hinter meinem Unternehmens-Proxy lediglich das hinzufügen HTTP_PROXY
Umgebungsvariable für mein System.
- Start -> Rechtsklick auf Computer -> Eigenschaften
- Wählen Sie „Erweiterte Systemeinstellungen“
- Klicken Sie auf Erweitert -> Umgebungsvariablen
- Erstellen Sie eine neue Systemvariable mit dem Namen „
HTTP_PROXY
", und legen Sie den Wert auf Ihren Proxyserver fest - Starten Sie neu oder melden Sie sich ab und wieder an
Abhängig von Ihren Authentifizierungsanforderungen wird die HTTP_PROXY
Der Wert kann so einfach sein wie:
http://proxy-server-name
Oder komplexer, wie andere darauf hingewiesen haben
http://username:password@proxy-server-name:port-number