2013-01-06 2 views
4

У меня есть Netgear ReadyNAS NV +, на котором я пытаюсь сделать что-то с помощью perl.Невозможно установить изображение :: ExifTool из-за «make test» висит

Поскольку установка perl у поставщика скомпилирована без uselargefiles -flag Я попытался скомпилировать/установить свою собственную версию для параллельной работы с системой.

Когда я впервые попытался скомпилировать perl на самой машине, у меня возникли проблемы, так как в системе не было много обычных системных инструментов, которые препятствуют правильному запуску Configure-script.

# ./Configure -des -Dprefix=$HOME/perl-5.16.2 
First let's make sure your kit is complete. Checking... 
./Configure: line 1986: split: command not found 
cat: /root/dload/perl-5.16.2/UU/x??: No such file or directory 
Locating common programs... 
I don't know where 'comm' is, and my life depends on it. 
Go find a public domain implementation or fix your PATH setting! 

Чтобы обойти, что я установил и использовал this cross-compiler построить Perl на другой машине. Я не мог понять, как перекрестно скомпилировать с помощью стандартного configure-скрипта из perl, поэтому я использовал this.

После того, что я мог бы просто скопировать мою новую жемчужно-папку на NAS и иметь дело, как следующие работы:

# ~/sparc-perl-5.16.2/bin/perl -version 

This is perl 5, version 16, subversion 2 (v5.16.2) built for sparc-linux 

Copyright 1987-2012, Larry Wall 

Perl may be copied only under the terms of either the Artistic License or the 
GNU General Public License, which may be found in the Perl 5 source kit. 

Complete documentation for Perl, including FAQ lists, should be found on 
this system using "man perl" or "perldoc perl". If you have access to the 
Internet, point your browser at http://www.perl.org/, the Perl Home Page. 

# ~/sparc-perl-5.16.2/bin/perl -e 'print "A string!\n";' 
A string! 

Так что в каком-то смысле я чувствую, что я был успешным в моих поисках, чтобы получить " мой "perl, работающий на машине.

У меня возникают проблемы, когда я пытаюсь установить дополнительные модули.

Я пробовал установить Изображение :: ExifTool с использованием cpanp (среди прочего), но установка никогда не заканчивается.

Сегодня я прибегал к установке вручную.

wget http://search.cpan.org/CPAN/authors/id/E/EX/EXIFTOOL/Image-ExifTool-9.12.tar.gz 
tar xzf Image-ExifTool-9.12.tar.gz 
cd Image-ExifTool-9.12 
~/sparc-perl-5.16.2/bin/perl Makefile.pl 
make 

Все работы, как предполагается.

, когда я получаю сделать испытаний однако он висит на неопределенный срок, как так:

# make test 
PERL_DL_NONLAZY=1 /root/sparc-perl-5.16.2/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/AFCP.t ........... 

Глядя на запущенные процессы, я думаю, это те, представляющие команду:

# ps aux | grep per[l] 
root  26187 0.5 0.7 12000 7808 pts/0 S+ 10:31 0:07 /root/sparc-perl-5.16.2/bin/perl -MExtUtils::Command::MM -e test_harness(0, 'blib/lib', 'blib/arch') t/AFCP.t t/AIFF.t t/APE.t t/ASF.t t/BigTIFF.t t/BMP.t t/CanonRaw.t t/Canon.t t/CanonVRD.t t/Casio.t t/DICOM.t t/DjVu.t t/DNG.t t/DV.t t/EXE.t t/ExifTool.t t/FLAC.t t/FlashPix.t t/Flash.t t/Font.t t/FotoStation.t t/FujiFilm.t t/Geotag.t t/GeoTiff.t t/GE.t t/GIF.t t/GIMP.t t/GPS.t t/HTML.t t/InDesign.t t/IPTC.t t/ITC.t t/Jpeg2000.t t/JVC.t t/Kodak.t t/KyoceraRaw.t t/Lang.t t/LNK.t t/M2TS.t t/Matroska.t t/MIE.t t/MIFF.t t/Minolta.t t/MP3.t t/MWG.t t/MXF.t t/Nikon.t t/Olympus.t t/OpenEXR.t t/Panasonic.t t/PDF.t t/Pentax.t t/PGF.t t/PhotoCD.t t/PhotoMechanic.t t/Photoshop.t t/PICT.t t/PNG.t t/PostScript.t t/PPM.t t/PSP.t t/QuickTime.t t/Radiance.t t/Real.t t/Ricoh.t t/RIFF.t t/RTF.t t/Sanyo.t t/Sigma.t t/Sony.t t/Unknown.t t/Vorbis.t t/Writer.t t/XMP.t t/ZIP.t 
root  26189 1.7 0.0  0 0 pts/0 Z+ 10:31 0:24 [perl] <defunct> 

Это полностью соответствует тому, что происходит, когда я пытаюсь выполнить ту же установку с помощью cpanp.

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

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

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

Что я делаю неправильно?

EDIT - составление на Mahcine:

Разобрался как получить Configure скрипт работает изначально на машине. Попробуем построить там, чтобы увидеть, будет ли это работать лучше. Это займет некоторое время, хотя, машина slow.

Чтобы иметь возможность запускать конфигурационные сценарии мне нужно:

GCC

apt-get install libc6-dev gcc gdb libtag1-dev uuid-dev 

Coreutils

apt-get install coreutils 

-Dcc = НКУ

./Configure -des -Dprefix=$HOME/perl-5.16.2 -Dcc=gcc 

EDIT2 - Заполнять не удалось:

Наиболее кратковременное успех никогда:

# make 
`sh cflags "optimize='-O2'" perlmini.o` -DPERL_IS_MINIPERL -DPERL_EXTERNAL_GLOB perlmini.c 
    CCCMD = gcc -DPERL_CORE -c -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -Wall 
In file included from perl.c:33: 
perl.h:699: error: conflicting types for `syscall' 
/usr/include/unistd.h:939: error: previous declaration of `syscall' 
ake: *** [perlmini.o] Error 1 

EDIT3 - Знакомимся вилка:

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

# cat test_forkwait.px 
#!/root/sparc-perl-5.16.2/bin/perl 

$pid = fork(); 
die if $pid < 0; 

$SIG{CHLD} = sub { warn "SIGCHLD\n"; }; 

if($pid) { 
    $status = waitpid($pid, 0); 
    warn "wait status: $status\n"; 
} else { 
    warn "Child starting\n"; 
    sleep 1; 
    warn "Child terminating\n"; 
} 

# ./test_forkwait.px 
Child starting 
Child terminating 
SIGCHLD 
wait status: 29913 

ответ

0

Оказалось, что тест не проходит. В любом случае, законченный с использованием модуля. Кажется, работает с моими файлами.

1

Я немного опоздал с этим комментарием, и у меня нет никаких идей о вашем «make test», но я хотел указать на Image :: ExifTool - чистый Perl, поэтому он не требует компиляции , Шаг установки так же просто, как копирование файлов распространения в соответствующие каталоги.

  • Phil
Смежные вопросы