http://www.perlmonks.org?node_id=439957

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

Fellow Monks of great Perlness:

I run FreeBSD 4.11-STABLE as my platform, and one of the things I've noticed is that there are a number of p5 ports for various modules that are on CPAN. Can someone enlighten me as to what differences are embedded in the ported version configs that aren't handled by CPAN? When CPAN versions bomb, I go look and almost always find a customized port in /usr/ports that does work.

TIA! :D

Replies are listed 'Best First'.
Re: FreeBSD Ports vs. CPAN
by perlfan (Vicar) on Mar 16, 2005 at 14:54 UTC
    I run FreeBSD whenever possible, and I can say that I have had mixed results with CPAN. I go with CPAN first, but if that doesn't work, I go for ports.

    There is no difference (b/w the same version) of a module installed via CPAN or ports, but the ports version is set up to install on a FreeBSD system. Beware, though, it uses whatever the system Perl is at the moment.

    Back when I was a FreeBSD n00b, I always upgraded to the latest Perl from ports, but would forget to run the "use.perl port" command to tell the system that the new Perl is now located in /usr/local; if you don't do this, you will encounter strange issues.

    So: try 1) CPAN, 2) ports, and 3) manual install as a last ditch effort

Re: FreeBSD Ports vs. CPAN
by tomhukins (Curate) on Mar 16, 2005 at 16:53 UTC

    The versions in ports deal with dependecies on non-Perl libraries. For example, p5-XML-LibXML depends on libxml2, but the CPAN module XML::LibXML has no way of specifying a dependency on the libxml shared library.

    If you use a perl binary installed through ports/packages, any CPAN module you install automatically generates a package using BSDPAN. Packages installed with BSDPAN list all files installed, but do not deal with any dependencies.

    Sometimes, ports may contain FreeBSD-specific patches, but port maintainers should always submit patches back to CPAN authors.

    See perldoc BSDPAN on your machine to find out if you use BSDPAN. pkg_info -I 'bsdpan-*' shows which packages BSDPAN has installed.

Re: FreeBSD Ports vs. CPAN
by include (Novice) on Mar 16, 2005 at 17:18 UTC
    Hello All,,
    I run various FreeBSD systems 4.X and 5.X since a couple of years and ever installed all perl modules via ports collection without any problem.
    I just remember for all kind of port install ou upgrade, its great to have a look to /usr/ports/UPDATING, this simple text file gets updated every cvsup(date) and can help prevent mutch problems even in upgrading Perl, i remember this one:

    20050201: AFFECTS: users of lang/perl5 and lang/perl5.8 ... (with the instructions to update)

    Now as perlfan says "... but would forget to run the "use.perl port" command to tell the system that the new Perl is now located in /usr/local ..."

    this only appens if you install the Perl package in the instalation of FreeBSD, and get a 5.6.2 installed,, in my case i step away this to install it later via ports (lang/Perl5.8) and everything runs automaticaly.

    I think it's nice to say too i run Perl 5.8.6 under Jails running mod_perl / Mason / Bricolage and friends :D

    To finalize, my practise is to have a ports collection up-to-date and always read the UPDATING.

    Just my 2 cents; got for it via ports :D
      Thank you all for the insights! I do have BSDPAN riding herd, though it doesn't seem to tickle the package listing correctly ("no origin recorded"). I don't check UPDATING as often as I should, though I CVSup fairly regularly. Thanks for the tweak!!!
        There are many tips to fix your database of instaled ports/packages, lets rock.
        (that message i think he is saying you dont have Perl installed via ports)

        a very nice app to help you maintainning the installed ports is sysutils/portupgrade. just:
        #cd /usr/ports/sysutils/portupgrade ; make install clean ; rehash ; portversion | grep '<'
        (read UPDATING) and then
        #portupgrade -aR
        finaly fix the database
        #pkgdb -Fu

        #pkg_info perl-5\* | more
        (#ls -l /var/db/pkg/perl*)
        and you can see if you have Perl installed by ports/packages.
        if you have Perl installed but want to force a reinstall, do:
        #cd /usr/ports/lang/perl5.8 ; make FORCE_PKG_REGISTER=yes install
        read the last output normaly the file pkg_desc or message is outputed in he end of the instalation of any port. i recomend you take a look at http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports.html

        if you get loss just come to #FreeBSD @freenode.

        god PIP :) (port install party)