How would that work on arch?
How would that work on arch?
If you need older versions, they're available via AUR, called postgres-*-upgrade [2]
[0] https://archlinux.org/packages/?name=postgresql-old-upgrade
[1] https://wiki.archlinux.org/title/PostgreSQL#pg_upgrade
[2] https://aur.archlinux.org/packages/postgresql-12-upgrade
Categories are a similar issue in Portage: emerge graphviz asks if I want dev-python/graphviz or media-gfx/graphviz, but obviously the default should be the latter. Arch instead has python-graphviz and graphviz, which is much better design. Categories fix naming collisions in exactly the wrong way: dumping it on the user and giving no sensible default.
For PostgreSQL specifically, Arch provides postgresql and postgresql-old-upgrade, so as long as you don't wait years to upgrade your PostgreSQL, you'll be fine. It's a reduction in flexibility but brings with it a significant reduction in complexity: nobody can properly maintain half a dozen Postgres versions anyways, so just keep the latest two around.
And of course the bigger things...like python2 vs python, and the multiple openjdk stuff.
However, every time I've needed older library versions I've found that somebody already uploaded a suitable PKGBUILD to AUR (Arch's user-contributed build-from-source system).
For instance, the current version of PHP in Arch is 8.2.6. If you need an older version there is php81, php80, php74, etc. available in AUR. If it didn't exist, just take the PKGBUILD for the current version, modify it to build the older version, then upload it to AUR so other people don't have to re-do the work. It works well in practice.
I just assumed something so "basic" would be supported on all major distros.
The AUR is said to provide options for non-latest software, and I guess you have options like Flatpak too.