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

Re: Ensuring complete upgrades in applications with multiple binary packages



Le mardi 15 mai 2007 à 16:28 +0200, Frank Küster a écrit :
> TeX Live is one big thing upstream (one DVD) and has been split for
> Debian packaging into one arch:any and four arch:all source packages
> with numerous binary packages each.  Generally, you cannot assume a
> system to work properly which has a mixture of different upstream
> versions of these packages installed.  But how should we achieve that?
> 
> A. The straightforward approach is the most ugly one: The packages of
>    course frequently declare "Depends: texlive-some-other-package", and
>    we could switch all of these depends into versioned depends, (>=
>    $upstream-version).  But that would really look ugly, e.g. from
>    texlive-latex-extra:
> 
> -Depends: preview-latex-style, texlive-common (>= 2007), texlive-pictures, texlive-latex-base
> +Depends: preview-latex-style, texlive-common (>= 2007), texlive-pictures (>= 2007), texlive-latex-base (>= 2007)

It's ugly but it's the right thing to do. Unfortunately it doesn't
prevent texlive-latex-extra 2007 from being installed with
texlive-common 2008.

> B. texlive-common could declare 
> 
> Conflicts: <long_list_of_texlive_packages_each_with_old_upstreamversion>
> 
>    But how would that work upon upgrade?  Technically, there's no
>    problem, first all texlive packages except texlive-common would be
>    unpacked, then texlive-common could be unpacked and configured, after
>    that the others can be configured.
> 
>    But usually dpkg tries to do unpacking and configuring in the same
>    order; would it be confused by this situation?

dpkg handles this case right, but it's really painful in the long term.

> C. Ignore the problem and just expect from users to handle their
>    upgrades in a sane way and not put individual packages on hold?

Not setting strong enough dependencies is a RC bug.


For GNOME packages, we opted for a solution similar to A, but with the
notion of a "next upstream version". For example, epiphany-extensions
declares:
Depends: epiphany-browser (>= ${gnome:Version}), epiphany-browser (<< ${gnome:NextVersion})

The two variables are expanded (e.g. to 2.18 and 2.19 for GNOME 2.18.X)
by a specific rule. We can afford to do that for almost all packages
because upstream guarantees compatibility inside a major release.

-- 
 .''`.
: :' :      We are debian.org. Lower your prices, surrender your code.
`. `'       We will add your hardware and software distinctiveness to
  `-        our own. Resistance is futile.

Attachment: signature.asc
Description: Ceci est une partie de message =?ISO-8859-1?Q?num=E9riquement?= =?ISO-8859-1?Q?_sign=E9e?=


Reply to: