Bug#774844: xfonts-traditional: fails to upgrade from 'wheezy': Can't locate File/Find.pm in @INC
Niko Tyni
ntyni at debian.org
Thu Jan 15 20:32:10 UTC 2015
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 at debian.org
More information about the Perl-maintainers
mailing list