Re: Discussion about why GNU/Linux system upgrades cause old programs to break
Eli Zaretskii <[email protected]> Fri, 07 Aug 2026 09:29:33 +0300
| Newsgroups | gmane.emacs.devel |
|---|---|
| Message-ID | <[email protected]> |
> From: Richard Stallman <[email protected]> > Cc: [email protected] > Date: Fri, 07 Aug 2026 00:31:35 -0400 > > You wrote on another list, > > > My specific experience was with old versions of Emacs on a typical > > GNU/Linux system. I keep past major versions on my development > > system, for the purposes of investigating when a particular bug or > > feature started happening, and it is common to have some of those old > > versions stop working after a system upgrade. > > Can you tell us the specifics about some of those incidents? I'd like > us to see if by changing some practices (in Emacs or in GNU/Linux > distros or wherever) we could improve future compatibility. Here are some examples, from a system that identifies itself as $ uname -a Linux fencepost.gnu.org 5.4.0-208-generic #228+10.0trisquel14 SMP Tue Feb 25 00:11:13 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Trying to run old versions of Emacs I've built myself on that very system: eliz@fencepost:~$ emacs-28.x/emacs-28.0.90/src/emacs -Q eliz@fencepost:~$ emacs-27.x/emacs-27.2/src/emacs -Q emacs-27.x/emacs-27.2/src/emacs: error while loading shared libraries: libgtk-3.so.0: cannot open shared object file: No such file or directory 127 eliz@fencepost:~$ emacs-27.x/emacs-27.1/src/emacs -Q emacs-27.x/emacs-27.1/src/emacs: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory 127 eliz@fencepost:~$ emacs-26.x/emacs-26.1/src/emacs -Q emacs-26.x/emacs-26.1/src/emacs: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory 127 eliz@fencepost:~$ emacs-26.x/emacs-26.2/src/emacs -Q emacs-26.x/emacs-26.2/src/emacs: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory 127 eliz@fencepost:~$ emacs-25.x/emacs-25.1/src/emacs -Q emacs-25.x/emacs-25.1/src/emacs: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory 127 eliz@fencepost:~$ emacs-24.x/emacs-24.1/src/emacs -Q emacs-24.x/emacs-24.1/src/emacs: error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory 127 eliz@fencepost:~$ emacs-23.x/emacs-23.1/src/emacs -Q emacs-23.x/emacs-23.1/src/emacs: error while loading shared libraries: libgpm.so.1: cannot open shared object file: No such file or directory 127 eliz@fencepost:~$ emacs-23.x/emacs-23.2/src/emacs -Q emacs-23.x/emacs-23.2/src/emacs: error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory As you see, in each case some library is missing, presumably because the OS upgrade either didn't install it or installed a newer version. Sometimes the missing libraries are even sub-modules, like libgtk-x11-2.0.so.0, which is probably some dependency of GTK against which that Emacs version was linked. Maybe these could be solved by installing some compatibility package, but how do I find out? Other issues are even harder to solve. E.g., versions of Emacs that used unexec cannot be recompiled to run on a modern GNU/Linux system due to changes in glibc which broke assumptions made by unexec. Such an Emacs will crash upon startup, perhaps even when it is run as part of the build. > "Old versions stop working" could mean that old executables no longer > run. Or it could mean that old source trees do not compile. To help > us understand how to prevent such problems, could you please make a > point to distinguish those two kinds of problem? Old sources will not always easily compile on a modern system with a new compiler. For example, AFAIR latest versions of GCC report errors when they see K&R style function declarations, and if it's possible to fix that, it requires some obscure command-line option (I think GCC folks intend to remove it in the future). And there are other issues, too many to list all of them. System headers changes, for example, as well as changes in libc and other libraries. In sum, it is not very easy to recompile an old source tree years after it was released.