サンドボックス環境で Git Clone に失敗する問題が解決できず。
複製するサイズが大きすぎるとか、数が多すぎるとか、通信が不安定とか、名前が解決できないとか、どこかで何かがタイムアウトしているとか、調べるすべ(能力)がない。
調べるために、Squid4 をインストール。
Squid の公式サイトのリンクをたどって、Download → binary package of Squid → Windows → Squid-4 → 64-bit からダウンロードして実行します。
次にライセンスに同意を求められるので、チェックして Next をクリック。
あとはデフォルトのままでインストールしました。
インストールが完了すると、デスクトップに2つのショートカットができました。
また、タスクトレイを確認すると、 Squid Server Tray があり、ここから設定ファイルを開いたり、サービスのスタート/ストップなどできます。
今回は、サンドボックス環境でインストールして、自分自身の Git をこのプロキシ経由で行う想定です。
最低限の設定のみ変更します。
Squid Server Tray を右クリックして「Open Squid Configuration」をクリックします。
変更したのは次の1行だけ。
cache_dir aufs /cygdrive/c/squid/cache 3000 16 256
この設定で、C:\squid\cache ディレクトリにキャッシュするように指定します。
エクスプローラーから、C:\squid ディレクトリに「cache」を作成します。
また、初回はキャッシュフォルダを作成する必要があります。
もし Squid が起動していたら、「Stop Squid Service」で停止しておきます。
先ほどデスクトップにできた「Squid Terminal」を起動して、以下のコマンドを実行します。
squid -z
うまくいくと、cache ディレクトリの中に、00、01、02、・・・のようなフォルダが作成されます。
Squid が実行された状態では以下のように表示されて失敗します。
1 2 3 |
C:\Squid>squid -z 2022/05/26 18:13:53| FATAL: Squid is already running: Found fresh instance PID file (/var/run/squid.pid) with PID 544 exception location: Instance.cc(121) ThrowIfAlreadyRunningWith |
設定変更とキャッシュフォルダの作成ができたら、「Start Squid Service」で起動しておきす。
で、この Squid を経由して Git することで、ログからエラーの原因調査ができるかなぁと。
まず、コマンドプロンプトから git clone してみてエラーの内容を記録しておく。
1 2 3 4 5 6 7 |
C:\work>git clone https://boringssl.googlesource.com/boringssl Cloning into 'boringssl'... error: RPC failed; curl 56 OpenSSL SSL_read: Connection was reset, errno 10054 error: 15710 bytes of body are still expected fetch-pack: unexpected disconnect while reading sideband packet fatal: early EOF fatal: fetch-pack: invalid index-pack output |
どうやら実行するたびに「15710 bytes」の部分の数字が変わってる。
1 2 3 4 5 6 7 |
C:\work>git clone https://boringssl.googlesource.com/boringssl Cloning into 'boringssl'... error: RPC failed; curl 56 OpenSSL SSL_read: Connection was reset, errno 10054 error: 59814 bytes of body are still expected fetch-pack: unexpected disconnect while reading sideband packet fatal: early EOF fatal: fetch-pack: invalid index-pack output |
2回目は「59814 bytes」だった。接続が切れるタイミングは不定っぽい。
続いて、Git でプロキシを経由するよう指定します。コマンドプロンプトから、以下のコマンドを実行します。
1 |
git config --global http.proxy http://127.0.0.1:3128 |
Squid4 を通したらうまくいったみたい。
1 2 3 4 5 6 7 |
C:¥work>git clone https://boringssl.googlesource.com/boringssl Cloning into 'boringssl'... remote: Total 87901 (delta 59093), reused 87901 (delta 59093) Receiving objects: 100% (87901/87901), 192.00 MiB | 26.77 MiB/s, done. Resolving deltas: 100% (59093/59093), done. Updating files: 100% (5930/5930), done. |
うーん、ログでいろいろ調査しようと思っていたけど、結果おーらいってことで終了。
結論:サンドボックス環境で git clone がどうしてもうまくいかなかったら、Squid で自分自身をプロキシサーバーにすると解決した。根本的な解決になってないけど。