Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

duplicate perl environments

by Bejjan (Novice)
on Jul 13, 2012 at 16:30 UTC ( #981661=perlquestion: print w/ replies, xml ) Need Help??
Bejjan has asked for the wisdom of the Perl Monks concerning the following question:

Update: It was too risky to mess around with the system environment perl on a live system, so I decided to backup and reinstall everything.

Just wanted to point that out. /Jimmy

Hello Monks.

After a distribution upgrade of my ubuntu server from 8.x to 11.x I have ended up with two versions of perl in my system.

I have tried to figure out how to set the perl environment to specificly use one of them so that I can use CPAN correctly, but to no avail.

Note the paths /usr/bin/perl vs /usr/local/bin/perl

Provided is a perl -V for both versions installed.

/usr/bin/perl -V
Summary of my perl5 (revision 5 version 12 subversion 4) configuration +: Platform: osname=linux, osvers=2.6.24-28-server, archname=x86_64-linux-gnu-t +hread-multi uname='linux allspice 2.6.24-28-server #1 smp wed aug 18 21:17:51 +utc 2010 x86_64 x86_64 x86_64 gnulinux ' config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dccc +dlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/us +r/share/perl/5.12 -Darchlib=/usr/lib/perl/5.12 -Dvendorprefix=/usr -D +vendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/ +usr/local -Dsitelib=/usr/local/share/perl/5.12.4 -Dsitearch=/usr/loca +l/lib/perl/5.12.4 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/ +man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/m +an/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/se +nsible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil - +DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.12.4 + -des' hint=recommended, useposix=true, d_sigaction=define useithreads=define, usemultiplicity=define useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=und +ef use64bitint=define, use64bitall=define, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict +-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_S +OURCE -D_FILE_OFFSET_BITS=64', optimize='-O2 -g', cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing + -pipe -fstack-protector -I/usr/local/include' ccversion='', gccversion='4.6.1', gccosandvers='' intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=1 +6 ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', + lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='cc', ldflags =' -fstack-protector -L/usr/local/lib' libpth=/usr/local/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x +86_64-linux-gnu /usr/lib/../lib /lib /usr/lib libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt perllibs=-ldl -lm -lpthread -lc -lcrypt libc=, so=so, useshrplib=true, libperl=libperl.so.5.12.4 gnulibc_version='2.13' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib -fs +tack-protector' Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_64_ +BIT_ALL USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API Locally applied patches: DEBPKG:debian/arm_thread_stress_timeout - http://bugs.debian.org/5 +01970 Raise the timeout of ext/threads/shared/t/stress.t to accommoda +te DEBPKG:debian/cpan_config_path - Set location of CPAN::Config to / +etc/perl as /usr may not be DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS + default for modules installed from DEBPKG:debian/db_file_ver - http://bugs.debian.org/340047 Remove o +verly restrictive DB_File version check. DEBPKG:debian/doc_info - Replace generic man(1) instructions with +Debian-specific DEBPKG:debian/enc2xs_inc - http://bugs.debian.org/290336 Tweak enc +2xs to follow symlinks and ignore missing @INC directories. DEBPKG:debian/errno_ver - http://bugs.debian.org/343351 Remove Err +no version check due to upgrade problems with long-running DEBPKG:debian/libperl_embed_doc - http://bugs.debian.org/186778 No +te that libperl-dev package is required for embedded linking DEBPKG:fixes/respect_umask - Respect umask during installation DEBPKG:debian/writable_site_dirs - Set umask approproately for sit +e install directories DEBPKG:debian/extutils_set_libperl_path - EU:MM: Set location of l +ibperl.a to /usr/lib DEBPKG:debian/no_packlist_perllocal - Don't install .packlist or p +erllocal.pod for perl or vendor DEBPKG:debian/prefix_changes - Fiddle with *PREFIX and variables w +ritten to the makefile DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to th +e binary targets. DEBPKG:debian/instmodsh_doc - Debian policy doesn't install .packl +ist files for core or vendor. DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH +as per Debian policy. DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to / +etc/perl/Net as /usr may not be DEBPKG:debian/m68k_thread_stress - http://bugs.debian.org/517938 h +ttp://bugs.debian.org/495826 Disable some threads tests on m68k for n +ow due to missing TLS. DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian DEBPKG:debian/module_build_man_extensions - http://bugs.debian.org +/479460 Adjust Module::Build manual page extensions for the Debian Pe +rl DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the + list of libraries wanted to what we actually need. DEBPKG:fixes/net_smtp_docs - [rt.cpan.org #36038] http://bugs.debi +an.org/100195 Document the Net::SMTP 'Port' option DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp + skip include directories in /usr/local DEBPKG:debian/disable-zlib-bundling - Disable zlib bundling in Com +press::Raw::Zlib DEBPKG:debian/cpanplus_definstalldirs - http://bugs.debian.org/533 +707 Configure CPANPLUS to use the site directories by default. DEBPKG:debian/cpanplus_config_path - Save local versions of CPANPL +US::Config::System into /etc/perl. DEBPKG:fixes/autodie-flock - http://bugs.debian.org/543731 Allow f +or flock returning EAGAIN instead of EWOULDBLOCK on DEBPKG:fixes/cpanplus-without-home - http://bugs.debian.org/577011 + [rt.cpan.org #52988] Fix CPANPLUS test failures when HOME doesn't ex +ist DEBPKG:debian/deprecate-with-apt - http://bugs.debian.org/580034 P +oint users to Debian packages of deprecated core modules DEBPKG:fixes/hurd-ccflags - [a190e64] http://bugs.debian.org/58790 +1 [perl #92244] Make hints/gnu.sh append to $ccflags rather than over +riding them DEBPKG:debian/squelch-locale-warnings - http://bugs.debian.org/508 +764 Squelch locale warnings in Debian package maintainer scripts DEBPKG:fixes/lc-numeric-docs - [903eb63] [perl #78452] http://bugs +.debian.org/379329 LC_NUMERIC documentation fixes DEBPKG:fixes/lc-numeric-sprintf - [b3fd614] [perl #78632] http://b +ugs.debian.org/601549 Fix sprintf not to ignore LC_NUMERIC with const +ants DEBPKG:fixes/concat-stack-corruption - [e3393f5] [perl #78674] htt +p://bugs.debian.org/596105 Fix stack pointer corruption in pp_concat( +) with 'use encoding' DEBPKG:fixes/h2ph-gcc-4.5 - [8d66b3f] http://bugs.debian.org/59993 +3 h2ph fix for gcc 4.5 DEBPKG:fixes/module-build-home-directory - http://bugs.debian.org/ +624850 [rt.cpan.org #67893] Fix failing tilde test when run under a U +ID without a passwd entry DEBPKG:debian/patchlevel - http://bugs.debian.org/567489 List pack +aged patches for 5.12.4-4 in patchlevel.h DEBPKG:fixes/h2ph-multiarch - [e7ec705] http://bugs.debian.org/625 +808 [perl #90122] Make h2ph correctly search gcc include directories DEBPKG:fixes/odbm-multiarch - [3c998e0] http://bugs.debian.org/625 +634 [perl #90106] Fix ODBM_File failures on Ubuntu natty [multiarch] DEBPKG:fixes/re.t_sh4_timeout - [7c47ab2] [perl #92226] http://bug +s.debian.org/626125 Update lengthen time-out time for t/re/re.t. DEBPKG:fixes/index-tainting - [3b36395] http://bugs.debian.org/291 +450 [perl #64804] RT 64804: tainting with index() of a constant DEBPKG:fixes/document_makemaker_ccflags - http://bugs.debian.org/6 +28522 [rt.cpan.org #68613] Document that CCFLAGS should include $Conf +ig{ccflags} DEBPKG:fixes/sys-syslog-socket-timeout-kfreebsd.patch - http://bug +s.debian.org/627821 [rt.cpan.org #69997] Use a socket timeout on GNU/ +kFreeBSD to catch ICMP port unreachable DEBPKG:fixes/hurd-hints - http://bugs.debian.org/636609 Improve ge +neral GNU hints, needed for GNU/Hurd. DEBPKG:fixes/encode-heap-overflow - [e46d973] http://bugs.debian.o +rg/637376 Fix decode_xs n-byte heap-overflow security bug in Unicode. +xs Built under linux Compiled at Sep 6 2011 08:09:36 @INC: /etc/perl /usr/local/lib/perl/5.12.4 /usr/local/share/perl/5.12.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.12 /usr/share/perl/5.12 /usr/local/lib/site_perl .

/usr/local/bin/perl -V
Summary of my perl5 (revision 5 version 10 subversion 1) configuration +: Platform: osname=linux, osvers=2.6.32-27-server, archname=x86_64-linux uname='linux boiao.bejjan.net 2.6.32-27-server #49-ubuntu smp thu +dec 2 02:05:21 utc 2010 x86_64 gnulinux ' config_args='-ds -e' hint=recommended, useposix=true, d_sigaction=define useithreads=undef, usemultiplicity=undef useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=und +ef use64bitint=define, use64bitall=define, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-fno-strict-aliasing -pipe -fstack-protector -I +/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O2', cppflags='-fno-strict-aliasing -pipe -fstack-protector -I/usr/loca +l/include' ccversion='', gccversion='4.4.3', gccosandvers='' intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=1 +6 ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', + lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='cc', ldflags =' -fstack-protector -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib /lib64 /usr/lib64 libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat perllibs=-lnsl -ldl -lm -lcrypt -lutil -lc libc=/lib/libc-2.11.1.so, so=so, useshrplib=false, libperl=libperl +.a gnulibc_version='2.11.1' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' cccdlflags='-fPIC', lddlflags='-shared -O2 -L/usr/local/lib -fstac +k-protector' Characteristics of this binary (from libperl): Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP USE_64_ +BIT_ALL USE_64_BIT_INT USE_LARGE_FILES USE_PERLIO Built under linux Compiled at Jan 18 2011 20:18:50 @INC: /usr/local/lib/perl5/5.10.1/x86_64-linux /usr/local/lib/perl5/5.10.1 /usr/local/lib/perl5/site_perl/5.10.1/x86_64-linux /usr/local/lib/perl5/site_perl/5.10.1 .


Please advice.
Best regards,
Jimmy

Comment on duplicate perl environments
Select or Download Code
Re: duplicate perl environments
by frozenwithjoy (Curate) on Jul 13, 2012 at 16:32 UTC
    Perlbrew is awesome for multiple distributions on one machine.
      Hi, thanks for prompt reply.
      I have tried this, and it doesnt help much.
      root@boiao:~# perlbrew list
      * /usr/local/bin/perl (5.10.1)
        /usr/bin/perl (5.12.4)
      
      root@boiao:~# perlbrew switch /usr/bin/perl
      /usr/bin/perl is not installed
      
      root@boiao:~# perlbrew switch 5.12.4
      5.12.4 is not installed
      
      root@boiao:~# perlbrew switch perl-5.12.4
      perl-5.12.4 is not installed
      
      root@boiao:~# perlbrew switch perl_5.12.4
      perl_5.12.4 is not installed
      
      root@boiao:~# perlbrew switch /usr/bin/perl5.12.4 
      /usr/bin/perl5.12.4 is not installed
      
      root@boiao:~# perlbrew switch perl5.12.4 
      perl5.12.4 is not installed
      
      Followed the instructions to init perlbrew and add the path to ~/.bashrc and it lists the two installations and started a new shell, but I'm still not able to switch to 5.12.4

      Br, Jimmy
        With Perlbrew, go ahead and do fresh installs of perl. That way Perlbrew can easily switch between them.
        $ perlbrew available perl-5.17.1 perl-5.16.0 perl-5.14.2 perl-5.12.4 perl-5.10.1 perl-5.8.9 perl-5.6.2 perl5.005_04 perl5.004_05 perl5.003_07 $ perlbrew install perl-5.16.0

        Also, is this a machine that many people use or is it your personal machine? By default, perlbrew installs itself and perl in your home directory, so you don't need to ever use sudo when adding new modules; however, for our shared workhorse, I follow the docs at http://perlbrew.pl to install into /perlbrew so that everyone is able to use the modules I install.

        root@boiao:~# perlbrew list * /usr/local/bin/perl (5.10.1) /usr/bin/perl (5.12.4)

        Those aren't Perls that perlbrew has control over. I found this confusing the first time I used it. Once you install a Perl with perlbrew and switch to it, you see'll the list change. Something like this:

        * perl-5.12.4 /usr/local/bin/perl (5.10.1) /usr/bin/perl (5.12.4)

        When you do the installation, you're probably going to want a little more than

        perlbrew install perl-5.12.4

        perlbrew (CPAN) documents the general and install-specific options. Also take a look at the two config_args='...' in your perl -V outputs: they differ widely. The perl 5.12.4 INSTALL file may be useful in deciding which -D options to use. You can give each installation its own name with the --as option. So, your actual command might look a bit more like:

        perlbrew install -v perl-5.12.4 -Dusethreads -Duselargefiles --as perl +-5.12.4_custom

        You can now switch to the Perl you've installed. (More on this below.)

        If you didn't choose a custom name, your list will now look like what I showed above. If you did use --as, you'll now see

        * perl-5.12.4_custom /usr/local/bin/perl (5.10.1) /usr/bin/perl (5.12.4)

        I noticed you were trying many variations for the switch statement argument. Given the above, the correct incantations would be:

        perlbrew switch perl-5.12.4 # --as not used perlbrew switch perl-5.12.4_custom # --as used

        You may find this thread useful after installation: perlbrew: moving to a new perl with all current modules

        -- Ken

Re: duplicate perl environments
by zentara (Archbishop) on Jul 13, 2012 at 17:50 UTC
    For just 2 perls, switching a symbolic link would be easy. In my experience, Perl installs itself to wherever with a version string attached to the binary, like /usr/bin/perl5.14.1 or /usr/local/bin/perl5.16.1. So all you need to do is make a symbolic link called /usr/local/bin/perl to point to either of those actual binaries. With more than 2, perlbrew is probably wise. On almost all systems, /usr/local/bin is searched before /usr/bin in the PATH, so you just need to make your shebang line #!/usr/local/bin/perl and any use of "perl" on its own will follow the symbolic link found in the PATH.

    I'm not really a human, but I play one on earth.
    Old Perl Programmer Haiku ................... flash japh
Re: duplicate perl environments
by Anonymous Monk on Jul 14, 2012 at 12:14 UTC

    I guess I'm just an old curmudgeon but this is a trivial issue, just set your PATH evironment variable to point at the version of perl you want. Typically you'd edit .bashrc, maybe you want to edit the systemwide /etc/bash.bashrc.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://981661]
Front-paged by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (7)
As of 2014-08-23 07:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (172 votes), past polls