プロキシ (ISA-NTLM) の背後から Ruby Gem を更新するにはどうすればよいですか?
質問
私が使用しているファイアウォールは、Microsoft ISA サーバーを NTLM 専用モードで実行しています。ハッシュ Ruby SSPI gem またはその他の方法で Ruby gem のインストール/更新に成功した人はいますか?
...それとも私が怠けているだけですか?
注記:Rubysspi-1.2.4は動作しません。
これは、IronRuby プロジェクトの一部である「igem」でも機能します。
解決
コマンドラインスイッチからは動作させることができませんでしたが、設定するだけで動作させることができました。 HTTP_PROXY
環境変数。(大文字と小文字が重要であることに注意してください)。次のような行を含むバッチファイルがあります。
SET HTTP_PROXY=http://%USER%:%PASSWORD%@%SERVER%:%PORT%
この行に到達する前に、参照される 4 つの変数を設定しています。たとえば、ユーザー名が「wolfbyte」、パスワードが「secret」、プロキシが「pigsy」という名前でポート 8080 で動作する場合、次のようになります。
SET HTTP_PROXY=http://wolfbyte:secret@pigsy:8080
パスワードはマシンのセッションにプレーンテキストで保存されるため、その管理には注意が必要かもしれませんが、それほど大きな問題にはならないと思います。
他のヒント
Windows OS の場合、Fiddler を使用して問題を回避しました。
- www.fiddler2.com から Fiddler をインストール/実行します
gem を実行します。
$ gem install --http-proxy http://localhost:8888 $gem_name
これは完全に機能しました:
gem install --http-proxy http://COMPANY.PROXY.ADDRESS $gem_name
私は cntlm を使用しています (http://cntlm.sourceforge.net/) 仕事で。設定はntlmapsと非常によく似ています。
- gem install --http-proxy http://ローカルホスト:3128 _宝石の名前_
うまく機能し、Ubuntu ボックスを ISA プロキシに接続することもできます。
チェックアウト http://cntlm.wiki.sourceforge.net/ 詳細については
これらの解決策をいくつか試してみましたが、どれもうまくいきませんでした。ついに私にとって効果的な解決策を見つけました。
gem install -p http://proxy_ip:proxy_port rails
を使用して -p
プロキシを渡すパラメータ。Gem バージョン 1.9.1 を使用しています。
これで私の問題は完全に解決されました。
gem install -p http://proxy_ip:proxy_port compass
ユーザー名とパスワードを追加する必要がある場合があります。
gem install -p http://[username]:[password]@proxy_ip:proxy_port compass
以下を含む .gemrc ファイルを (/etc/gemrc または ~/.gemrc に、またはたとえば /opt/chef/embedded/etc/gemrc に Chef gem を使用して) 作成します。
http_proxy: http://proxy:3128
そうすれば、できます gem install
いつものように。
プロキシを介した認証に問題がある場合は、必ず以下の形式で環境変数を設定してください。
set HTTP_PROXY=some.proxy.com
set HTTP_PROXY_USER=user
set HTTP_PROXY_PASS=password
の user:password@
構文は機能していないようです。また、スタック オーバーフローやさまざまなフォーラムの投稿には、間違った名前の環境変数がいくつか漂っています。
また、ジェムのダウンロードが開始されるまでに時間がかかる場合があることにも注意してください。最初はうまくいかないのではないかと思いましたが、少し辛抱強く続けると、期待どおりにダウンロードが開始されました。
上記の解決策をすべて試しましたが、どれも機能しませんでした。Linux/macOS を使用している場合は、SSH トンネル経由で tsocks を使用することを強くお勧めします。この設定を機能させるために必要なのは、ssh 経由でログインできるマシンに加えて、tsocks と呼ばれるプログラムがインストールされていることです。
ここでのアイデアは、SSH (socks5 プロキシ) 経由で動的トンネルを作成することです。次に、このトンネルを使用してアプリケーションを起動するように tsocks を構成します。この場合は次のようになります。
tsocks gem install ...
または、Rails 3.0 を考慮するには:
tsocks bundle install
より詳細なガイドは次の場所にあります。
http://blog.byscripts.info/2011/04/bypass-a-proxy-with-ssh-tunnel-and-tsocks-under-ubuntu/
Ubuntu 用に書かれているにもかかわらず、この手順はすべての Unix ベースのマシンに適用できるはずです。Windows 用の tsocks の代替手段は FreeCap (http://www.freecap.ru/eng/)。Windows 上で実行可能な SSH クライアントは putty と呼ばれます。
このトピックに関する投稿は数多くありますが、他の人がさまざまな解決策を試す時間を節約できるように、私が何時間もかけて試行錯誤した最終結果をここに示します。
現時点でのインターネットに関する 3 つのソリューションは次のとおりです。rubysspi apserver cntlm
Rubysspi は Win32Api ライブラリに依存しているため、私の知る限り Windows マシンでのみ動作します。したがって、Windows ボックスをプロキシ経由で実行しようとしている場合は、これが解決策です。Linux ディストリビューションを使用している場合は、運が悪いです。
apserver は死んだプロジェクトのようです。私が見た投稿にリストされているリンクは、sourceforge の 404 ページにつながります。SourceForge で「apserver」を検索しても何も返されません。
私が確認した cntlm の sourceforge リンクがリダイレクトされる http://cntlm.awk.cz/, しかし、それはタイムアウトです。sourceforge で検索すると、次のリンクが表示されます。これは機能します。 http://sourceforge.net/projects/cntlm/
cntlm をダウンロードして設定した後、プロキシ経由で gem をインストールすることができたので、これが Linux ディストリビューションにとって最適なソリューションであると思われます。
回避策は、インストールすることです http://apserver.sourceforge.net ローカル マシン上で設定し、このプロキシ経由で gem を実行します。
- インストール:apserver 097 (実験版の 098 ではありません!) をダウンロードして解凍するだけです。
- 構成、設定:server.cfg ファイルを編集し、MS プロキシの値を次の場所に入力します。
PARENT_PROXY
そしてPARENT_PROXY_PORT
. 。DOMAIN と USER の値を入力します。PASSWORD は空白のままにしておきます (コロンの後には何も入力しません)。起動時にプロンプトが表示されます。 - apserver を実行します。
cd aps097; python main.py
- ジェムを実行する:
gem install—http-proxy http://localhost:5865/ library
プロキシの背後で作業しており、SASS を直接ダウンロードしてインストールしました。 http://rubygems.org.
それから私は走りました sudo gem install [path/to/downloaded/gem/file]
. 。これがすべての宝石に有効であるとは言えませんが、一部の人には役立つかもしれません。
これはWindowsボックスではうまくいきました。
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
これらの行を含むバッチ ファイルがあり、必要なときに環境値を設定するために使用します。
私の場合の秘訣は、 HTTPS_PROXY
セット。これらがないと、常に 407 プロキシ認証エラーが発生しました。
*nix システムを使用している場合は、これを使用します。
export http_proxy=http://${proxy.host}:${port}
export https_proxy=http://${proxy.host}:${port}
そして試してみてください:
gem install ${gem_name}
このページの手順に従って、rubysspi-1.3.1 が Windows 7 で機能しました。
SOCKS5 プロキシを使用したい場合は、rubygems-socksproxy を試してください。 https://github.com/gussan/rubygems-socksproxy.
OSX 10.9.3では動作します。
プロキシの背後にある場合は、次の場所に移動できます。 Rubyのダウンロード, をクリックし、[ダウンロード] をクリックすると、指定したアップデート (または Gem ) が目的の場所にダウンロードされます。
次に、Ruby コマンド ラインを使用して、次を使用してダウンロードした場所に移動します。 pushd [directory]
例: pushd D:\Setups
次に、次のコマンドを実行します。 gem install [update name] --local
例えば: gem install rubygems-update --local
.
Ruby アップデート バージョン 2.4.1 を適用した Windows 7 でテスト済み。
確認するには、次のコマンドを使用します。 ruby -v
バッチ ファイルを編集するのではなく (他の Ruby gem では編集する必要があるかもしれません。バンドラー)、これは一度やって、きちんとやった方が良いかもしれません。
Windows では、企業プロキシの背後に、 HTTP_PROXY
私のシステムの環境変数。
- 「スタート」→「コンピュータ」を右クリック→「プロパティ」
- 「システムの詳細設定」を選択します
- 「詳細設定」→「環境変数」をクリックします。
- 「」という名前の新しいシステム変数を作成します。
HTTP_PROXY
" を入力し、値をプロキシ サーバーに設定します。 - 再起動するか、ログアウトして再度ログインします
認証要件に応じて、 HTTP_PROXY
値は次のように単純にすることができます。
http://proxy-server-name
または、他の人が指摘したように、より複雑です
http://username:password@proxy-server-name:port-number