[dapper->hardy] update-manager for edgy needs to upgrade dpkg/apt before calculating the upgrade to support the new "breaks" - otherwise the upgrade may fail
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
update-manager (Baltix) |
Fix Released
|
Undecided
|
Unassigned | ||
update-manager (Ubuntu) |
Fix Released
|
High
|
Michael Vogt |
Bug Description
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
affects /distros/
importance high
As I write in ubuntu-
The dpkg in edgy now supports a new kind of dependency relationship,
`Breaks'. This is like `Conflicts' but doesn't cause the
deinstallation of the broken packages, merely their deconfiguration
(to note that they're broken).
In general, Breaks is intended to replace nearly all instances of
Conflicts: some-package (<< 0.1.2.3)
or similar. It is now sensible to start using Breaks instead of
Conflicts for this in edgy:
Breaks: some-package (<< 0.1.2.3)
The dist-upgrader tool will arrange for upgrades from dapper to edgy
to upgrade dpkg first; this means that this field will be honoured for
packages released as part of edgy.
...
This latter paragraph implies a change to update-manager: it should
upgrade dpkg early on. It is very likely that changes to apt will be
involved too, so it would be good to update apt early as well if
that's not hopelessly difficult. See PackageDependen
Thanks,
Ian.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
iD8DBQFEyImN8jy
z8kD4Z7NP8p4oqY
=tP8X
-----END PGP SIGNATURE-----
Changed in update-manager: | |
assignee: | nobody → mvo |
Thanks for this reminder.
I was looking into this today and while this is certainly possible. But I'm concerned that the addition of breaks may break the dist-upgrader in much the same way as what happend to firefox and the firefox-theme package.
The problem is essentially the same, i.e. the libapt implementation that calculates the upgrade from dapper->edgy will not know about breaks (yet). Downloading/install dpkg early does not help here because libapt needs some understanding about the field as well. Upgrading dpkg/apt and then re-runing the dist-upgrader to calculate a new upgrade would work but it makes the operation irreversible (well, we could DOWNGRADE again *shudder*) - something that we don't really want.
I see the following possible strategies:
1. put a updated apt into dapper-updates that supports breaks (and if we do this anyway add dpkg as well to avoid the extra step of the dist-upgrader). This shouldn't be too bad because presumably this changes does not change anything for packages without breaks-fields. OTOH it is going to be a invasive change in dapper (something we may not want to do after the X fiasco)
2. put a updated apt into dapper-updates that maps "breaks" to "conflicts". This means we don't win anything but we don't lose anything either. The only advantage here is that the change in apt is likely to be minimal (~5 lines of code hopefully)
3. bite the bullet and start using breaks in edgy :(
None of those is very applealing. I'm open for suggestions and better ideas of course :)
Cheers,
Michael