I have a couple of servers with similar configuration. They both have the same issue which has been present for more than a year I think (I kept hoping that an update would fix it).
The servers run openlitespeed web servers (Litespeed-update repo) using PHP from the Remi repo. I need to have both repos enabled to get updates on both OLS and PHP.
The problem is that both repos contain the package lsphp74-mysqlnd but Litespeed-update repo has version 7.4.32-2.el9 and remi repo has version 7.4.33-2.el9. The correct later version has been installed, so dnf finds nothing to upgrade, but webmin persists in nagging that there is an update available for this package.
The version detection is done by dnf. It is not done by Webmin. One package presumably has an Epoch set, and it is higher than the other, or the other does not have an Epoch set (and thus evaluates to 0). That’s none of our business, and Webmin cannot control that. You picked that repo, Webmin is telling you what the package manager thinks should happen in order to update that package. Epoch trumps version.
Anyway, you’re going off on your own with multiple third-party repos, and you’ve mixed multiple repos that provide the same packages. That’s risky, and you should be aware that is risky (this version thing may be the least of your worries…if the packages use different paths for config files and data, you might end up with a lot of stuff broken in mysterious and difficult to diagnose ways). If you’re going to do that, you should do so with extreme caution. You probably need to choose which one to get the overlapping packages from and exclude them from the others.
There is a line “Obsoleting Packages” in the middle of the output. All the packages listed above that line are due to be updated, the packages below “Obsoleting Packages” are not being updated (unless they also appear above), the data here is showing relationships between obsolete and non-obsolete packages and should be ignored by webmin for the purpose of counting available updates.
The obvious fix (which I have successfully tried) is to break the webmin processing loop when it encounters the line “Obsoleting Packages” while parsing the output of "dnf check-update:
Alternatively, the command “dnf check-update” can simply be replaced in the webmin function by the command “dnf list updates” which gives the same output, but without the “Obsoleting Packages” data.