CustomSolarisPackages

From JetResources
Jump to: navigation, search

Introduction

This document contains the procedures to follow when creating custom ACME packages for use within Solaris 9 and Solaris 8 builds that can then form part of your JET Builds. Packages within Solaris 10 have changed a bit and are ‘zone aware’ …… this is not covered in this document.

Solaris Packages and JET

The Solaris build methodology in use within ACME is JET. JET (Jumpstart Enterprise Toolkit) can use either

  • Custom scripts OR
  • Custom packages

As of Solaris 9 the decision was made to move away from custom scripts and over to custom packages.

Packages have more advantages of scripts in that they are self checking and under version control. The remainder of this document walks the reader through an example of how to make such custom packages.

Package source directory on JET (jet-master) The package source at the time of writing this document was

/export/source/pkgs

Building Solaris Packages

Give your Package a Name

A package needs a unique name and traditionally the first 4 characters help to identify the vendor. For this example we will use.

  • ACMEaardvark

Create the source directory structure

# mkdir –p /export/source/pkgs/ACMEaardvark/1.0/
# cd /export/source/pkgs/ACMEaardvark/1.0/

Create a pkginfo file

# vi pkginfo

PKG="ACMEaardvark"
NAME="ACME aardvark package”
ARCH="sparc"
VERSION="1.0"
CATEGORY="application"
VENDOR="ACME"
EMAIL="firstname.lastname@ACME.co.uk"
PSTAMP"15th August 2006"
BASEDIR="/etc"
CLASSES="none"

Create a preinstall script

# vi preinstall

#!/bin/ksh
#do nothing

Create a postinstall script

# vi postinstall

#!/bin/ksh
#do nothing

Supply your files to be packaged

For example

# touch aardvark.txt
# echo “this is the ACMEaardvark package” >> aardvark.txt

Create a prototype file

# cd /export/source/pkgs/ACMEaardvark/1.0/
# find . -print | pkgproto >> prototype

Edit this file and modify it so it looks similar to the one shown below

i pkginfo=./pkginfo
i preinstall=./preinstall
i postinstall=./postinstall
f none aardvark.txt 0644 root other

Make your package

# cd /export/source/pkgs/ACMEaardvark/1.0/
# pkgmk -r `pwd`

Copy package to the JET install area

# mkdir -p /export/install/pkgs/ACMEaardvark/1.0/
# mv /var/spool/pkg/ACMEaardvark /export/install/pkgs/ACMEaardvark/1.0/

Test the package install

As root on a test server(jet-client) do the following

root@jet-client# cd /net/jet-server/export/install/pkgs/ACMEaardvark/1.0/
root@jet-client# /net/jet-server/export/install/pkgs/ACMEaardvark/1.0> pkgadd -d .

The following packages are available:
  1  ACMEaardvark     ACME aardvark package
                      (sparc) 1.0

Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]:

Processing package instance <ACMEaardvark> from </net/jet-server/export/install/pkgs/ACMEaardvark/1.0>

ACME aardvark package
(sparc) 1.0
ACME
 

Using </etc> as the package base directory.
## Processing package information.
## Processing system information.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.

This package contains scripts which will be executed with super-user
permission during the process of installing this package.

Do you want to continue with the installation of <ACMEaardvark> [y,n,?] y

Installing ACME aardvark package as <ACMEaardvark>

## Executing preinstall script.
## Installing part 1 of 1.
/etc/aardvark.txt
[ verifying class <none> ]
## Executing postinstall script. 

Installation of <ACMEaardvark> was successful.

The following packages are available:
  1  ACMEaardvark     ACME aardvark package
                      (sparc) 1.0

Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: q

Copy this new package to the JET install area (making it available for JET installs)

Should you wish to make your new package available during a JET build perform the following on the JET master (jet-server):

root@jet-client# copy_custom_packages /export/install/pkgs/ACMEaardvark/1.0/ sparc ACMEaardvark ACMEaardvark
Transferring <ACMEaardvark> package instance
Transferring <ACMEaardvark> package instance
Packages copied

The ACMEaardvark package is now available for installs via post-install and during a JET build.

To add ACMEaardvark to a JET template do similar to that shown below:

Change the following line in your template

From

custom_packages_1="l”

To

custom_packages_1="ACMEaardvark”


You will then have to re run `make_client –f <jet-client>` as per the standard JET install instructions.