V Wed, Jun 14, 2023 at 10:29:31AM +0200, Dan Čermák napsal(a):
> Petr Pisar <ppi...@redhat.com> writes:
> > The only drawback is one have to decide before GA which software will
> > have an alternative content and create meta-packages for the default
> > streams. Otherwise, users installing from GA media and upgrading later
> > could get installed a nondefault stream.
> 
> Why is that?
> 
My wording was not completely correct. I'm sorry. The problem is what people
mean with "upgrade".

"dnf upgrade" is fine.

"dnf upgrade application" is not fine. "dnf install application" is also not
fine. I will start with explaining simpler "dnf install application":

- A user has installed fedora-release which never heard about stack.
- There is an application in a repository which requires stack.
- The user installs the application and stack is pulled in as a dependency.

Now the same procedure when the first step is before adding stack2 into
the repository, but the installation happens after that:

- A user has installed fedora-release which never heard about stack.
- The distributor adds stack2, an alternative to stack (Provides: stack = 2),
  and updates fedora-release to suggest stream-stack-default.
- The user installs the application. As a result stack2 is pulled in.
  The reason is that stack2 provides "stack = 2" which is higher than
  "stack = 1" provided by stack package.

Now the user end up with the same application but stack2 instead of stack.

A situation with "dnf upgrade application" would be fine if application
depended on stack from the very beginning. But what if the dependency on stack
was added to application in between:

- A user has installed fedora-release which never heard about stack.
- User has installed application. No stack was pulled in because there was no
  need for it.
- The distributor adds stack2, an alternative to stack (Provides: stack = 2),
  and updats fedora-release to suggest stream-stack-default. The distributor
  also updates application to depend on stack.
- The user updates the application. As a result stack2 instead of stack is
  installed. The reason is the same very same as in "dnf install application"
  case -- DNF could choose beetween stack and stack2, so it choose the one
  with a higher version.

Frankly, I would consider automatic selection of the highest alternative to be
a welcome feature, not a bug. At the end, the user only requested application,
so he does not care about a version of stack. If the stack version mattered,
the user should have specified it explicitly. E.g. "dnf install application
stack".

But things then get complicated when users split transactions into multiple
steps. E.g.:

# dnf install stack
# dnf install application

would end with application and stack, but:

# dnf install application
# dnf install stack

would end with application, stack2 and then an error "stack conflicts with
stack2".

DNF operations are not commutative. And people expect to have their
installation procedures reproducible.

You might also ask why would somebody invoke "dnf upgrade application" instead
of "dnf upgrade". Well, some people read security alerts, evaluate a risk, and
then explicitly update selected packages. That's how they end up with
"dnf upgrade application".

-- Petr

Attachment: signature.asc
Description: PGP signature

_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to