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
--
Miro Hrončok
--
Phone: +420777974800
IRC: mhroncok