On 8/16/16, Zenaan Harkness <zen@freedbms.net> wrote:
[symlinks, versioning and stuff]
I'm sure this has been thunked before
Many times, over many decades, by many people... and been done. Those users and shops have their entire /usr/local or /opt (bin sbin lib include share doc etc and so on) as nothing but script managed symlink trees as means of tagging the active default version. And keep the multiple program-M.m.r versions on disk therein, which are manually callable as needed for new testing and legacy use. With scripts to build, install, and symlink it all. Dependencies, namespace collisions, runtime issues with ld rpath and friends, and the whims of program authors... all tend to buzzkill many efforts there. Github might have something for you. There are also variant symlinks: https://www.dragonflybsd.org/cgi/web-man?command=varsym§ion=1 http://leaf.dragonflybsd.org/cgi/web-man?command=varsym.conf§ion=5 http://leaf.dragonflybsd.org/cgi/web-man?command=varsym§ion=2 https://wiki.freebsd.org/200808DevSummit?action=AttachFile&do=view&target=variant-symlinks-for-freebsd.pdf https://github.com/drq883/varsym https://lwn.net/Articles/680705/ https://github.com/onslauth/varsymfs The "FHS" of a base OS, be it Linux or BSD, typically exclusively reserve /usr/local for their default package manager, and reserve /opt for site use. Some sites prefer /opt first in PATH once it's compiled and installed by competant system admin. Single letter trees for package installs serve no purpose and are anti human. There's no performance need to turn the fs into a binary tree (todays kernels and fs can handle flat dirs many times the needs of any installed package set). Nor need to turn the fs into a database, that's what package managers are for.
I'd like to see the libre unix software ecosystem move forward on this.
Nobody wants such a symlink mess in the base system, ever. And things like pivot root, snapshots, portable processes, rolling release, vm, jail, layered fs, and patchable kernel are all happening. Leaving just handling /usr/local... Most people usually don't have need for multiple versions, just a current version that works. Even packaging just that is hard and a lot of work by a lot of people. Thus port / package tools naturally remain rather simple. Sure there are issues with limited accomodations for versioning / site in package managers. So see /opt above. Or roll your own distro, and packager and reach wide adoption with it.
arcane per distro package incantations
Until then, excepting some tool and port sharing among Linux and BSD's, things are exactly this, and wishful thunking. If troubled on Linux, at least look at the BSD's... their hier's are cleaner and enforced, partly from not going the "distro" model of random thunkers.