середа, 17 лютого 2021 р. 00:08:01 EET L A Walsh написано:
This is another example of a snapshot that will make
upgrades impossible w/o a full rebuild -- for a similar reason
rpm 4.15 can't be built by rpm 4.14 or before. rpm 4.11 ships
with rpmlibs-v3, while rpm4.15 ships rpmlibs-v9. The libs
jumped 6 versions while rpm went up 0.14.
The windows of what binaries work with what date of TW
is too small.
How is this connected to binaries? I have quite old (about 5 years)
proprietary program which was built on/for CentOS 7 (not new OS either) and it
works fine on TW (have checked before transiting our server to Leap).
While some may think I have uniq problems, the
are going to have more and more of these cases. It's not a workable
I can take programs in Win from 10-20 years ago and they still work
on a current day win because the OS loads library updates by version.
Unix did the same -- but move to linux, and vendors got lazy and stopped
using the correct versions to link with.
Why? And how can this be fixed?
As for Windows, same for Linux, if program supposed to work on wide variety of
systems, you provide it with all libraries it needs with minimal dependency on
system libraries. Windows have no standard way of dependencies so every app
HAVE TO drag all stuff with it. WinSxS is a way to keep all that stuff in a
non-controversial form (and reduce duplication in theory, though in practice
it still keeps a bunch of different versions of the same library because they
are slightly different), it doesn't provide dependencies for you.
In Linux you could do the same, but most proprietary packagers prefer either
static builds or bundle everything, because implementing this stuff in proper
way needs a normal repository with at least RPM/DEB structure.
For some time there is a FlatPak to solve this problem, which has its own
packaging format, repositories and dependencies. While I'm not a fan of it (as
it has disk/RAM overhead) but it is a solution to not duplicate efforts for
As for open-source packages, keeping binary compatibility is not needed, it's
simpler to rebuild packages against new library and get rid of code