Centralised package delivery on Solaris can be a bit of a pain. Blastwave was a nice solution, but with OpenCSW splitting away from them and the two camps now delivering the same packages to the same disk hierarchy we're left with too much choice and a confusion of options. They're still both a good solution, but maybe there is a better option.
Sun have a solution in OpenSolaris in the form of Image Packaging System (IPS), but this is not yet available to standard production Solaris. At some point in the future it's expected this will become the standard packaging solution for Solaris, but today we can back port it with relative ease.
Kronox at Sun has blogged about getting IPS working on Solaris 10. (UPDATE: This link now seems to be dead, which is a great shame. The rest of this article should still make sense though). With this being written a short while back it now doesn't work all that smoothly. Here are the steps I took to make it work with x86 Solaris 10 update 6.
Instead of downloading and compiling Mercurial I chose to grab it from OpenCSW. A simple workflow to do this might be
download and install pkgutil (I prefer it to pkg-get)...
$ gunzip pkgutil*
Add /opt/csw/bin to your path, and install mercurial...
pkgutil -yi mercurial
You'll also need the Gnome doc utils and the Python XML2 parser library. We can get these with ease from OpenCSW too...
pkgutil -yi gnome_doc_utils pylibxml2
Ensure you have the following Sun packages already installed (they're part of a standard Solaris 10u6 install, but if you did a cut down install you may not have them)
SUNWgnome-xml-share SUNWlibpopt SUNWlxsl SUNWopenjade SUNWopensp SUNWperl-xml-parser SUNWgnome-common-devel SUNWopenssl-include
Grab Python setuptools and install as per the instructions on the site.
Download the IPS source...
hg clone ssh://email@example.com/hg/pkg/gate ips
Assuming you're using the IPS source from OpenSolaris after build 106, you'll need to export the environment variable BUILD_PYOPENSSL. Just set it to 'yes'.
Now build the packages with 'make'.