Wednesday, February 27, 2008

Project Indiana and PostgreSQL

As part of Project Indiana which is working on getting a binary distribution of OpenSolaris, there is a new  OpenSolaris Developer Preview 2 release available which is based on Solaris Express build 79a. So why am I interested in this "yet-another-distribution" ?


Currently when people are interested in running PostgreSQL on Solaris, check out where the site points them. It points to download Solaris. The choice is either to download Solaris 10 8/07 (latest production release) or Solaris Express latest builds (bleeding edge technology). So yes its already out there. It also includes PostgreSQL 8.2 in both releases. In fact soon PostgreSQL 8.3 will also be integrated in the latest Solaris Express releases. So what's the problem?


 If you ask me, the problem is the size of the download. I think for a lean-mean database like PostgreSQL whose binary download size is less than 10MB, telling people to download the DVD image of Solaris Express which typically could be around 4GB. That's just too much for what they really need. Coming back to PostgreSQL, what portions of Solaris do you really need to execute PostreSQL to its optimum? Kernel, ZFS, DTrace, Monitoring Tools, maybe some basic X windows to use PgAdminIII. So why force people to download the whole DVD every time there is a new Solaris Express build out there.


Project Indiana does help to cut it down to less than 1/5 th of the original. The download size of the new OpenSolaris Developer Preview 2 is about 650MB which is now a CD image.  It takes out lot of "overhead" and simplifies lot of scenarios and works best when you have a brand new server and want to use the Operating System primarily to run a database on it (the way I see it, your view may differ).


Project Indiana is opening doors for "Database Appliances" with OpenSolaris at its core.


