Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
  • Debian GNU/Linux ... ha[s] a recurring problem with "dual-life" modules. ... The primary problem seems to be that binary packaging systems consider files to be inviolate.

    In Debian's case it's (largely) true that one file path belongs to one package, but that isn't actually a problem for dual-life Perl modules. Core modules (such as CGI, which come in the perl-base and perl-modules packages) and Cpan modules (such as YAML, which each come in their own packages, such as libyaml-perl) are installed to different directories:

    ubuntu6.06# perldoc -l CGI YAML
    /usr/share/perl/5.8/CGI.pm
    /usr/share/perl5/YAML.pod

    And doing perl -V shows that @INC is set appropriately so that the Cpan module directory is searched first.

    I've already had a debian packager tell me he couldn't upgrade the debian PPI package (and thus upgrade perlcritic) because I updated my Scalar::Util dependency to a version newer than provided by the core.

    Fixing that wouldn't require any infrastructure changes to the system; if somebody created libscalar-util-perl package, that could install the latest version of Scalar::Util to /usr/share/perl5/Scalar/Util.pm, meaning that PPI would find it but the original file is intact.

    Though since you ask:

    They freak out and can't handle the idea that there might be two packages which contain the same file, where the file from one of the packages can be legitimately installed over the top of the other.

    Actually even that would be possible: see dpkg-divert(8) for how a package can provide a replacement file for one already installed a different package.