0

我正在尝试为 RHEL6 构建perl-Heap-Priority。奇怪的是当我运行 cpan2rpm Heap::Priority它时显示如下

...
Tarball extraction: [/root/rpm/SOURCES/Heap-Priority-0.01.tar.gz]
Can't stat /tmp/CldQkErG6r/18:51: No such file or directory
 at /usr/bin/cpan2rpm line 392
get_meta(): No such file or directory at /usr/bin/cpan2rpm line 396.
...

实际上,不会创建此临时文件夹。买为什么?我的 tmp 文件夹权限是 777

drwxrwxrwt.   3 root root  4096 May 29 16:35 tmp
4

2 回答 2

1

已知问题,请参阅https://rt.cpan.org/Ticket/Display.html?id=72421。问题是输出的用户列中的空间。

$ tar -tzvf $HOME/rpmbuild/SOURCES/Heap-Priority-0.01.tar.gz |head -1
drwxr-xr-x James Freeman/544 0 2002-05-07 14:51 Heap-Priority-0.01/

应用以下补丁来解决此模块的问题。要获取名称,我们访问的是最后一列,而不是访问第五列。我不知道这个补丁可能会破坏什么,但它应该比原始代码平均错误更少。

 diff --git a/cpan2rpm b/cpan2rpm
 index 28e8b01..6a36b68 100755
 --- a/cpan2rpm
 +++ b/cpan2rpm
 @@ -1259,7 +1259,7 @@ sub untar($) {
          ;

      chomp($_ = qx/$cmd/);
 -    $_ = (split)[5] unless $zip;
 +    $_ = (split)[-1] unless $zip;
      $dst .= "/$1" if m|^(\S+)/?|;
      $dst =~ s|/*$||;    # path shouldn't end in / or tardir gets wiped
      $dst =~ s|\./||;    # paths in tarballs shouldn't be relative

您可以通过使用调试器自己发现所有这些。学会使用这个工具,它是无价的。

于 2012-05-29T17:25:16.727 回答
0

我认为这可能是一种更清洁的方法:

--- /usr/bin/cpan2rpm.orig  2017-10-20 14:45:57.000000000 -0700
+++ /usr/bin/cpan2rpm   2017-10-23 12:29:07.006118950 -0700
@@ -1258,7 +1258,7 @@

     my $cmd = $zip
         ? "unzip -l $_ | grep -P -o '\\S+/\$' |tail -1"
-        : "tar -t${z}vf $_ |head -1"
+        : "tar --numeric-owner -t${z}vf $_ |head -1"
         ;

     chomp($_ = qx/$cmd/);
于 2017-10-23T19:34:02.550 回答