2

ユーザー名とパスワードを必要とするプロキシと対話するために CPANM を使用しています。「o conf init /proxy/ under cpan」を実行するときに設定を指定しました。私の認識では、UNIX 環境でプロキシを指定するために使用される変数は、環境全体で標準ではありません。環境変数を正しい値に設定すると、他の UNIX ユーティリティはプロキシ経由で正しく動作します。

私の質問は次のとおりです。

  1. CPANM はどのように環境変数とインターフェースしますか? 彼らは何でしょう?

  2. あいまいさを取り除くために参照できるコードの関連領域はありますか? CPANM 内に LWP インターフェイスがあると思いますか? https://github.com/miyagawa/cpanminus/blob/devel/App-cpanminus/cpanm

####:/mnt/c/Projects$ sudo cpanm install Catalyst::Helper -v
cpanm (App::cpanminus) 1.7040 on perl 5.022001 built for x86_64-linux-gnu-thread-multi
Work directory is /home/####/.cpanm/work/1543605706.124
You have make /usr/bin/make
You have LWP 6.36
You have /bin/tar: tar (GNU tar) 1.28
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by John Gilmore and Jay Fenlason.
Searching install () on cpanmetadb ...

########:/mnt/c/Projects$ env | grep HTTP_proxy
HTTP_proxy=http://####:###
4

1 に答える 1

2

私が見る限り、cpanm (実際にはApp::Cpanminusは HTTP::Tiny に依存して HTTP リクエストを実行します。

HTTP::Tiny のドキュメントから:

HTTP::Tiny は、http と https の両方のリクエストをプロキシできます。Basic プロキシ認証のみがサポートされており、プロキシ URL の一部として提供する必要があります: http://user:pass@proxy.example.com/

HTTP::Tiny は次のプロキシ環境変数をサポートします: http_proxy または HTTP_PROXY、https_proxy または HTTPS_PROXY、all_proxy または ALL_PROXY

したがって、次のように、プロキシのユーザー名とパスワードを URL の一部として指定してみてください。

$ export HTTP_PROXY=http://<user>:<password>@<url>:<port>
$ export HTTPS_PROXY=http://<user>:<password>@<url>:<port>

また、ドキュメントによると、HTTP_PROXY 設定は LWP::UserAgent (cpan コマンド ライン ユーティリティで使用されるプライマリ HTTP クライアント) によって受け入れられますが、HTTPS_PROXY は curl によってサポートされます (LWP が失敗した場合の cpan のフォールバック)。LWP::UserAgent のドキュメントcurl のドキュメントを参照してください。

したがって、HTTP_PROXY/HTTPS_PROXY は、すべての CPAN クライアントでサポートされる共通の環境変数である必要があります。

于 2018-11-30T20:48:27.610 に答える