我打算在 Windows 机器上安装一些 Perl 模块。这是一个客户 UAT 盒子,所以我不知道它是如何配置的或由谁配置的。我们在开发盒上进行了安装,一切都按照广告进行。
该盒子正在运行 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::Read
、Spreadsheet::ParseExcel
和 Spreadsheet::XLSX
。如果 CPAN 不做它的事情,是否可以修改安装,或者是否需要编译的东西?请记住,Make 也在发挥作用。
Any chance you can use Strawberry Perl and leave the Cygwin headaches behind?
我已经问过了。答案是否定的。
You say you have 5.8.8 but it is looking for perl5.8.7.exe. Post the $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
Did you check what condition actually displays that message?
没有太多条件。它下载了该消息之后的所有内容。
What's the output of perl -le'print( (-x "/usr/bin/perl.exe") || 0 )'
你赢了:权限是-rwx-----
。我不敢相信我错过了这一点。
What's the output of /usr/bin/perl.exe -e "require 5; print qq{VER_OK\n}" – ikegami 1 hour ago
VER_OK
由于某种原因,我能够执行/usr/bin/perl,当然CPAN也必须执行(这不是一个Perl程序吗?),但是当CPAN寻找它时,它找不到它,因为权限被搞乱了。
最佳答案
该消息来自 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}"
关于perl - Windows XP 上的 CPAN 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7922193/