Re: perl-base 'conflicts'
On Dec 22, 2004, at 5:00 PM, Brendan O'Dea wrote:
[cc to debian-perl added]
Hmm, the whole idea was actually that this would 'seemelessly'
I would strongly suggest that you consider simply creating a new
namespace for automatically built packages, and using
with the current debian mirrors (and thus using whatever was already
by the standard debian pool when possible)
Is there a use-case for this already?
Seamless integration is not going to happen in a completely automated
Debian packages are more than just the equivalent of shoving a tarball
of the results of "make install" into a .deb.
True, but oddly enough, in an 80/20 situation it works :)
Now, getting back to the scalar-util/data-dumper conflict, we were
thinking of solving it as follows:
* create a seperate namespace as you suggested. Debian style would be
'libfoo-perl' for the module Foo. Ours would be 'cpan-libfoo-perl';
familiar to the debian user and effective when apt-cache searching.
* Add the dependencies not just as 'libbar-perl (>= VER)', but as
Depends: libbar-perl (>= VER) | cpan-libbar-perl (>= VER)
So it will pick the debian provided package if it is installed or
available, or fall back to the automatically generated cpan package
if it is not. This minimizes the use of auto-generated packages to
those that are not provided by debian already, and will neatly avoid
our scalar-util/data-dumper conflict.
* Add a 'Provides: libfoo-perl' line to the now virtual package, so we
can avoid having 2 packages installed at the same time.
* Install our packages into the SITE dir (as CPAN.pm/CPANPLUS.pm
would anyway), to avoid ownership conflicts with other debian provided
The only drawback i can see here is the following:
At some point, there's cpan-libfoo-perl v1, and a user installs it.
Later, libbar-perl requires 'libfoo-perl v1' (which is provided by
cpan-libfoo-perl) and installs it. Later still, libzot-perl requires
libfoo-perl v2 which is now available (but there's no cpan-libfoo-perl
v2 for whatever reason).
The installer will now 'probably' do the right thing by grabbing
and installing it as per usual to satisfy the depenendancy. Except,
debian packages install into the VENDOR dir, which is searched only
/after/ the SITE
dir. Effectively leaving Foo v1 to be loaded still =/
Granted, this is a bit of an edge case, but it is the only drawback i
can see right now. We could have our cpan-foo* packages also install in
of SITE to avoid this conflict, but that might lead to ownership
conflicts instead. Any suggestions here?
As I asked in an earlier message, what is your goal?
That's one part of it -- debian lags behind often in versions (and also
in amount of packages offered, but that's another debate). With the
techniques we have now,
it's become a lot easier to automatically do the 'grunt' work of
generating packages. That should make it easier for package maintainers
to keep up to date with cpan releases and we'd certainly like to help
them make it so.
If it is to provide a template for simplify the process of creating
packages for upload to the main archive, then the direction you're
currently heading is fine--presumably the maintainer is sufficiently
clued to deal with the occasional corner-cases (such as epochs,
replacing CORE scripts in /usr/bin, etc).
Not so much 'every package' -- many users of debian use debian because
of their package manager, and ideally everything they install is a
package. dh-make-perl already set the precedent for CPAN modules,
CPANPLUS just does it a little bit better ;) So we'd like to offer
users the option, via a simple plugin, to install a perl module 'via'
dpkg. In addition to that, we'd like to offer a mirror where the most
common (i386) binary packages already live -- autogenerated from CPAN
when they are updated.
If it is to provide a binary package for each and every CPAN module,
then I would stand by my suggestion above: choose a disjoint namespace
and install to /usr/local. There may well be some overlap b/w some
cases of cpan-foo and lib-foo-perl, but that's not terribly important
long as cpan-* is self-consistent (a couple of redundant Debian
is hardly a huge overhead).
The 'switch' will indeed be present -- the option to prefix with a
certain string, defaulting to 'cpan-'. Package maintainers can disable
that prefix and
get the 'standard' debian behaviour.. normal users and our own
would use the 'cpan-' prefix and thus avoid conflicts, but still have
the luxury of installing via dpkg.
If you intend to tackle both tasks, then perhaps you need to provide a
switch to choose the appropriate behaviour.
Any thoughts or comments on the subject are of course welcome
'Real programmers use "cat > a.out"'