Wie aktualisiere ich Ruby Gems hinter einem Proxy (ISA-NTLM)

Die Firewall, hinter der ich mich befinde, führt Microsoft ISA Server im Nur-NTLM-Modus aus. Hat jemand Erfolg damit, Ruby-Edelsteine ​​über Ruby SSPI-Juwel oder andere Methoden zu installieren / zu aktualisieren?

… oder bin ich nur faul?

Hinweis: rubysspi-1.2.4 funktioniert nicht.

Dies funktioniert auch für “ichem”, Teil des IronRuby-Projekts

Ich konnte meine Arbeit nicht über den Befehlszeilenschalter HTTP_PROXY , aber ich konnte dies nur durch Festlegen meiner HTTP_PROXY Umgebungsvariablen tun. (Beachten Sie, dass der Fall wichtig zu sein scheint). Ich habe eine Batch-Datei, die eine Zeile wie folgt enthält:

 SET HTTP_PROXY=http://%USER%:%PASSWORD%@%SERVER%:%PORT% 

Ich setze die vier referenzierten Variablen, bevor ich offensichtlich zu dieser Zeile komme. Als Beispiel, wenn mein Benutzername “wolfbyte” ist, ist mein Passwort “geheim” und mein Proxy heißt “pigsy” und arbeitet an Port 8080:

 SET HTTP_PROXY=http://wolfbyte:secret@pigsy:8080 

Sie möchten vielleicht vorsichtig sein, wie Sie das handhaben, weil es Ihr Passwort im Klartext in der Sitzung des Rechners speichert, aber ich denke nicht, dass es ein zu großes Problem sein sollte.

Für das Windows-Betriebssystem habe ich Fiddler verwendet, um das Problem zu umgehen.

  1. Installieren / Ausführen von Fiddler von http://www.fiddler2.com
  2. Run Juwel:

     $ 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 ( http://cntlm.sourceforge.net/ ) bei der Arbeit verwendet. Die Konfiguration ist sehr ähnlich zu ntlmaps.

  • Gem installieren –http-proxy http: // localhost: 3128 _name_of_gem_

functioniert gut und erlaubt mir auch, meine Ubuntu-Box mit dem ISA-Proxy zu verbinden.

Weitere Informationen finden Sie unter http://cntlm.wiki.sourceforge.net/

Ich habe einige dieser Lösungen ausprobiert und keiner von ihnen hat funktioniert. Ich habe endlich eine Lösung gefunden, die für mich funktioniert:

 gem install -p http://proxy_ip:proxy_port rails 

Verwenden Sie den Parameter -p , um den Proxy zu übergeben. Ich benutze Gem Version 1.9.1.

Das hat mein Problem perfekt getriggers:

 gem install -p http://proxy_ip:proxy_port compass 

Sie müssen möglicherweise 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 dem Koch-Juwel in / opt / chef / embedded / etc / gemrc), die Folgendes enthält:

 http_proxy: http://proxy:3128 

Dann können Sie wie gewohnt gem install .

Wenn Sie Probleme haben, über Ihren Proxy authentifiziert zu werden, stellen Sie sicher, dass Sie die Umgebungsvariablen genau wie folgt einstellen:

 set HTTP_PROXY=some.proxy.com set HTTP_PROXY_USER=user set HTTP_PROXY_PASS=password 

Der user:password@ syntax scheint nicht zu funktionieren und es gibt auch einige schlecht benannte Umgebungsvariablen, die auf Stack Overflow und verschiedenen Forumsbeiträgen verteilt sind.

Beachten Sie auch, dass es einige Zeit dauern kann, bis Ihre Edelsteine ​​mit dem Download beginnen. Zuerst dachte ich, dass es nicht funktionierte, aber mit ein wenig Geduld begannen sie wie erwartet herunterzuladen.

Ich habe alle oben genannten Lösungen ausprobiert, aber keiner von ihnen hat funktioniert. Wenn Sie auf Linux / MacOS sind, empfehle ich sehr, tsocks über einen SSH-Tunnel zu verwenden. Was Sie brauchen, um diese Einrichtung zum Laufen zu bringen, ist eine Maschine, auf der Sie sich über ssh anmelden können, und zusätzlich ein Programm namens tsocks installiert.

Die Idee hier ist, einen dynamischen Tunnel über SSH (ein socks5-Proxy) zu erstellen. Wir konfigurieren dann Tsocks, um diesen Tunnel zu verwenden und unsere Anwendungen zu starten, in diesem Fall:

 tsocks gem install ... 

oder um Rails 3.0 zu berücksichtigen:

 tsocks bundle install 

Eine detailliertere Anleitung finden Sie unter:

http://blog.byscripts.info/2011/04/bypass-a-proxy-with-ssh-tunnel-and-tsocks-under-ubuntu/

