CPAN Perl modules installer not finding tar file

11,618

Solution 1

Edit:

I ran into this problem again. All I needed to do was free some memory like Keith Broughton suggested.


I ran into the same problem and tried to find the root cause for this problem. I'm listing my findings here so other Googlers don't have to spend a couple of hours before giving up...

What solved it for me was simply rebooting the system.

Things I tried:

  • Upgrading CPAN. This would also fail with the "Couldn't untar" error message. I doesn't matter if you try it using the cpan shell, "cpan -i CPAN" or "perl -MCPAN -e 'install CPAN'". I didn't think any of these would solve the problem, but when you start googling all these are suggested as possible solutions.
  • Replacing tar with a script that logs its input to check if one of the parameters or cwd is incorrect when it is called. The script is never called it seems. The "Couldn't untar" message is still the same, even after temporarily renaming /bin/tar.
  • Checking CPAN/Tarzip.pm and adding print lines near the code that writes the "Couldn't untar" message. It seems that the system() call fails and tar (or ls in my debug code) is never called.

Then I decided to reboot, which was an option because this is not a live system. After that the problem was gone and Perl modules installed on first try.

Other observations:

  • The system seems to work just fine for the rest. You can still connect to the system, you can edit files, modifications are still there after the reboot. I would expect any of these to fail long before a Perl system() call starts to fail.
  • A quick scan through the logfiles doesn't show any red flags.

Solution 2

Sometimes this can happen simply due to a lack of available memory. Try turning off some services that are running and try again.

Worked for me :-)

Solution 3

To resolve the following error:

Couldn't untar WWW-Mechanize-1.72.tar

Try install Archive::Tar

On centos 6.X:

yum install perl-Archive-Tar.x86_64

Solution 4

Found the same issue on DigitalOcean droplet with 512MB RAM running Ubuntu (with about 200MB free).

I was able to solve it by rebooting the machine, I tried updating my CPAN using 'install Bundle::CPAN'. It worked for the first few modules, and then the 'Couldn't untar' message appeared again.

Rebooting allowed me to progress in the installation. These repeated reboots are of course a less than optimal solution.

Given that the system has free memory, and the issue re-appears after using the machine for a little while, it seems to be this could be related to an issue with shared libraries.

Share:
11,618
user1164594
Author by

user1164594

Updated on June 05, 2022

Comments

  • user1164594
    user1164594 almost 2 years

    It seems I have a configuration problem when installing Perl modules through CPAN and I don't know how to correct it:

    [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
    

    The problem seems to be here:

    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
    

    The tar.gz file is indeed uncompressed and can be found here in a new directory:

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

    If I run the same command from inside the shell, I get some more info:

    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
    

    It seems to me that $newdir is not being updated with the dynamically generated /root/.cpan/build/JESSE-DGrTh_/ or /root/.cpan/build/JESSE-KjCEMS/ or whatever the system generates or at least that information is not getting to the tar command

    Does anyone know how I can fix the mechanism without having to resort to a manual install ?

  • greatwitenorth
    greatwitenorth over 11 years
    this was exactly my issue. After freeing up some memory, everything worked fine.
  • Matheus Araujo
    Matheus Araujo about 10 years
    It happened with me at Digital Ocean too. Just REBOOT the machine and it will work, magically.
  • Santosh Pillai
    Santosh Pillai about 5 years
    I had the same problem while installing by "install Moose ". Was seeing error Couldn't untar Moose-2.2011.tar. Rebooting the server fixed this. Thanks