Getting Mercurial on Solaris - without the dependencies headache
By klichong on Nov 18, 2009
I was very attracted to apt-get, which is a type of package manager on Ubuntu where it would download the requisite packages and install them for you instead of hunting the individual packages from the different websites, only to find out that the version you just installed was not the correct one.
So to my delight, I found an equivalent on Solaris x86. Here is how I did it:
1. Go to http://www.blastwave.org, and download and install the pkgutil package. This install it in the /opt/csw/bin directory. Be sure to add that to your PATH.
pkgadd -d ./pkgutil_i386.pkg
2. Install the CSWbash package: pkgutil -i CSWbash. You should see messages flying down your screen about different packages being installed.
3. Find out what package name is for Mercurial: pkgutil -a | grep mercurial. Note that pkgutil -a will list all of the available packages for installation.
4. Install the mercurial package: pkgutil -i CSWmercurial.
5. You'll see that the hg binary is installed in /opt/csw/bin directory. Run that binary.
6. Oops - you should get a message:
abort: couldn't find mercurial libraries in [/opt/csw/bin /opt/csw/lib/python26.zip /opt/csw/lib/python2.6 /opt/csw/lib/python2.6/plat-sunos5 /opt/csw/lib/python2.6/lib-tk /opt/csw/lib/python2.6/lib-old /opt/csw/lib/python2.6/lib-dynload /opt/csw/lib/python2.6/site-packages]
(check your install and PYTHONPATH)
7. Set your PYTHONPATH environment variable: setenv PYTHONPATH /opt/csw/lib/python/site-packages
8. Retry the hg command:
Mercurial Distributed SCM
add add the specified files on the next commit
annotate show changeset information by line for each file
clone make a copy of an existing repository
commit commit the specified files or all outstanding changes
diff diff repository (or selected files)
export dump the header and diffs for one or more changesets
forget forget the specified files on the next commit
init create a new repository in the given directory
log show revision history of entire repository or files
merge merge working directory with another revision
parents show the parents of the working directory or revision
pull pull changes from the specified source
push push changes to the specified destination
remove remove the specified files on the next commit
serve export the repository via HTTP
status show changed files in the working directory
update update working directory
use "hg help" for the full list of commands or "hg -v" for details
Voila! A pretty painless way of getting your source management tool to get the repository of your interest.