Anyway I took it to do a test drive on my laptop. After installing OpenSolaris Developer Preview 2. It has basic GNOME, Firefox already installed. (And that's how I am writing this current blog entry.) The installation did not have any versions of PostgreSQL installed. I wasn't surprised. The whole idea of Project Indiana is to pull down additional packages that user requires from the network. Of course which means its time to get familiar with the new  Image Packaging System or pkg(5)


First of all I have to search if there are any PostgreSQL related packages on the default server that it refers. (Make sure to use -r option to search on the remote server) (It goes without saying, you need an internet connection to work before you do the following.)


# pkg search -r postgres
basename pkg:/SUNWpostgr-82-client@8.2.4,5.11-0.75:20071114T203533Z
basename pkg:/SUNWpostgr-82-client@8.2.5,5.11-0.79:20080205T163827Z
basename pkg:/SUNWpostgr-82-pl@8.2.4,5.11-0.75:20071114T203552Z
basename pkg:/SUNWpostgr-82-pl@8.2.5,5.11-0.79:20080205T164009Z
basename pkg:/SUNWpostgr-82-tcl@1.5,5.11-0.75:20071114T203557Z
basename pkg:/SUNWpostgr-82-tcl@1.5,5.11-0.79:20080205T164054Z
basename pkg:/SUNWpostgr-82-server@8.2.5,5.11-0.79:20080205T164038Z
basename pkg:/SUNWpostgr-82-server@8.2.4,5.11-0.75:20071114T203552Z
basename pkg:/SUNWpostgr-82-jdbc@8.2.504,5.11-0.75:20071114T203550Z
basename pkg:/SUNWpostgr-82-jdbc@8.2.504,5.11-0.79:20080205T163940Z
basename pkg:/SUNWpostgr-82-l10n-ja@0.5.11,5.11-0.75:20071114T205225Z
basename pkg:/SUNWpostgr-82-l10n-ja@0.5.11,5.11-0.79:20080205T175432Z
basename pkg:/SUNWpostgr-82-server-data-root@8.2.4,5.11-0.75:20071114T203557Z
basename pkg:/SUNWpostgr-82-server-data-root@8.2.5,5.11-0.79:20080205T164023Z
basename pkg:/SUNWpostgr-server@8.1.9,5.11-0.75:20071114T203610Z
basename pkg:/SUNWpostgr-server@8.1.10,5.11-0.79:20080205T164225Z
basename pkg:/SUNWpostgr-82-contrib@8.2.4,5.11-0.75:20071114T203532Z
basename pkg:/SUNWpostgr-82-contrib@8.2.5,5.11-0.79:20080205T163847Z
basename pkg:/SUNWpostgr-82-devel@8.2.4,5.11-0.75:20071114T203535Z
basename pkg:/SUNWpostgr-82-devel@8.2.5,5.11-0.79:20080205T163858Z
basename pkg:/SUNWpostgr-82-libs@8.2.5,5.11-0.79:20080205T163955Z
basename pkg:/SUNWpostgr-82-libs@8.2.4,5.11-0.75:20071114T203550Z
basename pkg:/SUNWpostgr-82-docs@8.2.4,5.11-0.75:20071114T203540Z
basename pkg:/SUNWpostgr-82-docs@8.2.5,5.11-0.79:20080205T163915Z



Good to see that PostgreSQL 8.1 and PostgreSQL 8.2 versions are already available for on-demand download. (I had cheated here. I checked  before executing the command that it did exist at http://pkg.opensolaris.org )  (NOTE: There are plans for PostgreSQL 8.3 download also but will take some time to get it out there. In the meanwhile the Solaris  binaries (i386) can be downloaded from postgresql.org which works on OpenSolaris Developer Preview 2. See below)


Notice that 8.1 has only two packages while PostgreSQL 8.2 has quite many out there. I remember that 8.1 used to have Jumbo packages but patching them was pain since the patches ended up being the whole Jumbo packages and hence for PostgreSQL 8.2 it was broken down into bunch of smaller packages. The list shows the original versions and also patched final versions. Well that causes me some problem here since I am not sure which packages to install and in what order. Fortunately pkg(5) is aware of package dependencies so that solves part of the problem but I still have to make sure all of them have been installed. I figured the best way to narrow down the list is to filter by the 5.11-0.79 stamped packages so I see the package names only once that I want to install.


# pkg search -r postgres |grep  0\.79  
basename pkg:/SUNWpostgr-82-client@8.2.5,5.11-0.79:20080205T163827Z
basename pkg:/SUNWpostgr-82-pl@8.2.5,5.11-0.79:20080205T164009Z
basename pkg:/SUNWpostgr-82-tcl@1.5,5.11-0.79:20080205T164054Z
basename pkg:/SUNWpostgr-82-server@8.2.5,5.11-0.79:20080205T164038Z
basename pkg:/SUNWpostgr-82-jdbc@8.2.504,5.11-0.79:20080205T163940Z
basename pkg:/SUNWpostgr-82-l10n-ja@0.5.11,5.11-0.79:20080205T175432Z
basename pkg:/SUNWpostgr-82-server-data-root@8.2.5,5.11-0.79:20080205T164023Z
basename pkg:/SUNWpostgr-server@8.1.10,5.11-0.79:20080205T164225Z
basename pkg:/SUNWpostgr-82-contrib@8.2.5,5.11-0.79:20080205T163847Z
basename pkg:/SUNWpostgr-82-devel@8.2.5,5.11-0.79:20080205T163858Z
basename pkg:/SUNWpostgr-82-libs@8.2.5,5.11-0.79:20080205T163955Z
basename pkg:/SUNWpostgr-82-docs@8.2.5,5.11-0.79:20080205T163915Z


# pkg install  SUNWpostgr-82-server
DOWNLOAD                                    PKGS       FILES     XFER (MB)
Completed                                    2/2     166/166   12.96/12.96

PHASE                                        ACTIONS
Install Phase                                289/289


Notice that IPS also downloaded the postgr-82-libs package.



# pkg search postgres             
basename pkg:/SUNWpostgr-82-libs@8.2.5,5.11-0.79:20080205T163955Z
basename pkg:/SUNWpostgr-82-server@8.2.5,5.11-0.79:20080205T164038Z


We can continue installing one package at a time

# pkg install  SUNWpostgr-82-client
DOWNLOAD                                    PKGS       FILES     XFER (MB)
Completed                                    1/1       64/64     3.66/3.66

PHASE                                        ACTIONS
Install Phase                                117/117


However installing multiple packages seems to make more sense to me 

# pkg install SUNWpostgr-82-jdbc SUNWpostgr-82-server-data-root SUNWpostgr-82-contrib SUNWpostgr-82-devel SUNWpostgr-82-pl SUNWpostgr-82-tcl SUNWpostgr-82-docs
DOWNLOAD                                    PKGS       FILES     XFER (MB)
Completed                                    7/7   1514/1514   12.99/12.99

PHASE                                        ACTIONS
Install Phase                              1667/1667
# ls /usr/postgres/8.2
bin  doc  etc  include    jdbc  lib  man    share



Anyway now we are now ready with PostgreSQL 8.2.5 on OpenSolaris  Developer Preview as one would normally use it on Solaris.


For now to use PostgreSQL 8.3 on OpenSolaris Developer Preview is to download the Solaris binaries from postgresql.org  and install it in /opt as follows


# cd /opt
# bunzip2 < /tmp/postgresql-8.3.0-sxde.i386.tar.bz2 | tar xpf -
# ls /opt/postgres/8.3-community/

bin  doc  etc  include    jdbc  lib  man    share



Whatever version you use just make sure you have the right directory in your PATH environment variable. Talking about PATH, you may also want to include the new /usr/gnu/bin along with your favorite path.


 


1 comment:

James Zicrov said...

I think there is a need to provide some more information about PostgreSQL or SSIS.

SSIS postgresql read