Obwohl es für Ubuntu geschrieben wurde, sollte das Verfahren für alle Unix-basierten Maschinen gelten. Eine Alternative zu tsocks für Windows ist FreeCap ( http://www.freecap.ru/eng/ ). Ein praktikabler SSH-Client unter Windows heißt Putty.

Es gibt viele Beiträge zu diesem Thema, und um anderen zu helfen, stundenlang verschiedene Lösungen auszuprobieren, hier ist das Endergebnis meiner Bastelstunden.

Die drei Lösungen im Internet sind: rubysspi apserver cntlm

rubysspi funktioniert nur von einer Windows-Maschine, AFAIK, da es auf der Win32Api-Bibliothek beruht. Wenn Sie also in einer Windows-Box versuchen, einen Proxy zu durchlaufen, ist dies die Lösung für Sie. Wenn Sie auf einer Linux-Distribution sind, haben Sie kein Glück.

Der Server scheint ein totes Projekt zu sein. Der Link in den Posts, die ich gesehen habe, führt zur 404-Seite von sourceforge. Ich suche nach “apserver” auf sourceforge gibt nichts zurück.

Der Sourceforge-Link für cntlm, den ich gesehen habe, verweist auf http://cntlm.awk.cz/ , aber das läuft ab. Eine Suche auf Sourceforge zeigt diesen Link, der funktioniert: http://sourceforge.net/projects/cntlm/

Nach dem Herunterladen und Konfigurieren von cntlm habe ich es geschafft, ein Juwel über den Proxy zu installieren, also scheint dies die beste Lösung für Linux-Distributionen zu sein.

Eine Problemumgehung besteht darin, http://apserver.sourceforge.net auf Ihrem lokalen Computer zu installieren, zu konfigurieren und Edelsteine ​​über diesen Proxy auszuführen.

  • Installation: Einfach den Apserver 097 (und nicht den experimentellen 098!) Herunterladen und entpacken.
  • Konfigurieren: Bearbeiten Sie die Datei server.cfg und legen Sie die Werte für Ihren MS-Proxy in PARENT_PROXY und PARENT_PROXY_PORT . Geben Sie die Werte für DOMAIN und USER ein. Lassen Sie PASSWORD leer (nichts nach dem Doppelpunkt) – Sie werden beim Start gefragt.
  • Starten Sie den Server: cd aps097; python main.py cd aps097; python main.py
  • Führen Sie Gems aus: gem install—http-proxy http://localhost:5865/ library

Ich arbeite hinter einem Proxy und habe gerade SASS installiert, indem ich direkt von http://rubygems.org heruntergeladen habe.

Ich habe dann sudo gem install [path/to/downloaded/gem/file] . Ich kann nicht sagen, dass dies für alle Edelsteine ​​funktionieren wird, aber es kann 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 Stapeldatei mit diesen Zeilen, mit denen ich Umgebungswerte festlegen kann, wenn ich sie brauche.

Der Trick war in meinem Fall HTTPS_PROXY Sets. Ohne sie bekam ich immer einen 407 Proxy-Authentifizierungserrors.

rubysspi-1.3.1 funktionierte für mich unter Windows 7 mit den statementen auf dieser Seite:

http://www.stuartellis.eu/articles/installing-ruby/

Wenn Sie ein * nix-System verwenden, verwenden Sie Folgendes:

 export http_proxy=http://${proxy.host}:${port} export https_proxy=http://${proxy.host}:${port} 

und dann versuche:

 gem install ${gem_name} 

Wenn Sie SOCKS5-Proxy verwenden möchten, können Sie versuchen, rubygems-socksproxy https://github.com/gussan/rubygems-socksproxy .

Es funktioniert für mich auf OSX 10.9.3.

Wenn Sie hinter einem Proxy zu Ruby-Downloads navigieren können , klicken Sie auf Download, wodurch das angegebene Update (oder Gem) an einen gewünschten Ort heruntergeladen wird.

Als nächstes navigieren Sie über die Ruby-Befehlszeile zum heruntergeladenen Speicherort: pushd [directory]

zB: pushd D:\Setups

Führen Sie dann den folgenden Befehl aus: gem install [update name] --local

zB: gem install rubygems-update --local .

Getestet unter Windows 7 mit Ruby Update Version 2.4.1.

Um zu überprüfen, verwenden Sie folgenden Befehl: ruby -v

Anstatt Batch-Dateien zu bearbeiten (was Sie möglicherweise für andere Ruby-Edelsteine ​​tun müssen, zB Bundler), ist es wahrscheinlich besser, dies einmal zu tun und es richtig zu machen.

Unter Windows musste ich HTTP_PROXY hinter meinem Unternehmens-Proxy die Umgebungsvariable HTTP_PROXY zu meinem System hinzufügen.

  1. Start -> Rechtsklick auf Computer -> Eigenschaften
  2. Wählen Sie “Erweiterte Systemeinstellungen”
  3. Klicken Sie auf Erweitert -> Umgebungsvariablen
  4. Erstellen Sie eine neue HTTP_PROXY Namen ” HTTP_PROXY ” und legen Sie den Wert für Ihren Proxyserver fest
  5. Neustarten oder abmelden und wieder einspielen

Abhängig von Ihren Authentifizierungsanforderungen kann der HTTP_PROXY Wert so einfach sein wie:

 http://proxy-server-name 

Oder komplexer, wie andere darauf hingewiesen haben

 http://username:password@proxy-server-name:port-number