如何防止使用代理的跨度?

时间:2015-02-10 03:14:26

标签: perl cpan

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

 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的envvar。

4 个答案:

答案 0 :(得分:2)

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

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

请勿忘记使用o conf commit将更改永久化。

答案 1 :(得分:1)

CPAN使用HTTP:Tiny来下载有关您要求的模块的信息。它很轻巧,因此运行速度很快。

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

答案 2 :(得分:1)

此消息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

答案 3 :(得分:0)

发生错误是因为您已将http_proxy变量设置为指向IP,而是将http_proxy = http://ipaddress置于其中,然后它将起作用