How do you update your system Perl?

Although I'm an advocate of configuring and installing your own perl while leaving the system perl alone, I'd like to have a list of the various ways particular distros and package managers do it for the system perl.

  1. The package manager program (e.g. yum, apt-get)
  2. The package name(s) to get the standard distribution, including the docs, ExtUtils::MakeMaker, and everything else
  3. Does that package manager allows you to configure, per-package, the installation location.
  4. Discovering module packages (what is the name, version of the module, etc)
  5. Your distro version, if it matters (do some distros change package managers)?

I can make a chart here if people chime in with what they know about their system. I've seen scattered hints, but no where that pulls this all together for the various major distros.

6 Comments

I too tend to leave system Perl alone and use perlbrew, local::lib and friends for development, I use Gentoo as my main distro...

1. Package manager: Paludis (command line client is cave)
2. Package name: dev-lang/perl
3. I *think* it's possible but highly non-trivial
4. There is a convention for naming distro packaged modules, although it's not as strictly observed as Debian's, e.g. DateTime::Locale is dev-perl/DateTime-Locale - 'cave show dev-perl/DateTime-Locale' spits out various bits of meta data about available versions of the module including name, version, homepage etc.
5. Gentoo is a rolling release (not versioned), there is a choice of package managers of which Paludis/cave is a popular non-standard choice, Portage/emerge is default, although package names and available meta information don't vary across package managers

Hth

did anyone ever tell you that commenting with OpenID is broken? at least it doesn't work with my typekey, very annoying and a definite turn off. Had to register extra for here -- it only says

An error occurred: The sign-in attempt was not successful; please try again.

found quite some google results on that. Hope that can be fixed but looking at the bug tracker nobody cares?


Anyway let me do what I originally wanted and add a nice hint. For all those suseies out there, you can use

zypper wp perl(ExtUtils::MakeMaker)

to find out if there is any package providing the makemaker (happens to be in base perl package, of course). Caveat, it only works for repositories that you have configured, it won't tell you about remote repos. Unfortunately the "webpin" has been down forever so at the moment there is no way (known to me) query this.

The naming scheme though is usually following the perl-ExtUtils-MakeMaker pattern, so try

http://software.opensuse.org/search?q=MooseX-Declare

You will most definitely want to add the devel:languages:perl repository tree, which can be conveniently done using the 1click web installer, too.

Another very nice thing imho is the GUI package manager, check the Patterns/ Perl development. The command line to look at it is

zypper if -t pattern devel_perl

and don't forget to install the perl-doc package!

Use ArchLinux on my laptop and on my Linode.

I let pacman manage and update my system perl as it sees fit. In addition, I have added a few optional packages such as CGI::Simple via pacman. Otherwise, I keep my own perls and module directories.

See also Perl Package Guidelines.

On Windows, I occasionally install the most recent version of ActivePerl. I use ppm to keep packages up-to-date and add modules to the system Perl. In addition, from time-to-time, I'll update my Strawberry and Cygwin perls as well as (much more rarely) build my own.

On my Mac, I am using perlbrew exclusively.

  1. The package manager program (e.g. yum, apt-get)

    dpkg, dpkg-*

    The dpkg tools are low-level package tools that AFAIK work only on single packages that you have on hand. These are the tools used to build packages from a source tree into a .deb file, then install that .deb file. Or to install downloaded .deb files (like dropbox_1.4.0_amd64.deb) that come from outside of the Debian repositories. Not recommended for normal use.

    apt-get, apt-etc

    The apt tools are the standard-ish tools for installing packages. Apt incorporates the Debian (or other) repositories and provides things like dependency checking, upgrading of installed packages, searching for packages, etc. It uses dpkg on the backside.

    aptitude

    This is a super-apt that incorporates a bunch of different apt-cmd functions into one application. It also has both cli and curses interface and adds some protection against shooting-in-the-foot and oh-you-may-want-this-also recommendations.

    synaptic

    Roughly the GUI version of aptitude. Very easy to use for searching package names, viewing details, selecting for installation/removal, etc.

    others

    I'm not sure if there are any others...

  2. The package name(s) to get the standard distribution, including the docs, ExtUtils::MakeMaker, and everything else

    perl-base

    The core system Perl that's needed for the system itself.

    perl

    The package you install when you the user want some Perl. It has dependencies on

    perl-modules

    A nice selection of extra modules including EU::MM

    perl-doc

    The docs. There is also a perl-doc-html that you can install for the pretty versions.

  3. Does that package manager allows you to configure, per-package, the installation location.

    I'm not really sure. I would guess that dpkg may have a 'relocate' functionality to it, but I've never tried. Debian already splits some things out into a wide @INC

    
      @INC:
        /etc/perl
        /usr/local/lib/perl/5.14.2
        /usr/local/share/perl/5.14.2
        /usr/lib/perl5
        /usr/share/perl5
        /usr/lib/perl/5.14
        /usr/share/perl/5.14
        /usr/local/lib/site_perl
    
    I'm not terribly sure of their logic.
  4. Discovering module packages (what is the name, version of the module, etc)

    Modules are usually Foo::Bar -> libfoo-bar-perl, but some app-like things get real names (perltidy, cpanminus). Searching with aptitude or synaptic is pretty easy "aptitude search '.*-perl' and there is a 'Section: perl' in the package info that I'm sure there's some fancier way to search more specifically. With 'aptitude show package' you can find dependencies and version information, synaptic displays the version. I haven't had the need to find older versions of a module.

  5. Your distro version, if it matters (do some distros change package managers)?

    Debian sid, but AFAIK applies to all of Debian. Ubuntu has some differences in the core/doc packages.


There is also dh-make-perl that will package up simple Perl modules, even downloading them from CPAN.


dh-make-perl make <options...> --build --cpan Foo::Bar

with the caveat:
Using this program is no excuse for not reading the debian developer
documentation, including the Debian policy, the Debian Perl policy, the
packaging manual and so on.

For building modules you need the build-essential which gets you cc, make, libc-dev. And for finding missing things 'apt-file find -F <missing-file>' can find the package that provides the file you need (usually a libfoobar-dev package).

the perl package in openSUSE is named "perl". It is installed by default. perl-doc is suggested by perl and can be installed separately. You can check version using the package manager, or you can check the package website. security updates are provided via patches. HTH

Leave a comment

About brian d foy

user-pic I'm the author of Mastering Perl, and the co-author of Learning Perl (6th Edition), Intermediate Perl, Programming Perl (4th Edition) and Effective Perl Programming (2nd Edition).