perl - CPAN Perl 模块安装程序找不到 tar 文件

标签 perl module installation cpan

我在通过 CPAN 安装 Perl 模块时似乎遇到配置问题,并且我不知道如何纠正它:

[root@ip JESSE]# pwd
/root/.cpan/sources/authors/id/J/JE/JESSE

[root@ip JESSE]# ls -l
total 240
-rw-r--r-- 1 root root 105464 Feb 20 11:39 CHECKSUMS
-rw-r--r-- 1 root root   9223 Apr 12  2011 Locale-Maketext-Simple-0.21.tar.gz
-rw-r--r-- 1 root root 125483 Feb 20 11:39 WWW-Mechanize-1.72.tar.gz

[root@ip JESSE]# cpan -i WWW::Mechanize
CPAN: Storable loaded ok (v2.20)
Reading '/root/.cpan/Metadata'
  Database was generated on Mon, 20 Feb 2012 11:10:26 GMT
Running install for module 'WWW::Mechanize'
Running make for J/JE/JESSE/WWW-Mechanize-1.72.tar.gz
CPAN: Digest::SHA loaded ok (v5.61)
CPAN: Compress::Zlib loaded ok (v2.033)
Checksum for /root/.cpan/sources/authors/id/J/JE/JESSE/WWW-Mechanize-1.72.tar.gz ok
CPAN: Archive::Tar loaded ok (v1.82)
Uncompressed /root/.cpan/sources/authors/id/J/JE/JESSE/WWW-Mechanize-1.72.tar.gz successfully
Using Tar:/bin/tar xvf "WWW-Mechanize-1.72.tar":
Couldn't untar WWW-Mechanize-1.72.tar
CPAN: File::Temp loaded ok (v0.22)
CPAN: CPAN::Meta loaded ok (v2.112150)
Package seems to come without Makefile.PL.
  (The test -f "/root/.cpan/build/JESSE-n72IRU/Makefile.PL" returned false.)
  Writing one on our own (setting NAME to WWWMechanize)
  Had problems unarchiving. Please build manually
Running make test
  Make had some problems, won't test
Running make install
  Make had some problems, won't install

[root@ip JESSE]# ls -l
total 240
-rw-r--r-- 1 root root 105464 Feb 20 11:39 CHECKSUMS
-rw-r--r-- 1 root root   9223 Apr 12  2011 Locale-Maketext-Simple-0.21.tar.gz
-rw-r--r-- 1 root root 125483 Feb 20 11:39 WWW-Mechanize-1.72.tar.gz

[root@ip JESSE]# which tar
/bin/tar

[root@ip JESSE]# which gzip
/bin/gzip

问题似乎出在这里:

Uncompressed /root/.cpan/sources/authors/id/J/JE/JESSE/WWW-Mechanize-1.72.tar.gz successfully
Using Tar:/bin/tar xvf "WWW-Mechanize-1.72.tar":
Couldn't untar WWW-Mechanize-1.72.tar

tar.gz 文件确实未压缩,可以在新目录中找到:

/root/.cpan/build/JESSE-KjCEMS/WWW-Mechanize-1.72.tar

如果我从 shell 内部运行相同的命令,我会得到更多信息:

cpan[1]> install WWW::Mechanize
CPAN: Storable loaded ok (v2.20)
Reading '/root/.cpan/Metadata'
  Database was generated on Mon, 20 Feb 2012 11:10:26 GMT
