perl – 由于’make test’挂起而无法安装Image :: ExifTool
我有一个Netgear ReadyNAS NV,我正在尝试用perl做一些事情.
由于来自供应商的perl安装是在没有uselargefiles-flag的情况下编译的,所以我试图编译/安装我自己的版本以与系统版本并行运行. 当我第一次尝试在机器上编译perl时,我遇到了麻烦,因为系统缺少很多常规系统工具,导致配置脚本无法正常运行. # ./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. 之后我可以将我的新perl文件夹复制到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工作机器. 当我尝试安装额外的模块时遇到麻烦. 我尝试使用cpanp(以及其他)安装Image :: ExifTool,但安装永远不会完成. 今天我尝试手动安装. 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/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尝试相同安装时发生的情况完全一致. 我想我可以运行make install并希望测试无法运行/完成不会出现太多问题,但这让我感到有点不安.我宁愿弄清楚出了什么问题. 我也觉得奇怪的是,测试挂起它的方式,我可以接受它失败了,但它只是以非生产性的方式继续运行感觉很奇怪. 因为这是我第一次从源代码构建perl并且第一次使用交叉编译器时,我不会惊讶地发现我做了一些非常错误的事情,任何帮助都可以确定非常受欢迎的内容. 我究竟做错了什么? 编辑 – 编译mahcine: 找出如何让Configure脚本在机器上本机工作. 为了能够运行我需要的配置脚本: GCC apt-get install libc6-dev gcc gdb libtag1-dev uuid-dev 的coreutils apt-get install coreutils -Dcc = GCC ./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 – testdriving fork: 尝试以下内容来验证fork是否正常工作.我相信测试是成功的,但我以前从未尝试过fork,所以如果我读错了输出,请告诉我. # cat test_forkwait.px #!/root/sparc-perl-5.16.2/bin/perl $pid = fork(); die if $pid < 0; $SIG{CHLD} = sub { warn "SIGCHLDn"; }; if($pid) { $status = waitpid($pid,0); warn "wait status: $statusn"; } else { warn "Child startingn"; sleep 1; warn "Child terminatingn"; } # ./test_forkwait.px Child starting Child terminating SIGCHLD wait status: 29913 解决方法
我对这个评论有点迟了,对你的“make test”没有任何想法,但我想指出Image :: ExifTool是纯Perl,所以它不需要编译.安装步骤就像将分发文件复制到正确的目录一样简单.
>菲尔 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |