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

Re: Pining for Qt 5.4



On 05/02/2015 05:06 PM, Lisi Reisz wrote:
> Does the "-t wheezy-backports" format only work with backports?

No, it works here as well. From the manpage of apt-get:

> This option controls the default input to the policy engine; it
> creates a default pin at priority 990 using the specified release
> string.

This means that ALL packages from that suit will get 990 priority (which
is really high, see the apt_preferences(5) manpage). This has the
consequence that if you do that for experimental, ALL dependencies of a
package will then also come from experimental (because -t affects the
WHOLE apt-get run, not just a single package). For backports it's
generally OK, but for other things such as running testing with 1 or 2
packages from experimental, it can be very problematic.

To give you an example of the consequences:

- package libA is version 1 in stable, version 2~bpo in
  stable-backports.
- package libD is version 10 in stable and version 11~bpo in
  stable-backports
- package B is version 23 in stable and version 24~bpo in
  stable-backports
     - both versions require libA in any version >= 1
     - version 24~bpo additionally requires libD >= 11~bpo
       (version 23 didn't require libD at all)
- package C is version 42 in stable and version 50~bpo in
  stable-backports
     - version 42 requires libA with version >= 1
     - version 50~bpo requires libA with version >= 2~bpo

If you now just want to install package B from backports (but are
uninterested in C), and neither of the four packages mentioned is
installed yet, you can do that in two ways:

 1. pin D from backports to priority 500, then try to install it, APT
    will complain about libD not being installed in the correct version,
    you then pin libD from backports to priority 500 and then you can
    install the package

        => libD and B will be from backports
        => libA is still from stable, because B doesn't require a newer
           version

 2. apt-get install -t stable-backports B

        => both libA and libD will also be taken from backports

Now with backports this is typically fine (because the aforementioned
case is also very rare when it comes to backports, and even if it does
happen, libraries in backports are typically not that prone to causing
problems), but for experimental - or worse yet, other repositories, this
can be something you really, really don't want.

(Doesn't have to be libraries btw., can be any dependency.)

Therefore: use apt-get install -t with great care. It's probably fine
for backports, but don't use it for anything else unless you REALLY know
what you are doing.

Christian


Reply to: