Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 26 Jan 2003 16:29:32 +0000
From:      Matthew Seaman <m.seaman@infracaninophile.co.uk>
To:        freebsd-questions@FreeBSD.ORG
Subject:   Re: Upgrading perl 5.6.1 to perl 5.8 via ports
Message-ID:  <20030126162932.GA53031@happy-idiot-talk.infracaninophi>
In-Reply-To: <20030126125036.M51472@xtaz.co.uk>
References:  <20030126125036.M51472@xtaz.co.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Jan 26, 2003 at 12:50:36PM +0000, Matt wrote:

> I am currently running freebsd 5.0-current and so do not have the perl 
> installation as core. Perl 5.6.1 was installed as a dependency when I 
> installed irssi from ports and everything has been using this since. I 
> assume because this is the version mentioned in /etc/make.conf:
> 
> PERL_VER=5.6.1
> PERL_VERSION=5.6.1
> PERL_ARCH=mach
> NOPERL=yo
> NO_PERL=yo
> NO_PERL_WRAPPER=yo
> 
> What I would like to do is remove the perl 5.6.1 port and install the perl 
> 5.8 port instead but before I go off and try this and break lots of things I 
> would like to know what I need to do to change all my currently installed 
> ports that have been installed to depend on perl 5.6.1 and the modules 
> in /usr/local/lib/perl5/site_perl/5.6.1/ so that they all work in 5.8.
> 
> Is it just a case of backing up site_perl and forcing a deinstall of the 
> 5.6.1 port and installing the 5.8 port and copying all the site_perl stuff 
> back but under /usr/local/lib/perl5/site_perl/5.8 instead? Or am I going to 
> need to reinstall all the ports that depend on perl? Plus I guess changing 
> the /etc/make.conf to 5.8 (though I guess the port will do this). Also am I 
> right to assume that the ports use the config in make.conf to decide which 
> version of perl they depend on?

Probably the best way to do this is as follows:

    0) Get a good backup of everything.  Install portupgrade.

    i) Make a list of all of the perl modules you've installed and
    check that they all depend on perl-5.6.1. Seeing as you're on 5.0
    and so using a ports version of perl rather than the version
    bundled with 4.x, you should see an explicit dependency on
    perl-5.6.1. You should therefore find most perl dependent things
    by doing:

        pkg_info -r perl-\*

    If you're on 4.x and using the system perl, you'll have to go
    about finding the dependencies by other means.  Eg. by:

        pkg_info -I p5-\*

    but beware of the oddities like MRTG or rrdtool that don't match
    that naming convention.

    Similarly make a list of any perl modules you've installed via
    CPAN.  (The 'snapshot' command in a CPAN shell will give you more
    than enough information for that purpose.) Ideally at the end of
    this job you should be able to identify all packages that have
    installed files under /usr/local/lib/perl5/{5.6.1,site_perl/5.6.1}
    --- it's those packages which will have to be re-installed to use
    the new perl.

    ii) Install the perl-5.8.0 port side-by-side with the perl-5.6.1
    port, and run the 'use.perl port' command from 5.8.0.  That should
    mean that:

        PERL_VER=5.8.0
        PERL_VERSION=5.8.0
        PERL_ARCH=mach
        NOPERL=yo
        NO_PERL=yo
        NO_PERL_WRAPPER=yo

    appears in /etc/make.conf --- you can delete any old use.perl
    stuff pointing at perl-5.6.1

    iii) Re-install all of the ports that installed files into a
    perl-5.6.1 specific directory.  You won't need to reinstall a port
    just because it gets its perl dependency just by containing some
    perl scripts, but you do need to re-install anything that installs
    .pm files or shared modules.  If you're unsure, reinstall it.  The
    easiest way to do this job is by using portupgrade(1):

        portupgrade -rNfix perl-5.6.1 perl-5.6.1

    and select 'y' or 'n' as it prompts you to upgrade each port.  The
    re-installed ports should now depend on perl-5.8.0.

    iv) Similarly, re-install any perl modules downloaded from CPAN.
    Nb. if possible use the ports version of a module in preference to
    the CPAN version --- even with BSDPAN, it's still easier to manage
    FreeBSD ports/pkgs.

    v) Forcibly remove the old perl-5.6.1 port:

        pkg_deinstall -f perl-5.6.1\*

    You've probably got some ports that are still listed as depending
    on perl-5.6.1, which you can interactively fix to depend on
    perl-5.8.0 by running:

        pkgdb -Fvu

    vi) Test thoroughly.  Clean up any remnant perl-5.6.1 directories
    under /usr/local/lib/perl5, and make sure that /etc/manpath.config
    references the right perl man directory.

That should get you up and running with 5.8.0.  

	Cheers,

	Matthew

-- 
Dr Matthew J Seaman MA, D.Phil.                       26 The Paddocks
                                                      Savill Way
PGP: http://www.infracaninophile.co.uk/pgpkey         Marlow
Tel: +44 1628 476614                                  Bucks., SL7 1TH UK

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030126162932.GA53031>