Wednesday, March 12, 2008

Using Pkg-Get On Solaris To Emulate Linux Apt-Get

Hi again,

Today I thought we'd take a look at Unix and address an issue that most of us have probably had with installing software on most flavors of it. It seems like Linux picked up all the good stuff (or, at least, made it more accessible) first. And, while it's true that "Open Solaris" and even HP-UX (with pkg-utils) are starting to move toward ease of installation, they've got a long way to go to catch up with the open-source community who've been endeavouring to accommodate all sorts of alternative software packages (and packaging systems) since their inception.

Tools like up2date, urpmi, yum and apt (to mention the ones that come to mind right away) on all manner and type of Linux systems and distributions have been making it easier for the user to download package dependent software for a long time now.

Now, by package dependent software, I'm referring to, let's say, an open source package called "TheProgram." You download and attempt to install it only to find out that it relies on libraries from "TheOtherProgram" and "SomeOtherProgram" in order to compile. So you download those, but they require "Software Packages A, B and C" to be installed, etc. You see where this is going. If you're like me, it's probably nowhere unless your getting "TheProgram" installed is a job requirement ;)

Software like apt (with apt-get) and yum, etc, make life easier for you by not only downloading and installing the software you request, but also gathering, downloading and installing all of the other software you're going to need to get "TheProgram" to run. Of course, they're kind enough to ask you to confirm at each step, but I don't consider that an annoyance. If I ever get frustrated, I just think about the worst that could happen if apt-get didn't ask me whether I wanted to destroy my machine or not ;)

Many of you may have heard of pkg-get, which you can download freely from the web. There are also some great resources out there devoted to getting the most out of the Solaris pkg-get program.

pkg-get provides much the same functionality as apt-get, except that pkg's get installed instead of rpm's. It seems to be a bit more on the verbose side, but, in terms of execution, and a large collection of open source software to choose from in its publicly available repositories, its an excellent alternative to doing everything yourself. I'd imagine it's probably a better alternative to most other software packages that do the same thing for Unix (although I can't seem to find more than the two I mentioned above that aren't hacked-up versions of Linux utilities fudged into working on a Unix box).

Below, I've included a sample run (from a "clean" box), where I decided to install "aspelluk." This will give you an idea of how robust the pkg-get software and it's supporting repositories are. Consider the ellipses (...) filler for the output of http redirections and pkgadd commands, of which there are quite a few in my request. As with all software installations on Solaris, I was prompted at each step to make sure I was aware of what I was doing ;) I thought this would be a good example since I'd be installing an addition (aspelluk - The UK add-on for aspell) to a program I knew I didn't have installed (aspell - spelling checker).

Cheers,

host # pkg-get -i aspelluk
Trying http://mirrors.usc.edu/pub/blastwave/unstable/sparc/5.9/aspelluk-1.3.1.0-SunOS5.8-all-CSW.pkg.gz
...
Trying to install dependancy common
...
Processing package instance <CSWcommon> from </var/pkg-get/downloads/common-1.4.5-SunOS5.8-sparc-CSW.pkg.gz.tmp>
...
Installation of <CSWcommon> was successful.
Trying to install dependancy aspell
...
Trying to install dependancy gcc3corert
...
Processing package instance <CSWgcc3corert> from
...
Installation of <CSWgcc3corert> was successful.
Trying to install dependancy gcc3g++rt
...
Processing package instance <CSWgcc3g++rt> from </var/pkg-get/downloads/gcc3g++rt-3.4.5-SunOS5.8-sparc-CSW.pkg.gz.tmp>
...
Installation of <CSWgcc3g++rt> was successful.
Trying to install dependancy ggettext
...
Trying to install dependancy libiconv
...
Processing package instance <CSWiconv> from </var/pkg-get/downloads/libiconv-1.9.2-SunOS5.8-sparc-CSW.pkg.gz.tmp>
...
Installation of <CSWiconv> was successful.
Trying to install dependancy expat
...
Processing package instance <CSWexpat> from </var/pkg-get/downloads/expat-1.95.7-SunOS5.8-sparc-CSW.pkg.gz.tmp>
...
Installation of <CSWexpat> was successful.
Processing package instance <CSWggettext> from
...
Installation of <CSWggettext> was successful.
Processing package instance <CSWaspell> from </var/pkg-get/downloads/aspell-0.60.5-SunOS5.8-sparc-CSW.pkg.gz.tmp>
...
Installation of <CSWaspell> was successful.
Trying to install dependancy bzip2
...
Processing package instance <CSWbzip2> from
...
Installation of <CSWbzip2> was successful.
Processing package instance <CSWaspelluk> from </var/pkg-get/downloads/aspelluk-1.3.1.0-SunOS5.8-all-CSW.pkg.gz.tmp>
...
Installation of <CSWaspelluk> was successful.


, Mike