【问题标题】:CPAN Issues on Windows XPWindows XP 上的 CPAN 问题
【发布时间】:2011-12-16 20:33:12
【问题描述】:

我想在 Windows 机器上安装几个 Perl 模块。这是一个客户 UAT 盒子,所以我不知道它是如何配置的或由谁配置的。我们在 Dev box 上进行了安装,一切正常。

盒子正在运行 Cygwin,它安装了 Perl 5.8.8。我无法更新或重新安装 Cygwin。我必须使用我所拥有的。

我尝试在系统上安装 Spreadsheet::Read,得到以下错误:

  CPAN.pm: Going to build F/FD/FDALY/Test-Tester-0.107.tar.gz

 Checking if your kit is complete...
 Looks good
 Unable to find a perl 5 (by these names: /usr/bin/perl.exe perl.exe perl5.exe pe
 rl5.8.7.exe miniperl.exe, in these dirs: /usr/local/bin /usr/bin /bin /usr/X11R6
 /bin /cygdrive/d/oracle/product/10.2.0/client_1/bin /cygdrive/c/WINDOWS/system32
 /cygdrive/c/WINDOWS /cygdrive/c/WINDOWS/System32/Wbem /usr/bin /cygdrive/d/APPL
 IC~1/MCAFEE~1 /cygdrive/d/Applications/PowerCenter8.6.1/server/bin /usr/lib/lap

什么?找不到 Perl 5?它就在 Cygwin 的 /usr/bin/perl.exe 中!

make 也有问题,但一次只做一件事... gcc 安装在 Cygwin 上,所以这不是问题。

到底发生了什么?我在/cygdrive/p/.cpan 中有.cpan,但那是因为我的HOME 目录是在那里定义的。 (这是公司的事情)。

有什么想法吗?

我需要安装Spreadsheet::ReadSpreadsheet::ParseExcelSpreadsheet::XLSX。如果 CPAN 不这样做,是否可以安装安装,或者是否需要编译的东西?请记住,Make 也在发挥作用。


您是否有机会使用 Strawberry Perl 并摆脱 Cygwin 的麻烦?

我已经问过了。答案是否定的。

你说你有 5.8.8 但它正在寻找 perl5.8.7.exe。发布 $PATH。

这是 Perl 5.8.7。我的错。

路径:

/usr/local/bin
/usr/bin
/bin
/usr/X11R6/bin
/cygdrive/d/oracle/product/10.2.0/client_1/bin
/cygdrive/c/WINDOWS/system32
/cygdrive/c/WINDOWS
/cygdrive/c/System32/Wbem
/usr/bin
/cygdrive/d/APPLIC~1/MFAFEE~1
/cygdrive/d/ApplicationsPowerCenter8.6.1/server/bin
/usr/lib/lapack

您是否检查了实际显示该消息的条件?

没有太多的条件。它下载了所有内容,然后是该消息。

perl -le'print( (-x "/usr/bin/perl.exe") || 0 )' 的输出是什么

你赢了:权限是-rwx------。我不敢相信我错过了。

/usr/bin/perl.exe -e "require 5; print qq{VER_OK\n}" - ikegami 1 小时前的输出是什么

VER_OK


由于某种原因,我能够执行 /usr/bin/perl,当然 CPAN 必须执行(这不是 Perl 程序吗?),但是当 CPAN 寻找它时,它找不到它,因为权限搞砸了。

【问题讨论】:

  • 您是否有机会使用 Strawberry Perl 并摆脱 Cygwin 的困扰?
  • 你说你有 5.8.8 但它正在寻找perl5.8.7.exe。发布$PATH
  • 您是否检查了实际显示该消息的条件?
  • perl -le'print( (-x "/usr/bin/perl.exe") || 0 )'的输出是什么
  • /usr/bin/perl.exe -e "require 5; print qq{VER_OK\n}"的输出是什么

标签: perl cygwin cpan


【解决方案1】:

消息来自 ExtUtils::MakeMaker。该消息是由于找不到可执行文件 (-x) 而不是可以运行 -e "require 5; print qq{VER_OK\n}" 的目录 (!-d)。

所以,检查你的 Perl 的权限,

perl -le'print( (-x "/usr/bin/perl.exe") || 0 )' 

如果上面返回 true,请确保以下运行:

/usr/bin/perl.exe -e "require 5; print qq{VER_OK\n}"

【讨论】:

  • -x /usr/bin/perl.exe 因权限问题而失败。我不认为这是一个权限问题,因为 Cygwin 运行了,如果没有 Perl,它肯定不会。我还做了一个which perl,并显示了/usr/bin/perl。而且,输入/usr/bin/perl -V 也会打印出刚刚找到的所有内容。权限是固定的,安装了模块,我可以转换电子表格。系统上装有 Informatica 的人员将检查 Informatica 是否也可以运行该脚本。
【解决方案2】:

我知道现在有点晚了(抱歉,刚刚看到这个问题),这真的不能回答你的问题,但是对于你不能“搞砸”你正在使用的机器的情况,我'已经发现portable strawberry perl 是解决某些问题的好方法。

【讨论】:

  • 问题是这不是我用的机器。这是我们的一位客户的 UAT 机器。我们使用 Informatica 在 Cygwin 中执行 shell 脚本。我们需要一种将 Excel 电子表格转换为 CSV 的方法,以便他们可以编写 shell 脚本来解析信息。我演示了 Perl 可以做到这一点。但是,所需的 Perl 模块的安装不起作用。结果是 Cygwin 从未正确安装,并且权限很古怪。
  • @DavidW。 - 不能说我听说过 Informatica,但是是的,我从 cmets 和你的回答中得到了这个故事。 “这不是你的机器”——这就是我建议它的原因;它似乎是解决您的问题的更快方法,您可以随时使用它/或在之后简单地删除它。不管怎样,很高兴你的问题得到了解决。
猜你喜欢
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2011-09-15
相关资源
最近更新 更多