This post will act as a rough guide for how you get your package building going on Solaris, from the perspective of someone who is used to Linux and has built an RPM or two.

The goal is to have a pkg-file with files to-be-installed in, installation, uninstallation and upgrade scripts, the dependencies should be handled.

Making yourself comfortable

The Solaris 10 I’ve been working with (or rather, the Solaris 10 zone), is rather naked at start. Your .bashrc should probably include something like this:

TERM=xterm;export TERM

And set your shell to /opt/csw/bin/bash in /etc/passwd. Also, note that sudo is not installed by default, you might want to install it or use the ACL-like pfexec.

You need to setup your project so that the build tools will get you. First of all, install the pkgutil and pkgutilplus packages.

Preparing your project for packaging

Create a folder in your project to hold our metadata. I’ll call it just that, “metadata”. It should contain at least a pkginfo file but can contain several other files.

Defining your project’s dependencies

Since your program might rely on other packages presence, you’d want to know how to specify them. We will start by finding out the relation between the newly created pkginfo-file and the pkginfo command. Try typing pkginfo -l [package name] to see an already installed package’s properties, or add the -d flag: pkginfo -l -d [path to pkg file] if you want to check the properties of a local copy of a package.

In the metadata folder

Finding packages

In order to manage the dependencies, you will have to bundle in a single, large, pkg-file. The dependencies must either be installed locally or found in any of your mirrors defined in /etc/opt/csw/pkgutil.conf (much like apt-get’s /etc/apt/sources.list or yum’s /etc/yum.repos.d/*.repo-files).

Decide what the installation will look like

You can help users install your package by providing an administration file.

pkgadd

pkginfo

pkgproto

pkgtrans

bldcat –stream

chkcat

prototype

administration file

Further reading: