Установщик модулей CPAN Perl не находит tar-файл - PullRequest
10 голосов
/ 20 февраля 2012

Кажется, у меня проблема с конфигурацией при установке модулей Perl через CPAN, и я не знаю, как ее исправить:

[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

Если я запускаю ту же команду изнутри оболочки, я получаю дополнительную информацию:

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

Кто-нибудь знает, как я могу починить механизм, не прибегая к ручной установке?

Ответы [ 5 ]

12 голосов
/ 25 июля 2012

Редактировать:

Я снова столкнулся с этой проблемой.Все, что мне нужно было сделать - это освободить память, как предложил Кит Бротон.


Я столкнулся с той же проблемой и попытался найти причину этой проблемы.Я перечисляю здесь свои выводы, чтобы другим гуглерам не пришлось потратить пару часов, прежде чем сдаться ...

Для меня это решило просто перезагрузка системы .

То, что я пробовал:

  • Обновление CPAN.Это также может привести к ошибке с сообщением об ошибке «Не удалось распаковать».Мне не важно, используете ли вы его с помощью оболочки cpan, "cpan -i CPAN" или "perl -MCPAN -e 'install CPAN'".Я не думал, что что-то из этого решит проблему, но когда вы начинаете поискать в Google, все они предлагаются в качестве возможных решений.
  • Замена tar на скрипт, который регистрирует входные данные, чтобы проверить, является ли один из параметров или cwdневерно, когда это называется.Сценарий никогда не называется, кажется.Сообщение «Не удалось разархивировать» остается тем же, даже после временного переименования /bin/tar.
  • Проверка CPAN / Tarzip.pm и добавление строк печати рядом с кодом, который пишет «Не удалось разархивировать»сообщение.Кажется, что вызов system () завершается неудачно, и tar (или ls в моем отладочном коде) никогда не вызывается.

Затем я решил перезагрузиться, что было вариантом, потому что это не живая система.После этого проблема исчезла, и модули Perl были установлены с первой попытки.

Другие наблюдения:

  • Система, похоже, отлично работает для остальных.Вы все еще можете подключиться к системе, вы можете редактировать файлы, изменения все еще там после перезагрузки.Я ожидал бы, что любой из них потерпит неудачу задолго до того, как системный вызов Perl начнет терпеть неудачу.
  • При быстром сканировании файлов журнала не отображаются красные флажки.
8 голосов
/ 26 сентября 2012

Иногда это может происходить просто из-за недостатка доступной памяти. Попробуйте отключить некоторые запущенные службы и повторите попытку.

работал для меня: -)

3 голосов
/ 30 марта 2014

Обнаружена та же проблема с дроплетом DigitalOcean с 512 МБ ОЗУ под управлением Ubuntu (около 200 МБ свободно).

Мне удалось решить эту проблему путем перезагрузки компьютера, я попытался обновить свой CPAN с помощью 'install Bundle :: CPAN'. Это сработало для первых нескольких модулей, а затем снова появилось сообщение «Не удалось распаковать».

Перезагрузка позволила мне продвинуться в установке. Эти повторные перезагрузки, конечно, не являются оптимальным решением.

Учитывая, что в системе имеется свободная память, и проблема снова появляется после некоторого использования машины, похоже, это может быть связано с проблемой с общими библиотеками.

3 голосов
/ 10 августа 2013

Для устранения следующей ошибки:

Couldn't untar WWW-Mechanize-1.72.tar

Попробуйте установить Archive::Tar

На Centos 6.X:

yum install perl-Archive-Tar.x86_64
0 голосов
/ 24 февраля 2012

Выстрел в синем: раздел заполнен. Удалить некоторые файлы.

...