|
|
|
|
|
by davexunit
3852 days ago
|
|
I agree that language specific package managers are terrible. I'm one of those ops people, and the number of package managers needed to deploy any web application is just insane. The biggest problem is that none of them can specify the full dependency graph for anything. For example, the Pg Ruby gem cannot specify that it requires the libpq shared library and headers. You have to either know that before hand, or watch the package installation fail, find the right package in your system package manager, then try again. They are also bad at deduplicating dependencies amongst many projects, but at least they allow installation as an unprivileged user. How many more pm and vm (version manager) tools must we deal with? I wish more people would realize that this is a general problem that requires a general solution. Traditional system package managers are also terrible. They install everything into the global /usr directory so that you can't have differing sets of depdencies for different software and they require root access because /usr is only writeable by root. Because of these severe limitations and without effort being put in to fix it, I think GNU/Linux distributions have helped push everyone towards using a new package manager per language so that people can get their work done. The solution to all of these problems is functional package management. They take the good parts of both system and language-specific package managers and add even more features and improvements on top. Functional package managers can handle software written in any language, allow unprivileged package installation, and allow different packages to depend on different versions of the same software without issue. They have additional features such as transactional upgrades and rollbacks, and system-wide deduplication. The entire dependency graph is precisely captured, all the way down to a small set of bootstrap binaries that are the roots of the graph. The GNU Guix [0] and Nix[1] projects implement the functional package management paradigm, and they are both worth taking a serious look at. In addition to standard package management features, they also can do full-system configuration management with their respective distributions GuixSD and NixOS. [0] http://gnu.org/s/guix [1] http://nixos.org/ |
|