On 7/9/25 10:20, Roger Marquis wrote:
The most recent protobuf-c package update wants to remove and downgrade
incompatible dependencies:

     Cannot solve problem using SAT solver, trying another plan
     The following 5 package(s) will be affected (of 0 checked):
     Installed packages to be UPGRADED:
         protobuf-c: 1.5.1_2 -> 1.5.1_3
     Installed packages to be DOWNGRADED:
         bind-tools: 9.20.10 -> 9.20.9
         libxml2: 2.14.4 -> 2.11.9

libxml2 was upgraded to 2.14.4 then reverted to 2.11.9 on 06/21 within an hour, then reupgraded on 6/28 if I read logs correctly. Freshports lists quarterly package repository is still on 2.11 while latest is on 2.14; have you switched or activated multiple repos?

     Installed packages to be REMOVED:
         apache24: 2.4.63_1
         py311-html5-parser: 0.4.12_2
     The operation will free 4 MiB

This should never happen.  It never happens on Linux package upgrades,
making autoupdate cron tasks feasible and saving nontrivial admin time.

Upgrades lead to errors, including on Linux; I broke multiple distros through updates to varying degrees but they were definitely broken by the action. If it wasn't causing issues, then containerizing all dependencies into each install wouldn't be so popular, nor would snapshots and backups being integrated into upgrade workflows. Automating upgrades without testing or backups will cause problems even if it isn't just package conflicts.

Would be great if there were a poudriere or pkg-install flag or
environment variable to prevent such behavior but I did not find one in
the docs.  Did I miss it or is there an RFE form under freebsd.org for
such requests?

I haven't seen a 'fail with error if manually installed packages will be removed/replaced' option but if it doesn't exist then it would be a good one to have. Sometimes people also use automatically installed packages that they would want similar handling of; best to mark used packages as manually installed when they are important. Otherwise dependencies come and go which makes them less important to watch. As a workaround, you could first run an upgrade with -n and check if the output contains REMOVED or even DOWNGRADED (rarely happens, but can legitimately happen) and error out + contact admin. If automating, remember that without an option to run autoremove during the upgrade that you still need a second command to try to handle dependency cleanup. Without it, any unused dependencies will remain until they conflict. With the effort to report upgrade used space, you would think such cleanup would be a default (but preferrably optional) part of upgrading.

Roger Marquis



Reply via email to