[Bug 901741] Re: perl-modules lucid->precise upgrade failure

Colin Watson cjwatson at canonical.com
Thu Jan 26 01:17:42 UTC 2012


As far as I've been able to determine, there's no way to resolve this by
means of even something as strenuous as Pre-Depends, without causing
other worse problems (e.g. Pre-Depends loops; perl-base and perl-modules
have to be in sync, not merely in order).  As documented in policy, a
prerm may only assume the following:

  The package whose prerm is being called will be at least "Half-
Installed". All package dependencies will at least be "Half-Installed"
and will have previously been configured and not removed. If there was
no error, all dependencies will at least be unpacked, but these actions
may be called in various error states where dependencies are only "Half-
Installed" due to a partial upgrade.

The libwmf0.2-7 situation is exactly what policy is warning about; the
dependencies are only unpacked and not configured.

The strategy we're adopting when we find such upgrade bugs is to correct
the package to conform to policy instead, to avoid prerms requiring
configured dependencies; there is really no other workable solution as
far as I've been able to determine, although I appreciate that it does
initially seem as though it should be possible to fix it in perl (I've
been down this road already).  In some cases this can be achieved by
causing them to require only Essential packages, which are required to
always behave as if they were configured after they've been configured
once; for instance, a Perl script can do this by relying only on those
modules in perl-base.

In the case of libwmf0.2-7, however, defoma has mercifully been
deprecated and is on its way out, so the fix is essentially just to stop
using it.  This had been done in Debian by the time I saw this upgrade
failure, so I merged that change into precise.  There was one last tweak
required: when dpkg is upgrading a package and the prerm from the old
version fails, it will fall back to trying the new version; so, in the
knowledge that the old prerm was likely to fail, I added a no-op prerm
to the new version of libwmf0.2-7 so that dpkg would fall back to that
and thus succeed.  I've tested that this is sufficient to get past that
upgrade failure.  This was bug 904901, so I'll leave that be and
consider only debsums in this bug from this point onward.

The debsums failure is new to me; but in that case, it's being run out
of band to some extent, and I think it would therefore be prudent of it
to rely only on packages in the Essential set.  We did something similar
with doc-base.  perl-base and perl-modules could then Conflict with
versions of debsums before that fix.

** Package changed: perl (Ubuntu) => debsums (Ubuntu)

** Changed in: debsums (Ubuntu)
   Importance: Undecided => Critical

** Changed in: debsums (Ubuntu)
       Status: New => Triaged

** Changed in: debsums (Ubuntu)
   Importance: Critical => High

** Tags added: dist-upgrade lucid2precise rls-mgr-p-tracking

** Changed in: debsums (Ubuntu)
    Milestone: None => ubuntu-12.04-beta-1

** Changed in: debsums (Ubuntu)
     Assignee: (unassigned) => Canonical Foundations Team (canonical-foundations)

** Also affects: debsums (Ubuntu Precise)
   Importance: High
     Assignee: Canonical Foundations Team (canonical-foundations)
       Status: Triaged

** Summary changed:

- perl-modules lucid->precise upgrade failure
+ perl-modules lucid->precise upgrade failure: debsums needs to restrict itself to Essential dependencies

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to perl in Ubuntu.
https://bugs.launchpad.net/bugs/901741

Title:
  perl-modules lucid->precise upgrade failure: debsums needs to restrict
  itself to Essential dependencies

Status in “debsums” package in Ubuntu:
  Triaged
Status in “debsums” source package in Precise:
  Triaged

Bug description:
  Upgrading from lucid to precise finds a problem with the defoma
  invocation in the prerm of the libwmf0.2-7 package, when upgrading
  from 0.2.8.4-6.1ubuntu2 to 0.2.8.4-8.1ubuntu1, and with apt-get's
  invocation of debsums.

  The error reported is this, from dpkg (via apt-get):

  Can't locate File/Find.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/bin/debsums line 10.
  BEGIN failed--compilation aborted at /usr/bin/debsums line 10.

  Likewise, the prerm in libwmf0.2-7 runs "defoma-app clean
  libwmf0.2-7", and gets this error:

  Can't locate File/Copy.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/bin/defoma-app line 7.
  BEGIN failed--compilation aborted at /usr/bin/defoma-app line 7.

  At the time this runs, defoma version 0.11.10-4ubuntu1 is installed;
  0.11.12ubuntu1 is the candidate but has not been fetched or installed.
  Note that this complies with libwmf0.2-7's defoma dependency (defoma
  (>= 0.11)).

  Likewise, debsums version 2.0.48 is installed, with 2.0.49 as the
  candidate, but not yet fetched or installed.

  Before the upgrade, the relevant perl files were found at
  /usr/share/perl/5.10.1/File/Copy.pm and
  /usr/share/perl/5.10.1/File/Find.pm, from perl-modules version
  5.10.1-8ubuntu2.1.

  At the time of the errors, however, perl-modules has been upgraded,
  and now version 5.14.2-5ubuntu1 is installed. Both File/Copy.pm and
  File/Find.pm are in their expected places at /usr/share/perl/5.14.2.

  The root problem seems to be that perl-base and perl-modules are out
  of sync; perl-base is at version 5.10.1-8ubuntu2.1, with
  5.14.2-5ubuntu1 as candidate, but not yet unpacked or installed.

  It seems that perl-modules depends on "perl (>= 5.14.2-1)", which in
  turn depends on "perl-base (= 5.14.2-5ubuntu1)".

  apt-get has correctly resolved these, and its invocation wishes to
  install both, but at the time of the error, it has unpacked and
  installed perl-modules, but has not yet done so for perl-base.

  But alas, it does not know that they cannot be installed out-of-order.
  I think a Pre-Depends of some sort is necessary here, to guarantee
  that the modules (and perhaps some other things) are not upgraded
  before the interpreter itself is ready for them, since the package
  management system itself is dependent on perl.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/debsums/+bug/901741/+subscriptions




More information about the foundations-bugs mailing list