使用CPAN时,在o conf init /proxy/后代理失败

17
我在公司环境中有一台Linux电脑,通过需要身份验证的代理进行网页访问。
在第一次运行cpan时,它会自动配置通常所需的所有内容:
“自动配置了除'urllist'之外的所有内容。请调用'o conf init urllist'来配置您的CPAN服务器!”
提交:写入'/usr/lib/perl5/5.10.0/CPAN/Config.pm'
知道我需要使用代理进行导航,并阅读了关于代理和cpan的文档以及几个网页后,我: o conf init /proxy/ 如果您通过代理访问网络,可以在CPAN配置或环境变量中指定它们。$CPAN::Config中的变量优先级最高。 您的ftp_proxy?[] 您的http_proxy?[] 10.12.8.9:3128 您的no_proxy?[] 如果您的代理是需要身份验证的代理,您可以永久存储用户名。如果您不想这样做,只需按RETURN键。然后,您将被要求在每个未来会话中输入您的用户名。 您的代理用户ID?[] my_net_id 您用于身份验证代理的密码也可以永久存储在磁盘上。如果这违反了您的安全策略,请按RETURN键。然后,您将被要求在每个未来会话中输入密码。 CPAN:Term :: ReadKey已成功加载(v2.30) 您的代理密码? 请记得调用“o conf commit”以使配置永久! o conf commit commit:写入'/usr/lib/perl5/5.10.0/CPAN/Config.pm'
现在一切都应该好了,对吧? 这是我的愿望,
cpan[3]> i /Some::Module/ CPAN: Storable loaded ok (v2.18) 我想连接以下网站之一获取'authors/01mailrc.txt.gz': http://www.perl.org/CPAN/ ftp://ftp.perl.org/pub/CPAN/ 尝试连接互联网是否可以? [yes] LWP不可用 尝试使用“/usr/bin/curl -L -f -s -S --netrc-optional”获取http://www.perl.org/CPAN/authors/01mailrc.txt.gzcurl:(22)请求的URL返回错误:407 系统调用“/usr/bin/curl -L -f -s -S --netrc-optional“http://www.perl.org/CPAN/authors/01mailrc.txt.gz > /root/.cpan/sources/authors/01mailrc.txt.tmp29726”返回状态22(wstat 5632)警告:期望的文件[/root/.cpan/sources/authors/01mailrc.txt.gz.tmp29726]不存在 尝试使用“/usr/bin/wget -O /root/.cpan/sources/authors/01mailrc.txt.tmp29726”获取http://www.perl.org/CPAN/authors/01mailrc.txt.gz--2012-07-17 15:57:38-- http://www.perl.org/CPAN/authors/01mailrc.txt.gz连接到10.12.8.9:3128...已连接。代理请求已发送,等待响应...301永久移动位置:http://www.cpan.org/authors/01mailrc.txt.gz[跟随] --2012-07-17 15:57:38-- http://www.cpan.org/authors/01mailrc.txt.gz连接到10.12.8.9:3128...已连接。代理请求已发送,等待响应...407代理身份验证要求 2012-07-17 15:57:38 错误407:需要代理身份验证。
“密码提示在哪里?”“我错过了什么配置CPAN通过公司代理进行身份验证访问互联网的步骤?”
4个回答

25

您需要提供绝对代理URL地址以配置CPAN代理设置。请不要担心,不要仅仅提供IP地址和端口号,请按照以下方式提供。

cpan> o conf init /proxy/

Your ftp_proxy? [] ftp://10.12.8.9:3128

Your http_proxy? [] http://10.12.8.9:3128

Your no_proxy? []

如果需要,请提供用户名密码(确保您具有下载权限)

我之前也有同样的问题,但现在它已经可以使用了。希望对您也有用。

祝好 Jerry James


这对我来说是正确的答案,可用于移除代理。现有的Docker镜像/容器设置了http_proxy环境变量,但我想要取消它。 - Liam Mitchell

9
安装LWP。我猜cpan工具在使用curl时无法加载LWP,因此需要在运行命令之前设置export http_proxy=http://host:port/的代理参数。如果您可以通过发行版的软件包管理器安装LWP,则应正确配置代理访问。请注意,HTML标记将被保留。

我们有一个赢家。虽然这似乎是本末倒置,但可以手动安装LWP及其18个依赖项,然后cpan将通过代理进行导航。@Luciano已经解决了这个问题。 - MichaelRpdx
作为手动安装 CPAN 中的 19 个软件包的替代方案,请尝试将 o conf 的三个设置 http_proxyproxy_userproxy_pass 都设置为空字符串(或使用文本编辑器从 ~/.cpan/CPAN/MyConfig.pm 中删除它们)。然后确保在您的 shell 环境中设置并导出 HTTP_PROXYHTTPS_PROXY 和小写变体。这对我来说是有效的,我使用了全新的 Perl 源代码安装和需要身份验证的公司 HTTP 代理。 - TheDudeAbides

5

在调用cpan之前,您可以尝试使用以下内容:

export http_proxy=http://my_net_id:my_net_pwd@10.12.8.9:3128/

这样也许curl会使用代理。


实际上,输入的 10.12.8.9:3128 看起来不正确。应该改为 http://10.12.8.9:3128 - daxim
@daxim 从我发布的日志中可以看出,cpan正在连接代理服务器,只是没有进行所需的身份验证。 - MichaelRpdx

0
[root@localhost ~] cpan

终端不支持AddHistory。

cpan shell -- CPAN探索和模块安装(v1.9800) 输入'h'获取帮助。

列出我的下载链接

cpan[1]> o conf urllist 


urllist
    0 [http://mirror.waia.asn.au/pub/cpan/]
    1 [ftp://mirrors.coopvgg.com.ar/CPAN/]
    2 [http://httpupdate3.cpanel.net/CPAN/]

输入 'o conf' 查看所有配置项

添加 CPAN 镜像列表

cpan[2]> o conf urllist push http://httpupdate3.cpanel.net/CPAN/

请使用“o conf commit”使配置永久生效!

提交

cpan[3]> o conf commit

提交:已写入 '/root/.cpan/CPAN/MyConfig.pm'

cpan[4]>

现在您可以再次安装 Perl 模块,例如:cpan -i Text::Template


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接