| Sidebar: UNIX System V Release 4 Software Packages
 
The setup script discussed in the article does not
install 
software. The setup script makes links from wherever
the software 
is actually installed (the "package") so that
the software 
appears to be installed in a set of directories under
/opt. 
Before you can run the setup script against a package,
you 
must have installed the package, or must have configured
the software 
to look like an installed package. 
We install packages on "local" disks, which
are NFS-mounted 
on workstations and other servers as /home/server/l00,
where 
the last two digits indicate the lab or domain. We normally
install 
no software directly on workstations, other than that
included as 
part of the initial operating system installation. All
software "packages" 
are forced into the configuration required by our setup
script, 
as described in the article. 
Software packages are defined by the UNIX System V Application
Binary 
Interface (ABI) to ensure that software can be packaged
for installation 
on any compliant platform. This sidebar is a brief overview
of software 
packages. For practical details and examples, see your
OS documentation, 
for example, Sun's Application Packaging and Installation
Guide. 
The software packages scheme defines a standard format
for a package 
on the distribution media (tape or CD-ROM), and a standard
set of 
tools for installing and removing packages. A package
may contain 
operating system or application software. (Sun also
uses this scheme 
for packaging all its Solaris software patches.) 
On the distribution medium, a package contains a certain
minimum set 
of files that define how the package is to be installed.
Every "object" 
(file, directory, pipe, socket) in the package is listed,
along with 
where it goes, what its permissions should be, and so
on. When a package 
is installed (the pkgadd command under Solaris), the
package 
information is kept in a database under /var/sadm so
that 
the package can later be verified or removed. 
The SVR4 ABI says nothing about the installed content
of a package 
or how users are to access the installed package. For
example, if 
you install ten packages, each of which has executables
in a /bin 
subdirectory, your OS manual likely suggests adding
each /bin 
subdirectory to your search path. With a few packages
and infrequent 
changes, this will work. With close to one hundred packages
and frequent 
changes, it does not work for us. Hence the setup script. 
Another subtle problem with software packages is that
they seem to 
have been defined without reference to the problems
of administering 
a large network of workstations. Under Solaris, it is
assumed that 
you will install packages on each and every machine
(with the exception 
of diskless and dataless clients). This is impractical,
even if we 
had the disk space. 
There is a particular problem applying patches. The
installpatch utility 
will not follow the symbolic links in our /opt tree.
If the 
patch affects only an /opt/SUNW* package, a copy can
be temporarily 
installed on /opt, patched, and then moved to a local
disk 
and set up. Crude and painful, but it gets the job done. 
But if the patch affects objects outside the /opt tree
(not unusual), 
and so must be applied on every workstation, this solution
does not 
work. The /var/sadm database on each workstation does
not show that 
the patch is installed, but the package as linked through
/opt is 
already patched, so the attempt to apply the patch dies
horribly. 
We have resorted to modifying the installpatch script,
or just hacking 
away by hand, in these cases. Very painful. Sun needs
a more flexible 
way of applying patches -- a way that is network-smart. 
Installpatch also keeps under /var/sadm a complete copy
of 
all files patched, so that a patch may be backed out.
This is a great 
idea. However, it seems rather wasteful to store this
data on every 
one of perhaps a hundred identically installed and patched
workstations! 
I don't even want to think about how many hundreds of
megabytes of 
space we have devoted to this. Again, it looks as though
no thought 
went into the problems of administering large numbers
of workstations 
on a network. 
We're working on a more elegant solution to these problems,
just in 
case the vendors take years to do it themselves. Perhaps
that will 
be the subject of a future article.  
 
 
 |