我对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_proxy
或HTTP_PROXY
的envvar。
答案 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置于其中,然后它将起作用