[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#774844: xfonts-traditional: fails to upgrade from 'wheezy': Can't locate File/Find.pm in @INC



On Fri, Jan 09, 2015 at 09:13:03PM +0200, Niko Tyni wrote:
> On Thu, Jan 08, 2015 at 04:12:05PM +0000, Ian Jackson wrote:

> > If my scenario above is correct, this problem is not confined to
> > packages involving triggers, nor necessarily to xfonts-traditional.
> > Rather the problem is that the policy implies that most packages will
> > depend on just `perl', but `perl' can be `installed' despite some of
> > the functionality it is supposed to provide (File/Find.pm in this
> > case) being missing.
> > 
> > I think the right fix therefore has to be in the Perl packages.
> > 
> > Here is a suggestion: have perl-modules (jessie) declare a Breaks on
> > perl (wheezy).

> Anyway, I guess I'll experiment with the perl-modules+perl-base -> perl
> Breaks entries to see how well apt handles such upgrades, as I'm slightly
> worried about that.

I have some good news and some bad news. The good news is that those
Breaks seem to work fine with apt. I've tested upgrading quite a
few small chroots with no ill effects, and also successfully upgraded
one larger chroot with libapache2-mod-perl2, spamassassin, and
request-tracker4 installed.

The bad news is that the Breaks only help with the jessie dpkg.
They obviously prevent the scenario where xfonts-traditional is newly
installed while the new perl-modules is at 'unpacked', as dpkg now
refuses to configure the package because perl is deconfigured.  However,
simple upgrades involving xfonts-traditional still fail as before. It
looks like [1] the wheezy dpkg will still run the xfonts-traditional
'postinst triggered' even when its direct dependency perl is deconfigured.

I think this is #671711 ("dpkg: runs trigger processing even if
depedencies are not satisfied"), fixed between wheezy and jessie.

So, even if we add the Breaks in perl-modules+perl-base, it looks like
something else is needed. AFAICS either we need to somehow ensure that
dpkg is upgraded first, or the xfonts-traditional trigger functionality
needs to handle missing modules gracefully.

I'd love to hear thoughts on this. Also, my earlier questions still apply:
does this imply that all packages with strict versioned dependencies
and the like should more or less duplicate that information in Breaks
entries ?

[1] A test case would be (starting in a minimal wheezy chroot):

 apt-get install xfonts-traditional # from wheezy
 # (optionally, switch to jessie and apt-get install the newer dpkg)
 # (the version of xfonts-traditional seems to have no effect here)
 dpkg --auto-deconfigure --unpack perl-modules_5.20.1-5_all.deb # jessie + the Breaks
 dpkg -i xfonts-mona_2.90-7_all.deb # both wheezy/jessie

With wheezy dpkg, the last command with -D10000 (trigger debugging) gives
  Unpacking xfonts-mona (from xfonts-mona_2.90-7_all.deb) ...
  D010000: trigproc_enqueue_deferred pend=xfonts-traditional:all
  Setting up xfonts-mona (2.90-7) ...
  D010000: trigproc_run_deferred
  D010000: trigproc xfonts-traditional:all
  D010000: check_triggers_cycle pnow=xfonts-traditional:all
  Processing triggers for xfonts-traditional ...
  Generating fonts...
  Can't locate File/Find.pm in @INC (@INC contains: /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 .) at /usr/bin/update-xfonts-traditional line 9.
  
and with jessie dpkg just
  Unpacking xfonts-mona (2.90-7) ...
  D010000: trigproc_enqueue_deferred pend=xfonts-traditional:all
  Setting up xfonts-mona (2.90-7) ...
  D010000: trigproc_run_deferred
  D010000: trigproc xfonts-traditional:all
(The trigger gets run successfully later if perl is upgraded and configured.)

-- 
Niko Tyni   ntyni@debian.org


Reply to: