如何防止跨度使用代理?

How to prevent cpan fron using proxy?

我对 perl 的了解仅限于 运行 命令。我设法想出了一个 shell 脚本来输出 pom.xml 的 gav,使用 xpath 如下:

 xpath pom.xml  '//project/artifactId/text()'

现在在一台新机器上,这不起作用,因为我没有安装 XPath.pm:

 Can't locate XML/XPath.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.14/x86_64-cygwin-threads /usr/lib/perl5/site_perl/5.14 /usr/lib/perl5/vendor_perl/5.14/x86_64-cygwin-threads /usr/lib/perl5/vendor_perl/5.14 /usr/lib/perl5/5.14/x86_64-cygwin-threads /usr/lib/perl5/5.14 .)

我似乎记得使用 cpan 安装 XPath,所以我盲目地尝试了以下命令:

cpan XPath

这可能不是正确的命令,但我认为这与我面临的问题无关。该命令给出以下错误:

Going to read '/home/****/.cpan/Metadata'
  Database was generated on Mon, 25 Aug 2014 00:41:02 GMT
Fetching with HTTP::Tiny:
http://www.perl.org/CPAN/authors/01mailrc.txt.gz
HTTP::Tiny failed with an internal error: Could not connect to 'proxy:8080': IO::Socket::INET: Bad hostname 'proxy' at /usr/lib/perl5/5.14/HTTP/Tiny.pm line 139

Proxy authentication needed!
 (Note: to permanently configure username and password run
   o conf proxy_user your_username
   o conf proxy_pass your_password
     )
Username:    C-c C-c

为什么 HTTP::Tiny 正在寻找主机代理?我们确实有一个带主机名代理的公司代理,但只有当我在公司网络或 VPN 上时才需要,现在这两种情况都不是。

如何说服 HTTP::Tiny 直接连接到互联网?我没有设置名为 http_proxyHTTP_PROXY 的环境变量。

CPAN 使用 HTTP:Tiny 下载有关您所请求的模块的信息。它很轻,所以运行速度很快。

未配置 CPAN,或者在您的路径上找到的 cpan 配置为使用代理。确定您正在执行的 CPAN 程序的位置并从那里继续。

在使用环境变量的同时,cpan首先检查其配置。

查看:o conf http_proxy
清除:o conf http_proxy ''

不要忘记使用 o conf commit 使更改永久生效。

此消息 Can't locate XML/XPath.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.14/x86_64-cygwin-threads /usr/lib/perl5/site_perl/5.14 /usr/lib/perl5/vendor_perl/5.14/x86_64-cygwin-threads /usr/lib/perl5/vendor_perl/5.14 /usr/lib/perl5/5.14/x86_64-cygwin-threads /usr/lib/perl5/5.14 .) 显示未安装模块。 如果您使用 windows 并使用代理设置。您可以使用这些命令从 ppm 或 cpan 安装模块。打开命令提示符并 运行 这些命令:

set http_proxy=http://xxx.xxx.xxx.x:yyyy (xxx is your system proxy and yyyy is port)
set http_proxy_user=username (login username)
set http_proxy_pass=password (login password)

要从 cpan 类型安装模块:

cpan install modulename

错误发生是因为你设置了http_proxy变量直接IP,而是把http_proxy=http://ipaddress,然后就可以了