企業のファイアウォールが gem のインストールを妨げていると思われます。HTTP_PROXY が定義されており、次のコマンドを使用してリモートの gem を表示できます。
jruby -S gem list -r
しかし、gem をインストールしようとすると、404 が表示されます。
jruby -S gem install rails
内部の gem リポジトリを維持する以外に、この問題を解決するための適切な回避策はありますか?
ruby gemの場合、これをgem.batに配置すると、これでうまくいきます
@"%~dp0ruby.exe" "%~dpn0" %* --http-proxy http://domainname.ccc.com:8080
jrubyの宝石の場合、これは機能します
@"%~dp0jruby.exe" "%~dpn0" %* -p http://domainname.ccc.com:8080
また、環境変数の設定は次のように機能します
set http-proxy=http://domainname.ccc.com:8080
またはプロキシサーバーが認証を必要とする場合
set http-proxy=http://user:password@host:port)
編集:非常に制限されたファイアウォールを持っているか、インターネットアクセスがない人(サーバーなど)の場合は、次のようにすることができます:インターネットに無料でアクセスできるPCにgemをインストールし、その後、フォルダーC:\を確認しますRuby193 \ lib \ ruby \ gems \ 1.9.1 \ cacheを実行し、インストールを行った瞬間の後に最後に変更された日付のすべてのgemをコピーします。ターゲットPCで、それらを同じフォルダーにコピーするか、後でbinフォルダーでクリーンアップして、そこからインストールを開始します。
c:\ruby193\bin\gem.bat install --local gemname-x.x.x.gem
gemname-xxxgemは、インストールするベースgemのgemファイル名です。すべての依存関係を持つgemがインストールされます。これはWindows用ですが、他のOSでも同じ手法を使用でき、いくつかの点を適応させるだけです。成功
gem コマンドの -p オプションでプロキシ サーバーの名前を使用します。
gem update rails -p http://mylocalproxy.mycompany.com
これが機能しない場合は、いつでもインターネット上のどこかに独自のプロキシ サーバーを設定できます。
最初に簡単なこと: リストとインストールの両方を試したとき、同じシェル セッションにいましたか? たぶん、環境をもう一度設定するのを忘れていますか?
http_proxy
の代わりに設定してみてくださいHTTP_PROXY
。
プロキシ設定が有効な URL であることを確認してください (以下を参照)。
複数のプロキシ オプションがありますか? IE を開きwpad
、アドレス バーに入力します。他の可能性が見えてくるかもしれません。
プロキシは認証されていますか? その場合、URL に資格情報がありますか。私はこのようなものです(Windows上):
set http_proxy=http://myuserid:mypassword@internetproxy:3128
パスワードに句読点が含まれていませんか? :
URL 文字列自体でと@
(およびおそらく他のもの) が重要であるため、数字と文字だけで試してください。
私は Ruby の専門家ではありません。とはいえ、次の「一般的な」アドバイスを提供することもできます (インストーラーに関する多くの状況で役立ちます)。
インストールが実行されているプロトコルを確認します。一部のインストーラーはメイン サイトではなくミラーからパッケージをダウンロードし、一部のミラーは HTTP の代わりに FTP などを使用している可能性があります。したがって、それに応じて設定を更新し、企業プロキシが FTP サイトからデータを取得できることを管理者に確認する必要がある場合があります。
インストーラーがどのユーザーとして実行されているかを確認します (一部のインストーラーは権限を "root" にエスカレートする必要があります。したがって、別の HTTP_PROXY が定義された別の環境を継承します)。
インストーラー プログラムがパッケージをダウンロードするために使用しているものを確認します (多くのディストリビューション パッケージ マネージャーは、プロキシ パラメーターを rc ファイルに保存する curl/libcurl に依存しています)。ホームディレクトリに rc ファイルを含める必要があるユーザーに関する 2 と同じ警告。
透過的なプロキシ : 最初に Web を対象とする HTTP/FTP リクエストをオンザフライでプロキシに転送できます。企業プロキシ (そのようなインストールで動作する場合) または企業プロキシにカスケードするミニ ローカル プロキシのいずれかです。
あなたのマシンと Web を見ることができる企業内の特別なマシンとの間で SSH (SSH の man ページを参照) 経由で簡単な VPN (Tunnel other PPP) をセットアップし、VPN を介してトラフィックをルーティングするようにルーティング テーブルを更新します。
コークスクリューを使用して、SSH 経由で接続することもできます(したがって、5 のような SSH を介して VPN をインストールできます)。自宅にあるような、企業のファイアウォールの反対側にある外部のマシンに接続することもできます。(これは、プロキシの HTTPS "CONNECT" モードを使用して、外部の SSH にアクセスします)。管理者、または少なくとも 1 人の担当者が常に最新情報を把握していることを確認し、パニックにならないようにしてください。
必死の対策: HTTP リクエストのみを許可するプロキシを介して、各http トンネルを実行している 2 台のマシン間にトンネルを作成します。次に、トンネルを使用して SSH VPN を確立します。
これらの解決策は Ruby に固有のものではありませんが、過度に制限的なファイアウォールの背後にある絶望的な解決策を解決するのに役立ちます。
1 から 4 は、ほとんどの状況で機能するはずです。奇妙で偏執的なファイアウォールに直面した場合は、5 から 7 に頼る必要があります。7 はかなり極端ですが、破滅的なパフォーマンスを伴うこともありますが、常に機能します。
このツールを使用できます: http://ntlmaps.sourceforge.net/
gem はプロキシ認証をサポートしていないため、認証を行い、gem に認証が行われていないと思わせるセカンダリ プロキシ (たとえば、あなたのマシンなど) を経由すると、作業が楽になります。
gemcutter.org の人々が Amazon の Cloudfront にモードを設定し、雇用主のファイアウォールを介して gem を再度ダウンロードできるようになったので、私はこれを再テストしました。
企業のファイアウォールの制限を回避する手順を以下に説明しました。
プロキシ (ISA-NTLM) の背後から Ruby Gems を更新するにはどうすればよいですか?
基本的には、ssh トンネルとプログラム tsocks を使用します。
1.ruby をインストールしたドライブに移動します。2.インストールしたバージョンに基づいて、「ruby200-x64」またはそれに類似した名前のフォルダーが見つかります。3. フォルダー内で ...bin/ を開きます。 4. gem.bat を見つけ、任意のテキスト エディターで開きます。一連の設定が表示されます。5. @"%~dp0ruby.exe" "%~dpn0" %* の後に、プロキシ サーバーのアドレスとポートを配置します。**
@"%~dp0ruby.exe" "%~dpn0" %* --http-proxy http://domainname.ccc.com:8080
**