#perl #windows-7 #crash #cpan
#perl #windows-7 #сбой #cpan
Вопрос:
CPAN моей установки Strawberry perl раньше работал нормально. Некоторое время назад я установил Camelbox perl, чтобы получить его библиотеки GTK. Я исправил пути, чтобы не оставлять следов Camelbox, и добавил его библиотеки PERL5LIB. Это решило мои проблемы с GTK в Windows 7.
Сегодня мне пришлось снова использовать CPAN, но он необъяснимо вылетает. Запускается процессор Strawberry.
C:Userstim>cpan -v
C:strawberryperlbin/cpan script version 1.9, CPAN.pm version 1.9402
Когда я пытаюсь get
что-либо — включая уже установленные модули — CPAN успешно удаляет временный каталог и внезапно вылетает.
cpan> get List::Object
Running get for module 'List::Object'
Checksum for C:strawberrycpansourcesauthorsidMMSMSHILTONJList-Object-0.01.tar.gz ok
Scanning cache C:strawberrycpanbuild for sizes
............................................................................DONE
DEL(1/1): C:strawberrycpanbuildtmp-16240
C:Userstim>
Я получаю общую Windows perl.exe перестало работать всплывающее окно.
Я почти уверен, что это вызвано Camelbox. Что я могу сделать, чтобы исправить или отладить это? Я не нашел переключателей отладки CPAN.
Как и предлагал daxim, я запустил cpan в отладчике perl. Вот выходные данные в виде RAR (127 КБ) и открытого текста (10,8 МБ).
Ответ №1:
Я исправил пути, чтобы не оставлять следов Camelbox, и добавил его библиотеки PERL5LIB [в установку Strawberry]
Проблема, возникшая по вашей собственной вине, находится на уровне связывания C / object. Смешивать библиотеки XS для разных версий Perl — плохая идея.
Запустите клиент CPAN под управлением отладчика Perl, включите t
race, c
продолжайте, пока не произойдет сбой. Библиотека Perl, которая была загружена последней, указывает на неисправную библиотеку ссылок. Моя интуиция подозревает readline.
Сбой происходит в строке 63 Compress / Raw / Bzip2.pm, которая является XSLoader::load('Compress::Raw::Bzip2', $XS_VERSION);
. Это попытка загрузить XS Bzip2 DLL, точное название которой ускользает от меня, потому что у меня нет установки Strawberry для проверки. Переустановите эту библиотеку, не вызывая клиент CPAN, или попробуйте найти все части и удалить их.
Комментарии:
1. Спасибо, я попробую это. Я забыл упомянуть, что сбой происходит, даже если я удаляю Camelbox из PERL5LIB, поэтому Strawberry вообще не должен знать об этом.
2. Я добавил вывод трассировки к своему вопросу. ReadLine, похоже, не связан, но я не могу понять, что это.
3. Для справки: в итоге я использовал только (устаревший) Camelbox.