Back in time to the ages when I was using Windows, applications were installed in an independent way. This left a lot of freedom to the end user/sysadmin to decide what and where to upgrade, what to patch and when without interfering other apps.
In *NIX, entangled dependencies are a painful headache. PC-BSD tried to overcome this with PBI, by creating self-contained applications. AFAIK, this seems now deprecated and they returned to the package management way (PBI is now a wrapper for ports), and all the Linux distros run in the same direction: hundreds of dependencies to the very end, even Desktop Environments are expected to depend on system management daemons .
Building apps based on hundreds of dependencies makes programmers life easier, but creates a shocking problem to end users and sysadmins. For instance, I can't keep an ancient Debian Etch version of app running in Debian Jessie any more. I know that many people will come with the tale of security and patches and up-to-date systems, but OpenSource means freedom to determine what, when and where to update. There are very valid reasons to not update a system or part of it, or at least not to do it the way that typical *NIX package managers are conducting users (i.e. machines working offline, old hardware, compatibility with old data that needs to be kept for compliance, ...). Other times, sysadmins prefer to make it in several steps for security.
Personally, I believe that me as sysadmin should decide what to update, and when, and bear the risk. With current state of affairs, this is impossible. (I.e having a new version of libc6 in Debian, this has dependencies everywhere). If I decide to keep two or more repositories to overcome the problem, I generate another nightmare.
I understand that certain dependencies (i.e. having MySQL installed), are acceptable as this is a major dependency, but I can't understand why the tiny dependencies like libraries are not simply embedded in the code. Disk is cheap. Many Linux apps ported to Windows achieved this.
EDIT: to ensure it is not just opinion based
What are the options to install a software in *NIX (let's put it Debian/FreeBSD for simplicity) in order to:
Keep a single certain version of a software running for years without upgrade and ensure that can be kept untouched regardless of the subsequent base OS and libraries upgrade, ala apt-get hold but forever.
Decide to upgrade/downgrade without conflicting other software/libraries.
Install two or more versions of that software.
Jails/chroot/VM's are not options, although they are the evident workarounds. Also,
- What specifically made PBI to fail to achieve this independence goal returning to ports/package management?