> While I agree that the OS package should be used first and foremost, it just often doesn't have the required software. (Even after adding extra repos that it might support)
OS-supplied packages don't grow on magical trees. If you don't have the
necessary software in official repositories (or if it's your software), you
can package it yourself. Deployment then becomes a breeze, and you save
yourself otherwise completely useless process of recompiling things over and
over again.
> You are picking on the useless details.
Quite the contrary. Those details make important difference.
> Those are all commonly used package managers in production environments. They often provide software that simply never gets packaged with the OS.
Apart from Homebrew, which is for workstations (hardly anybody runs macOS
servers), none of these "package managers used in production environments"
provide you a complete way to rebuild your software. You can be fine for
a while if you stay away from modules that are interfaces to C or C++
libraries and from tools from other languages (e.g. I have used Python's
Sphinx to document Erlang daemons quite successfully), but once you hit that,
deployment starts to be PITA, because you'll need to remember to install all
the required libraries, -dev packages, compilers, and what not.
On the other hand, DEB or RPM with artifacts will just automatically pull the
required libraries, and its build dependencies give a dedicated and standard
place for the necessary build tools.
Your comment supports my opinion that today's programmers usually don't want
to be bothered with learning things that have been working for sysadmins for
twenty years already.