If you’ve ever tried to use CFEngine for package management, you know that it is basically useless.
- CFEngine only supports installing packages and not removing them (yet).
- It has some crazy limit defined at compilation time which limits the number of packages you can install. (see Google://cfengine “Too many arguments in embedded script”)
- It merges all your package work into one logical section even if you logically split up the sections and had them in a certain order etc.
What comes out of all this is that you are better off using repository aware package management tools via the shellcommands actions (IMHO).
In the case of Solaris, the choice of champions seems to be pkg-get ala bolthole and blastwave.
In the case of Debian/Ubuntu, use apt-get.
This also means you no longer need to copy your package files using the cfengine copy actions since these tools will automatically retrieve them from your custom repository.
For those wanting to set up a pkg-get repository, the makecontents script should help you on your way.