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

Re: dist-upgrade strangeness: dependencies not deconfigured

Hi Steve,

thanks for the answer.

On Tue, 25 Mar 2014, Steve Langasek wrote:
> I think your root cause analysis is wrong.  If you want help understanding
> why your dist-upgrade didn't work, you should show the output of the actual
> apt command.

Which is very very long, unfortunately.

> What you're showing here is a snapshot at some point in the middle of an
> upgrade, when texlive-common has been removed (because the package no longer
> exists, and the new texlive-base conflicts with it) and texlive-base has not
> yet been upgraded.  It's legitimate to do this during an upgrade; in fact,
> normally the very next step is for apt to unpack the new version of
> texlive-base which had declared the Conflicts: with texlive-common.  But
> something else stopped apt before it got that far.

Yes indeed, a trigger action was called for tex-common, that called
a program that is in texlive-base but needs files from texlive-common.

In the trigger program we already check that texlive base is in proper
state (ii in dpkg listing), but that seems not to be enough.

> For the record, the removal of texlive-common without the deconfiguring of
> texlive-base is because apt will pass --force-depends to dpkg.  It does this

Ok, but that means that in some cases where triggers are involved,
checks for the proper functionality cannot be done by checking
on the status of a package. Is this right?

> itself in a catch-22 on dist-upgrades.  So apt deliberately lets the
> dependencies be broken, with the expectation that it can fix them up again
> afterwards.

But in the meantime triggers are called that might mess up the whole,

To repeat:
in TeX Live 2012:
	perl modules are in texlive-common
	updmap script is in texlive-base
	tex-common trigger on package installs calls updmap when
		fonts are installed, before doing this, it checks
		whether texlive-base is fully installed and configured (ii).

in TeX Live 2013
	perl modules and updmap are in texlive-base
	tex-common does the same

the code in tex-common is:
            # dpkg-query has two defects wrt not existing packages
            # - it is noisy to stderr
            # - it returns 1
            # so shut both errors up
            stat=$(dpkg-query -W -f='${Status}' context 2>/dev/null || true)
            case "$stat" in
                "install ok installed")

As a consequence I have added
	Breaks: texlive-base (<< current-version)
to *all* texlive packages. Doing this upgrade now succeeds.

Is there anything else that can be done?


PREINING, Norbert                               http://www.preining.info
JAIST, Japan                                 TeX Live & Debian Developer
GPG: 0x860CDC13   fp: F7D8 A928 26E3 16A1 9FA0  ACF0 6CAC A448 860C DC13

Reply to: