http://qs321.pair.com?node_id=708328

shoness has asked for the wisdom of the Perl Monks concerning the following question:

Hi,

I have the Perl 5.8.1 installation that comes with MacOS 10.3.9. I'd like to leave it intact. I'm installing new modules from CPAN, configured via PREFIX, into an out-of-the-way location. That location is first in my $PERL5LIB environment variable.

I attempted to install (via CPAN) HTTP::Body. This module requires File::Temp to be at least version 0.14. My PERL installation only has version 0.13 (in /System/Library/Perl/5.8.1/File/Temp.pm).

No problem. CPAN downloads the current File::Temp version (0.20) and successfully builds it and installs it into the expected location pointed to by the PREFIX. It then re-attempts to build HTTP::Body which fails with the same error:

# Error: File::Temp version 0.14 required--this is only version 0 +.13 at /Users/shoness/.cpan/build/HTTP-Body-1.04/blib/lib/HTTP/Body/O +ctetStream.pm line 7.

My scripts are able to pull other modules out via $PERL5LIB. "perl -V" shows it at the front of @INC after all. Are core modules different somehow? How can I override? Do I need to install a second (newer) Perl? Is this a Mac-specific thing?

mac$ cpan Terminal does not support AddHistory. cpan shell -- CPAN exploration and modules installation (v1.76) ReadLine support available (try 'install Bundle::CPAN') cpan> install HTTP::Body CPAN: Storable loaded ok Going to read /Users/shoness/.cpan/Metadata Database was generated on Sun, 31 Aug 2008 05:03:10 GMT Running install for module HTTP::Body Running make for A/AG/AGRUNDMA/HTTP-Body-1.04.tar.gz CPAN: Digest::MD5 loaded ok CPAN: Compress::Zlib loaded ok Checksum for /Users/shoness/.cpan/sources/authors/id/A/AG/AGRUNDMA/HTT +P-Body-1.04.tar.gz ok Scanning cache /Users/shoness/.cpan/build for sizes HTTP-Body-1.04/ HTTP-Body-1.04/Changes HTTP-Body-1.04/lib/ HTTP-Body-1.04/lib/HTTP/ HTTP-Body-1.04/lib/HTTP/Body/ HTTP-Body-1.04/lib/HTTP/Body/MultiPart.pm HTTP-Body-1.04/lib/HTTP/Body/OctetStream.pm HTTP-Body-1.04/lib/HTTP/Body/UrlEncoded.pm HTTP-Body-1.04/lib/HTTP/Body/XForms.pm HTTP-Body-1.04/lib/HTTP/Body/XFormsMultipart.pm HTTP-Body-1.04/lib/HTTP/Body.pm HTTP-Body-1.04/Makefile.PL HTTP-Body-1.04/MANIFEST HTTP-Body-1.04/META.yml HTTP-Body-1.04/README HTTP-Body-1.04/t/ HTTP-Body-1.04/t/01use.t HTTP-Body-1.04/t/02pod.t HTTP-Body-1.04/t/03podcoverage.t HTTP-Body-1.04/t/04critic.rc HTTP-Body-1.04/t/04critic.t HTTP-Body-1.04/t/04multipart.t HTTP-Body-1.04/t/05urlencoded.t HTTP-Body-1.04/t/06octetstream.t HTTP-Body-1.04/t/07xforms.t HTTP-Body-1.04/t/data/ HTTP-Body-1.04/t/data/multipart/ HTTP-Body-1.04/t/data/multipart/001-content.dat HTTP-Body-1.04/t/data/multipart/001-headers.yml HTTP-Body-1.04/t/data/multipart/001-results.yml HTTP-Body-1.04/t/data/multipart/002-content.dat HTTP-Body-1.04/t/data/multipart/002-headers.yml HTTP-Body-1.04/t/data/multipart/002-results.yml HTTP-Body-1.04/t/data/multipart/003-content.dat HTTP-Body-1.04/t/data/multipart/003-headers.yml HTTP-Body-1.04/t/data/multipart/003-results.yml HTTP-Body-1.04/t/data/multipart/004-content.dat HTTP-Body-1.04/t/data/multipart/004-headers.yml HTTP-Body-1.04/t/data/multipart/004-results.yml HTTP-Body-1.04/t/data/multipart/005-content.dat HTTP-Body-1.04/t/data/multipart/005-headers.yml HTTP-Body-1.04/t/data/multipart/005-results.yml HTTP-Body-1.04/t/data/multipart/006-content.dat HTTP-Body-1.04/t/data/multipart/006-headers.yml HTTP-Body-1.04/t/data/multipart/006-results.yml HTTP-Body-1.04/t/data/multipart/007-content.dat HTTP-Body-1.04/t/data/multipart/007-headers.yml HTTP-Body-1.04/t/data/multipart/007-results.yml HTTP-Body-1.04/t/data/multipart/008-content.dat HTTP-Body-1.04/t/data/multipart/008-headers.yml HTTP-Body-1.04/t/data/multipart/008-results.yml HTTP-Body-1.04/t/data/multipart/009-content.dat HTTP-Body-1.04/t/data/multipart/009-headers.yml HTTP-Body-1.04/t/data/multipart/009-results.yml HTTP-Body-1.04/t/data/multipart/010-content.dat HTTP-Body-1.04/t/data/multipart/010-headers.yml HTTP-Body-1.04/t/data/multipart/010-results.yml HTTP-Body-1.04/t/data/multipart/011-content.dat HTTP-Body-1.04/t/data/multipart/011-headers.yml HTTP-Body-1.04/t/data/multipart/011-results.yml HTTP-Body-1.04/t/data/multipart/012-content.dat HTTP-Body-1.04/t/data/multipart/012-headers.yml HTTP-Body-1.04/t/data/multipart/012-results.yml HTTP-Body-1.04/t/data/octetstream/ HTTP-Body-1.04/t/data/octetstream/001-content.dat HTTP-Body-1.04/t/data/octetstream/001-headers.yml HTTP-Body-1.04/t/data/octetstream/001-results.dat HTTP-Body-1.04/t/data/octetstream/002-content.dat HTTP-Body-1.04/t/data/octetstream/002-headers.yml HTTP-Body-1.04/t/data/octetstream/002-results.dat HTTP-Body-1.04/t/data/octetstream/003-content.dat HTTP-Body-1.04/t/data/octetstream/003-headers.yml HTTP-Body-1.04/t/data/octetstream/003-results.dat HTTP-Body-1.04/t/data/urlencoded/ HTTP-Body-1.04/t/data/urlencoded/001-content.dat HTTP-Body-1.04/t/data/urlencoded/001-headers.yml HTTP-Body-1.04/t/data/urlencoded/001-results.yml HTTP-Body-1.04/t/data/urlencoded/002-content.dat HTTP-Body-1.04/t/data/urlencoded/002-headers.yml HTTP-Body-1.04/t/data/urlencoded/002-results.yml HTTP-Body-1.04/t/data/urlencoded/003-content.dat HTTP-Body-1.04/t/data/urlencoded/003-headers.yml HTTP-Body-1.04/t/data/urlencoded/003-results.yml HTTP-Body-1.04/t/data/urlencoded/004-content.dat HTTP-Body-1.04/t/data/urlencoded/004-headers.yml HTTP-Body-1.04/t/data/urlencoded/004-results.yml HTTP-Body-1.04/t/data/urlencoded/005-content.dat HTTP-Body-1.04/t/data/urlencoded/005-headers.yml HTTP-Body-1.04/t/data/urlencoded/005-results.yml HTTP-Body-1.04/t/data/urlencoded/006-content.dat HTTP-Body-1.04/t/data/urlencoded/006-headers.yml HTTP-Body-1.04/t/data/urlencoded/006-results.yml HTTP-Body-1.04/t/data/xforms/ HTTP-Body-1.04/t/data/xforms/001-content.dat HTTP-Body-1.04/t/data/xforms/001-headers.yml HTTP-Body-1.04/t/data/xforms/001-results.yml HTTP-Body-1.04/t/data/xforms/002-content.dat HTTP-Body-1.04/t/data/xforms/002-headers.yml HTTP-Body-1.04/t/data/xforms/002-results.yml Removing previously used /Users/shoness/.cpan/build/HTTP-Body-1.04 CPAN.pm: Going to build A/AG/AGRUNDMA/HTTP-Body-1.04.tar.gz Checking if your kit is complete... Looks good Warning: prerequisite File::Temp 0.14 not found. We have 0.13. Writing Makefile for HTTP::Body ---- Unsatisfied dependencies detected during [A/AG/AGRUNDMA/HTTP-Body +-1.04.tar.gz] ----- File::Temp Shall I follow them and prepend them to the queue of modules we are processing right now? [yes] yes Running make test Delayed until after prerequisites Running make install Delayed until after prerequisites Running install for module File::Temp Running make for T/TJ/TJENNESS/File-Temp-0.20.tar.gz Checksum for /Users/shoness/.cpan/sources/authors/id/T/TJ/TJENNESS/Fil +e-Temp-0.20.tar.gz ok File-Temp-0.20/ File-Temp-0.20/._ChangeLog File-Temp-0.20/ChangeLog File-Temp-0.20/Makefile.PL File-Temp-0.20/MANIFEST File-Temp-0.20/META.yml File-Temp-0.20/misc/ File-Temp-0.20/misc/benchmark.pl File-Temp-0.20/misc/results.txt File-Temp-0.20/._README File-Temp-0.20/README File-Temp-0.20/t/ File-Temp-0.20/t/cmp.t File-Temp-0.20/t/._fork.t File-Temp-0.20/t/fork.t File-Temp-0.20/t/._lock.t File-Temp-0.20/t/lock.t File-Temp-0.20/t/mktemp.t File-Temp-0.20/t/object.t File-Temp-0.20/t/posix.t File-Temp-0.20/t/security.t File-Temp-0.20/t/seekable.t File-Temp-0.20/t/tempfile.t File-Temp-0.20/._Temp.pm File-Temp-0.20/Temp.pm Removing previously used /Users/shoness/.cpan/build/File-Temp-0.20 CPAN.pm: Going to build T/TJ/TJENNESS/File-Temp-0.20.tar.gz Checking if your kit is complete... Looks good Writing Makefile for File::Temp cp Temp.pm blib/lib/File/Temp.pm cp ._Temp.pm blib/lib/File/._Temp.pm Manifying blib/man3/File::Temp.3pm /usr/bin/make -- OK Running make test PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_h +arness(0, 'blib/lib', 'blib/arch')" t/*.t t/cmp.........ok + t/fork........ok + t/lock........ok + t/mktemp......ok + t/object......ok + t/posix.......ok + t/security....ok + t/seekable....ok + t/tempfile....ok + All tests successful. Files=9, Tests=106, 22 wallclock secs ( 1.73 cusr + 0.41 csys = 2.14 + CPU) /usr/bin/make test -- OK Running make install Writing /Users/shoness/perl/System/Library/Perl/5.8.1/darwin-thread-mu +lti-2level/auto/File/Temp/.packlist Appending installation info to /Users/shoness/perl/System/Library/Perl +/5.8.1/darwin-thread-multi-2level/perllocal.pod /usr/bin/make install -- OK Running make for A/AG/AGRUNDMA/HTTP-Body-1.04.tar.gz Is already unwrapped into directory /Users/shoness/.cpan/build/HTTP- +Body-1.04 CPAN.pm: Going to build A/AG/AGRUNDMA/HTTP-Body-1.04.tar.gz cp lib/HTTP/Body/OctetStream.pm blib/lib/HTTP/Body/OctetStream.pm cp lib/HTTP/Body/XForms.pm blib/lib/HTTP/Body/XForms.pm cp lib/HTTP/Body/UrlEncoded.pm blib/lib/HTTP/Body/UrlEncoded.pm cp lib/HTTP/Body/XFormsMultipart.pm blib/lib/HTTP/Body/XFormsMultipart +.pm cp lib/HTTP/Body.pm blib/lib/HTTP/Body.pm cp lib/HTTP/Body/MultiPart.pm blib/lib/HTTP/Body/MultiPart.pm Manifying blib/man3/HTTP::Body::XFormsMultipart.3pm Manifying blib/man3/HTTP::Body::MultiPart.3pm Manifying blib/man3/HTTP::Body::XForms.3pm Manifying blib/man3/HTTP::Body::OctetStream.3pm Manifying blib/man3/HTTP::Body::UrlEncoded.3pm Manifying blib/man3/HTTP::Body.3pm /usr/bin/make -- OK Running make test PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_h +arness(0, 'blib/lib', 'blib/arch')" t/*.t t/01use............NOK 1# Failed test (t/01use.t at line 8) + # Tried to use 'HTTP::Body'. # Error: File::Temp version 0.14 required--this is only version 0 +.13 at /Users/shoness/.cpan/build/HTTP-Body-1.04/blib/lib/HTTP/Body/O +ctetStream.pm line 7. # BEGIN failed--compilation aborted at /Users/shoness/.cpan/build/HTTP +-Body-1.04/blib/lib/HTTP/Body/OctetStream.pm line 7. # Compilation failed in require at /Users/shoness/.cpan/build/HTTP-Bod +y-1.04/blib/lib/HTTP/Body.pm line 17. # Compilation failed in require at (eval 1) line 2. # Looks like you failed 1 tests of 1. t/01use............dubious + Test returned status 1 (wstat 256, 0x100) DIED. FAILED test 1 Failed 1/1 tests, 0.00% okay t/02pod............skipped all skipped: Test::Pod 1.14 required t/03podcoverage....skipped all skipped: Test::Pod::Coverage 1.04 required t/04critic.........skipped all skipped: Critic test only for developers. t/04multipart......File::Temp version 0.14 required--this is only vers +ion 0.13 at /Users/shoness/.cpan/build/HTTP-Body-1.04/blib/lib/HTTP/B +ody/OctetStream.pm line 7. BEGIN failed--compilation aborted at /Users/shoness/.cpan/build/HTTP-B +ody-1.04/blib/lib/HTTP/Body/OctetStream.pm line 7. Compilation failed in require at /Users/shoness/.cpan/build/HTTP-Body- +1.04/blib/lib/HTTP/Body.pm line 17. Compilation failed in require at t/04multipart.t line 9. BEGIN failed--compilation aborted at t/04multipart.t line 9. # Looks like your test died before it could output anything. t/04multipart......dubious + Test returned status 255 (wstat 65280, 0xff00) DIED. FAILED tests 1-98 Failed 98/98 tests, 0.00% okay t/05urlencoded.....File::Temp version 0.14 required--this is only vers +ion 0.13 at /Users/shoness/.cpan/build/HTTP-Body-1.04/blib/lib/HTTP/B +ody/OctetStream.pm line 7. BEGIN failed--compilation aborted at /Users/shoness/.cpan/build/HTTP-B +ody-1.04/blib/lib/HTTP/Body/OctetStream.pm line 7. Compilation failed in require at /Users/shoness/.cpan/build/HTTP-Body- +1.04/blib/lib/HTTP/Body.pm line 17. Compilation failed in require at t/05urlencoded.t line 10. BEGIN failed--compilation aborted at t/05urlencoded.t line 10. # Looks like your test died before it could output anything. t/05urlencoded.....dubious + Test returned status 255 (wstat 65280, 0xff00) DIED. FAILED tests 1-31 Failed 31/31 tests, 0.00% okay t/06octetstream....File::Temp version 0.14 required--this is only vers +ion 0.13 at /Users/shoness/.cpan/build/HTTP-Body-1.04/blib/lib/HTTP/B +ody/OctetStream.pm line 7. BEGIN failed--compilation aborted at /Users/shoness/.cpan/build/HTTP-B +ody-1.04/blib/lib/HTTP/Body/OctetStream.pm line 7. Compilation failed in require at /Users/shoness/.cpan/build/HTTP-Body- +1.04/blib/lib/HTTP/Body.pm line 17. Compilation failed in require at t/06octetstream.t line 7. BEGIN failed--compilation aborted at t/06octetstream.t line 7. # Looks like your test died before it could output anything. t/06octetstream....dubious + Test returned status 255 (wstat 65280, 0xff00) DIED. FAILED tests 1-12 Failed 12/12 tests, 0.00% okay t/07xforms.........File::Temp version 0.14 required--this is only vers +ion 0.13 at /Users/shoness/.cpan/build/HTTP-Body-1.04/blib/lib/HTTP/B +ody/OctetStream.pm line 7. BEGIN failed--compilation aborted at /Users/shoness/.cpan/build/HTTP-B +ody-1.04/blib/lib/HTTP/Body/OctetStream.pm line 7. Compilation failed in require at /Users/shoness/.cpan/build/HTTP-Body- +1.04/blib/lib/HTTP/Body.pm line 17. Compilation failed in require at t/07xforms.t line 9. BEGIN failed--compilation aborted at t/07xforms.t line 9. # Looks like your test died before it could output anything. t/07xforms.........dubious + Test returned status 255 (wstat 65280, 0xff00) DIED. FAILED tests 1-12 Failed 12/12 tests, 0.00% okay Failed Test Stat Wstat Total Fail Failed List of Failed ---------------------------------------------------------------------- +--------- t/01use.t 1 256 1 1 100.00% 1 t/04multipart.t 255 65280 98 196 200.00% 1-98 t/05urlencoded.t 255 65280 31 62 200.00% 1-31 t/06octetstream.t 255 65280 12 24 200.00% 1-12 t/07xforms.t 255 65280 12 24 200.00% 1-12 3 tests skipped. Failed 5/8 test scripts, 37.50% okay. 154/154 subtests failed, 0.00% o +kay. make: *** [test_dynamic] Error 2 /usr/bin/make test -- NOT OK Running make install make test had returned bad status, won't install without force cpan> quit Terminal does not support GetHistory. Lockfile removed. mac$ perl -V Summary of my perl5 (revision 5.0 version 8 subversion 1 RC3) configur +ation: Platform: osname=darwin, osvers=7.0, archname=darwin-thread-multi-2level uname='darwin b43.apple.com 7.0 darwin kernel version 8.3.0: mon o +ct 3 20:04:04 pdt 2005; root:xnu-792.6.22.obj~2release_ppc power maci +ntosh powerpc ' config_args='-ds -e -Dprefix=/usr -Dccflags=-g -pipe -Dldflags=- +Dman3ext=3pm -Duseithreads -Duseshrplib' hint=recommended, useposix=true, d_sigaction=define usethreads=define use5005threads=undef useithreads=define usemulti +plicity=define useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-g -pipe -pipe -fno-common -DPERL_DARWIN -no-cp +p-precomp -fno-strict-aliasing -I/usr/local/include', optimize='-Os', cppflags='-no-cpp-precomp -g -pipe -pipe -fno-common -DPERL_DARWIN + -no-cpp-precomp -fno-strict-aliasing -I/usr/local/include' ccversion='', gccversion='3.3 20030304 (Apple Computer, Inc. build + 1495)', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', + lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags ='-L/usr/local/lib' libpth=/usr/local/lib /usr/lib libs=-ldbm -ldl -lm -lc perllibs=-ldl -lm -lc libc=/usr/lib/libc.dylib, so=dylib, useshrplib=true, libperl=libpe +rl.dylib gnulibc_version='' Dynamic Linking: dlsrc=dl_dyld.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' ' cccdlflags=' ', lddlflags='-bundle -undefined dynamic_lookup -L/us +r/local/lib' Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES PERL +_IMPLICIT_CONTEXT Locally applied patches: RC3 SPRINTF0 - fixes for sprintf formatting issues - CVE-2005-3962 Built under darwin Compiled at Oct 13 2006 23:53:57 %ENV: PERL5LIB="/Users/shoness/perl/Library/Perl/5.8.1" @INC: /Users/shoness/perl/Library/Perl/5.8.1/darwin-thread-multi-2level /Users/shoness/perl/Library/Perl/5.8.1 /System/Library/Perl/5.8.1/darwin-thread-multi-2level /System/Library/Perl/5.8.1 /Library/Perl/5.8.1/darwin-thread-multi-2level /Library/Perl/5.8.1 /Library/Perl /Network/Library/Perl/5.8.1/darwin-thread-multi-2level /Network/Library/Perl/5.8.1 /Network/Library/Perl .

Thanks!
Cheers!

Replies are listed 'Best First'.
Re: CPAN Update of File::Temp Doesn't Update
by shmem (Chancellor) on Sep 02, 2008 at 08:54 UTC
    CPAN downloads the current File::Temp version (0.20) and successfully builds it and installs it into the expected location pointed to by the PREFIX. It then re-attempts to build HTTP::Body which fails with the same error

    This looks like %ISA isn't updated after building and installing the new File::Temp. CPAN requires File::Temp to get at its version, downloads the new package, builds and installs it, then goes to build HTTP::Body - still having the old File::Temp loaded.

    Quitting the CPAN shell after having installed File::Temp and invoking it again to install HTTP::Body should work.

      ++ for the help! Your suggestion doesn't change anything however! I leave CPAN, open new shells, even reboot the machine, but the results persist.

      This behaviour must be a Mac thing. Perhaps they are caching or somehow using a pre-built DLL for the Perl modules...?

      I suppose I'll just have to make a new Perl installation... Strange...

Re: CPAN Update of File::Temp Doesn't Update
by Anonymous Monk on Sep 02, 2008 at 06:07 UTC
    My scripts are able to pull other modules out via $PERL5LIB. "perl -V" shows it at the front of @INC after all. Are core modules different somehow? How can I override? Do I need to install a second (newer) Perl? Is this a Mac-specific thing?

    No, core modules (like File::Temp) aren't different, but some pragmas are (strict, warnings ...). PERL5LIB works as long as the path exists (absolute path), and its readable, and tainting is off. Example