On 12. 05. 20 0:32, Adam Williamson wrote:
On Mon, 2020-05-11 at 01:47 +0200, Miro Hrončok wrote:
On 10. 05. 20 20:48, Kevin Fenzi wrote:
Basically we are switching from 'I go and install fedora-obsolete-packages and have opted in to it' to 'I have to go explictly exclude it to keep my obsolete packges'.
As others have pointed out, this was never the case of 'I go and install fedora-obsolete-packages and have opted in to it' -- this was always the case of 'fedora-obsolete-packages obsoletes something I had installed, so it is pulled in by dep resolver'.
Uh. Are we *sure* about that? Same as Kevin, that is not how I recall this working.
Yes, I am *sure*.
I've long worked under the belief that this if Y Obsoletes: X, but you don't have Y installed (and nothing else in the update would cause it to be pulled in), running 'dnf update' with a repo that contains Y enabled is not going to install Y and remove X. X will stay there. Obsoletes: only kick in if the package that does the obsoleting is installed, or is included in the transaction.
Package Y that obsoletes X kicks in when you have X installed and Y available. (Assuming both are non-modular. With modules, this concept is broken.)
This is - AIUI - why the packaging guidelines say, when you rename a package, that the new package should Obsoletes: *and Provides:* the old package: without the Provides:, you cannot expect the new package to reliably replace the old one.
The provides is there only to not break existing packages and users who depend on and/or install the old name.
Are you *sure* that DNF doesn't behave this way? The idea surprises me.
Yes, I am *sure*. I guess it's not dnf, but libsolv, hence GNOME Software should behave the same.
Fedora 32 Copr demo:
https://copr.fedorainfracloud.org/coprs/churchyard/obsoleter/
$ sudo dnf copr enable churchyard/obsoleter ...
$ repoquery --repo=copr:copr.fedorainfracloud.org:churchyard:obsoleter --obsoletes obsoleter thunderbird
$ repoquery --repo=copr:copr.fedorainfracloud.org:churchyard:obsoleter --provides obsoleter obsoleter = 0-0
$ sudo dnf --repo=copr:copr.fedorainfracloud.org:churchyard:obsoleter upgrade Dependencies resolved. ================================================================================ Package Arch Version Repository Size ================================================================================ Installing dependencies: obsoleter noarch 0-0 copr:copr.fedorainfracloud.org:churchyard:obsoleter 6.3 k replacing thunderbird.x86_64 68.7.0-1.fc32
Transaction Summary ================================================================================ Install 1 Package
Total download size: 6.3 k