我该如何安装一个模块?草莓Perl问题

17
我正在尝试在Windows 7上的Strawberry Perl中安装Perl模块。
我运行以下命令,并收到了一堆我不理解的消息。看起来我收到了500错误,就像页面无法访问一样。然而,当我在浏览器中指向镜像时,我可以轻松访问FTP目录。我在Linux上几乎没有Perl经验,在Windows上更是如此。我尝试手动添加一个镜像到urllist,但我认为这并没有帮助。
C:\Program Files> cpan Win32::IE::Mechanize

CPAN: LWP::UserAgent loaded ok (v5.835)
CPAN: Time::HiRes loaded ok (v1.9721)
Fetching with LWP:
http://cpan.strawberryperl.com/authors/01mailrc.txt.gz
LWP failed with code[500] message[Can't connect to cpan.strawberryperl.com:80 (Bad hostname 'cpan.strawberryperl.com')]
Warning: no success downloading 'C:\strawberry\cpan\sources\authors\01mailrc.txt.gz.tmp5264'. Giving up on it.
Fetching with LWP:
ftp://mirror.teklinks.com/CPAN/authors/01mailrc.txt.gz
LWP failed with code[500] message[LWP::Protocol::MyFTP: Bad hostname 'mirror.teklinks.com']
Fetching with Net::FTP:
ftp://mirror.teklinks.com/CPAN/authors/01mailrc.txt.gz
  Could not connect to host 'mirror.teklinks.com' with Net::FTP
Fetching with Net::FTP
ftp://mirror.teklinks.com/CPAN/authors/01mailrc.txt.gz.gz
  Could not connect to host 'mirror.teklinks.com' with Net::FTP
Warning: no success downloading 'C:\strawberry\cpan\sources\authors\01mailrc.txt.gz.tmp5264'. Giving up on it.
Warning: no success downloading 'C:\strawberry\cpan\sources\authors\01mailrc.txt.gz.tmp5264'. Giving up on it.

As a last resort we now switch to the external ftp command 'C:\WINDOWS\system32\ftp.EXE'
to get 'C:\strawberry\cpan\sources\authors\01mailrc.txt.gz.tmp5264'.

Doing so often leads to problems that are hard to diagnose.

If you're the victim of such problems, please consider unsetting the
ftp config variable with

    o conf ftp ""
    o conf commit

Issuing "C:\WINDOWS\system32\ftp.EXE -n"

  Trying with external ftp to get
    ftp://mirror.teklinks.com/CPAN/authors/01mailrc.txt.gz
  Going to send the dialog
    open mirror.teklinks.com
    user anonymous win32-vanilla@perl.org
    lcd C:\strawberry\cpan\sources\authors
    cd /
    cd CPAN
    cd authors
    bin
    passive
    get 01mailrc.txt.gz 01mailrc.txt.gz.tmp5264
    quit

Unknown host mirror.teklinks.com.
Not connected.
Local directory now C:\strawberry\cpan\sources\authors.
Not connected.
Not connected.
Not connected.
Not connected.
Invalid command.
Not connected.
Bad luck... Still failed!
Can't access URL ftp://mirror.teklinks.com/CPAN/authors/01mailrc.txt.gz.

Fetching with LWP:
http://cpan.strawberryperl.com/authors/01mailrc.txt.gz
LWP failed with code[500] message[Can't connect to cpan.strawberryperl.com:80 (Bad hostname 'cpan.strawberryperl.com')]
Warning: no success downloading 'C:\strawberry\cpan\sources\authors\01mailrc.txt.gz.tmp5264'. Giving up on it.
Warning: no success downloading 'C:\strawberry\cpan\sources\authors\01mailrc.txt.gz.tmp5264'. Giving up on it.
Fetching with LWP:
ftp://mirror.teklinks.com/CPAN/authors/01mailrc.txt.gz
LWP failed with code[500] message[LWP::Protocol::MyFTP: Bad hostname 'mirror.teklinks.com']
Fetching with Net::FTP:
ftp://mirror.teklinks.com/CPAN/authors/01mailrc.txt.gz
  Could not connect to host 'mirror.teklinks.com' with Net::FTP
Fetching with Net::FTP
ftp://mirror.teklinks.com/CPAN/authors/01mailrc.txt.gz.gz
  Could not connect to host 'mirror.teklinks.com' with Net::FTP
Warning: no success downloading 'C:\strawberry\cpan\sources\authors\01mailrc.txt.gz.tmp5264'. Giving up on it.
Warning: no success downloading 'C:\strawberry\cpan\sources\authors\01mailrc.txt.gz.tmp5264'. Giving up on it.

As a last resort we now switch to the external ftp command 'C:\WINDOWS\system32\ftp.EXE'
to get 'C:\strawberry\cpan\sources\authors\01mailrc.txt.gz.tmp5264'.

Doing so often leads to problems that are hard to diagnose.

If you're the victim of such problems, please consider unsetting the
ftp config variable with

    o conf ftp ""
    o conf commit

Issuing "C:\WINDOWS\system32\ftp.EXE -n"

  Trying with external ftp to get
    ftp://mirror.teklinks.com/CPAN/authors/01mailrc.txt.gz
  Going to send the dialog
    open mirror.teklinks.com
    user anonymous win32-vanilla@perl.org
    lcd C:\strawberry\cpan\sources\authors
    cd /
    cd CPAN
    cd authors
    bin
    passive
    get 01mailrc.txt.gz 01mailrc.txt.gz.tmp5264
    quit

Unknown host mirror.teklinks.com.
Not connected.
Local directory now C:\strawberry\cpan\sources\authors.
Not connected.
Not connected.
Not connected.
Not connected.
Invalid command.
Not connected.
Bad luck... Still failed!
Can't access URL ftp://mirror.teklinks.com/CPAN/authors/01mailrc.txt.gz.

CPAN: YAML loaded ok (v0.73)
Please check, if the URLs I found in your configuration file
(http://cpan.strawberryperl.com/, ftp://mirror.teklinks.com/CPAN/) are
valid. The urllist can be edited. E.g. with 'o conf urllist push
ftp://myurl/'

Could not fetch authors/01mailrc.txt.gz

这些问题看起来大多是代理/网络问题。您的网络配置是怎样的?您是否在防火墙后面? - Stuart Watt
我在公司的防火墙后面,一开始怀疑这个问题,但是通过浏览器我还是能够访问它。 - Brian
1
@Brian,是的,因为您的浏览器可能已经设置好了通过配置脚本正确使用和忽略代理。 - Axeman
4个回答

19

这通常是由于防火墙/代理问题引起的。您需要在cpan中设置http_proxy变量。

在命令提示符下键入cpan,然后按Enter进入CPAN shell。一旦进入CPAN shell,输入以下内容:

o conf http_proxy http://proxy.mycorp.com:8080/

cpan可能会要求您输入用户名和密码,以便您至少可以使用代理服务器来处理HTTP流量。

有可能您的FTP访问被防火墙阻挡了,cpan将绕过此问题。

  • 如果代理配置很简单,您可以查看浏览器设置。
  • 如果它更加复杂,您需要:
    • 将配置脚本的URL粘贴到浏览器地址栏中
    • 当浏览器提示时,使用编辑器打开该URL(或使用支持HTTP URL的编辑器,如jEditNotepad ++)。

一旦您解析了所在地和CPAN的情况,就可以获取返回的服务器名称,并添加端口(如果有),然后将其设置为环境变量或cpan配置的值。


2
运行 o conf init /proxy/,以查看/设置所有与代理相关的选项,而不仅仅是常用的HTTP代理。 - daxim

7
这似乎是代理问题。CPAN shell 使用需要设置的环境变量,以便它知道代理 -- 它无法从浏览器中检测到它们。
这些环境变量为:
http_proxy         Proxy host for HTTP requests
ftp_proxy          Proxy host for FTP  requests

由于您使用的是Windows操作系统,您可以在同一个命令提示符窗口中执行以下操作:

C:\> set http_proxy=http://proxy.sn.no:8001/
C:\> set ftp_proxy=http://proxy.sn.no:8001/
C:\> cpan

然后尝试像之前一样安装。由于您的CPAN正在使用FTP,ftp_proxy需要被设置(是的,它的URL通常将是HTTP)。

您还可以在系统控制面板中永久设置环境变量,通常在高级设置中的环境变量下。您可以为系统或当前用户设置它们。最好不要为整个系统设置它们,除非您有非常好的理由。

您将不得不找出代理实际上是什么。您的浏览器应该知道,因此请查看其Internet设置。


3

我之前也遇到类似的问题,但这些解决方法并没有对我有用。我刚刚将草莓Perl从5.18.2.1升级到了5.20.1.1,尽管CPAN在两台Windows 7机器上工作正常,但在Windows Server 2003机器上无法正常工作。

最终,解决我的问题的是删除CPAN配置文件,在我的情况下是C:\strawberry\perl\lib\CPAN\Config.pm。我启动了CPAN并执行了reload index命令;然后它再次要求我输入我的凭据(我不需要代理),所以我只需按两次回车键将它们留空,然后它就成功连接并更新了它的索引。

我记得以前在草莓Perl的发行说明中看到过警告,说要在卸载前一个版本并安装新版本之前删除C:\strawberry。这次好像没有这样的警告,但我觉得这是一种好的做法。

顺便说一句,在设法让CPAN再次正常工作之前,我使用的一个临时解决办法是从已经升级Peri并且CPAN仍然可以工作的计算机上复制libsitevendor目录。这样,我就可以在CPAN无法正常工作的情况下使用所有需要的模块。(这两台计算机具有相同的架构,需要相同的安装程序进行升级。)


0

在Strawberry Perl环境中,CPAN配置文件为:

c:\Strawberry\perl\lib\CPAN\Config.pm .

特定用户的配置定义写在位于以下路径下的MyConfig.pm文件中:C:\Users\用户名\AppData\Local\.cpan\CPAN\。代理定义可以在这些文件中被覆盖。


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