Running install for module 'WWW::Mechanize'
Running make for J/JE/JESSE/WWW-Mechanize-1.72.tar.gz
CPAN: Digest::SHA loaded ok (v5.61)
CPAN: Compress::Zlib loaded ok (v2.033)
Checksum for /root/.cpan/sources/authors/id/J/JE/JESSE/WWW-Mechanize-1.72.tar.gz ok
Scanning cache /root/.cpan/build for sizes
Use of uninitialized value $newdir in substitution (s///) at /usr/lib64/perl5/Cwd.pm line 502.
Use of uninitialized value $newdir in chdir at /usr/lib64/perl5/Cwd.pm line 510.
Use of chdir('') or chdir(undef) as chdir() is deprecated at /usr/lib64/perl5/Cwd.pm line 510.
Use of uninitialized value $newdir in pattern match (m//) at /usr/lib64/perl5/Cwd.pm line 525.
Use of uninitialized value $newdir in split at /usr/lib64/perl5/Cwd.pm line 531.
..........................................................................--DONE
DEL(1/10): /root/.cpan/build/CPAN-1.9600-jGTV10
DEL(2/10): /root/.cpan/build/File-Which-1.09-yoVWZC
DEL(3/10): /root/.cpan/build/Test-Script-1.07-aJWrXb
DEL(4/10): /root/.cpan/build/Probe-Perl-0.01-gzZ2eR
DEL(5/10): /root/.cpan/build/IPC-Run3-0.044-AP6EMp
DEL(6/10): /root/.cpan/build/Time-HiRes-1.9721-xxseE6
DEL(7/10): /root/.cpan/build/CPAN-Meta-YAML-0.003-wGtH0a
DEL(8/10): /root/.cpan/build/JSON-PP-2.27105-fvkwNa
DEL(9/10): /root/.cpan/build/Package-Constants-0.02-7Ms_OL
DEL(10/10): /root/.cpan/build/Module-Metadata-1.000004-tXKIBB
CPAN: Archive::Tar loaded ok (v1.82)
Uncompressed /root/.cpan/sources/authors/id/J/JE/JESSE/WWW-Mechanize-1.72.tar.gz successfully
Using Tar:/bin/tar xvf "WWW-Mechanize-1.72.tar":
Couldn't untar WWW-Mechanize-1.72.tar
CPAN: File::Temp loaded ok (v0.22)
CPAN: CPAN::Meta loaded ok (v2.112150)
Package seems to come without Makefile.PL.
  (The test -f "/root/.cpan/build/JESSE-DGrTh_/Makefile.PL" returned false.)
  Writing one on our own (setting NAME to WWWMechanize)
  Had problems unarchiving. Please build manually
Running make test
  Make had some problems, won't test
Running make install
  Make had some problems, won't install
Failed during this command:
 JESSE/WWW-Mechanize-1.72.tar.gz              : unwrapped NO -- untar failed

在我看来, $newdir 并未使用动态生成的 /root/.cpan/build/JESSE-DGrTh_//root/.cpan/build/JESSE 进行更新-KjCEMS/ 或系统生成的任何内容,或者至少该信息没有到达 tar 命令

有谁知道如何修复该机制而无需手动安装?

最佳答案

编辑:

我又遇到这个问题了。我所需要做的就是像 Keith Broughton 建议的那样释放一些内存。

<小时/>

我遇到了同样的问题,并试图找到这个问题的根本原因。我在此列出我的发现,以便其他 Google 员工不必在放弃之前花费几个小时...

对我来说解决这个问题的方法很简单,就是重新启动系统

我尝试过的事情:

  • 升级 CPAN。这也会失败并显示“无法解压”错误消息。如果您使用 cpan shell、“cpan -i CPAN”或“perl -MCPAN -e 'install CPAN'”进行尝试,这并不重要。我认为这些都不能解决问题,但是当您开始谷歌搜索时,所有这些都会被建议为可能的解决方案。
  • 用一个脚本替换 tar,该脚本会记录其输入,以检查调用时参数之一或 cwd 是否不正确。该脚本似乎从未被调用过。即使临时重命名/bin/tar 后,“无法解压”消息仍然相同。
  • 检查 CPAN/Tarzip.pm 并在写入“无法解压”消息的代码附近添加打印行。似乎 system() 调用失败并且 tar (或我的调试代码中的 ls)从未被调用。

然后我决定重新启动,这是一个选项,因为这不是一个实时系统。之后问题就消失了,并且第一次尝试就安装了 Perl 模块。

其他观察结果:

  • 该系统似乎对其余部分运行良好。您仍然可以连接到系统,可以编辑文件,重启后修改仍然存在。我预计这些中的任何一个都会在 Perl system() 调用开始失败之前很久就失败。
  • 快速扫描日志文件没有显示任何危险信号。

关于perl - CPAN Perl 模块安装程序找不到 tar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9363372/

相关文章:

r - 无法从 Github 自动和手动安装 gganimate 包

java - Linux Mint Java 和 JavaFX

linux - 使用 ./configure 命令安装程序时如何包含头文件

linux - 如何抑制从已加载模块代码中发出的 Perl 警告?

node.js - AWS Lambda 函数不接受 Twilio 模块

node.js - Lambda 函数作为 Node.js 模块

ruby - 了解 self.including 在 ruby​​ 中

linux - Perl - 自动将用户名和密码添加到 Linux 系统的脚本

php - 从 php 调用 perl?

Perl:获取不在给定列表中的IP地址范围