The question involves packages without conflicting dependencies, let’s pick two packages X and Y, which are getting upgraded by “zypper dup”. Is there a rule that zypper follows to upgrade them in a specific order, or is it random, or are they sorted by a criteria?
Hi
No it runs a resolver (dependency checker) to ensure the correct order, if a conflict occurs it will ask what to do.
Although I have no insight or actual knowledge,
Based on long observation
Whether there are conflicting dependencies or not,
The order packages are updated is likely a sequential list in a particular order, and I would theorize likely created by OpenQA, which is the automated system that tests for code quality and bugs.
IMO a dependency checker may be part of process but can’t be the main framework, else packages wouldn’t likely be installed in groups and groups in a particular order (at least I wouldn’t think so, you’d see much more random order package installation).
Again,
I have no insight and this is a pure guess because I’d hardly expect that the order would be handcrafted by humans… It’d be too big a job and human judgement is too imperfect to do the job well, much less quickly!
TSU
Hi
Run the debug resolver to see…
zypper dup --debug-resolver
Test case results in /var/log/zypper.solverTestCase directory.
I would use “best order” rather than “correct order” there.
If the update to package A depends on the update to package B, then it will try to update B first.
However, it is possible that the update to package B also depends on the update to package A. In such a case there isn’t a way of doing it that doesn’t leave some package in a temporary broken state (hopefully for only a very brief time).
Hi
In some cases deleted, hence a check with zypper ps -s but libzypp is pretty clever, I’ve not struck issues of late, there have been issues with the likes of curl. It all get sorted pretty quick and if needed via the Tumbleweed update repository…
Thanks, but back to the initial question, what if the two packages actually don’t depend on each other?
Hi
The only way to know is run debug solver to see what it decides, esp if libraries involved. If both packages where say scripts then again it may boil down to packager preferences (you can see this in the package build log output) one may have added a requires on a shell, the other not.