The Package Manager-Package Manager


There are multiple package managers that have to be controlled with separate programs. Setting up a machine involves installing various package managers. It seems a hierarchy of package managers would permit installing any number of packages.

package managers should have consistent standard command-line API that lets them be driven by other programs to avoid special cases for package managers
can namespace packages of package managers
the package manager-package manager should let you install arbitrary package managers mpm install
For example, if you were installing Publify, a blog platform:

you'll need RVM which is installed by script
Ruby which is installed by RVM
RubyGems which is installed by a Ruby script
Ruby on Rails
MySQL
By the end of this process, we've used two custom scripts and two package management systems. First the environment manager (RVM) and a language specific package manager (rubygems) and before we can even think about installing Publify with bundle. We still have not actually configured the software.

This could look something like this, where each package manager is namespaced:

mpm install script/https://get.rvm.io \
rvm/1.9.3 \
script/[email protected]/rubygems/rubygems/setup.rb \
gem/rails \
apt/mysql-server \
apt/mysql-client \
bundle/http://typosphere.org/stable.tgz
Existing:

Docker (See for example this Dockerfile or that one )
Smart Package Manager
Puppet, Chef, Salt, and Ansible?
Nix
Potential integrations:

Infrastructure as code