Software installation opinions needed

John Grow john at pcad.UUCP
Wed Sep 26 07:02:29 AEST 1990


Here are a few things we do with our installation scripts for the installation
of our electronic CAD package for PCB layout.  This is a list of steps
required for us:

	Before running the installation script, determine where you want
	  to place our software.  This can be anywhere, but it is recommended
 	  that it be placed where it can be accessed via NFS.  Next extract
	  the first tar file on the tape into that directory.  This contains
	  the installation scripts.  cd into the directory and run installme.

	Select platform.  Select architectures for which you want to
	  load architecture dependent software.

	Load the software.  There are four parts: one required and
	  three optional.  User selects what to load in a menu format.
          The software gets loaded into <wherever>/bin.<arch>

	Install the "command."  This step installs a script which invokes
	  the rest of the application when the application is run.  It sets
          up the environment variables needed by the application.  We
          recommend that it be placed somewhere in the users' path, but
          invoking it with an absolute path works fine.  Information needed
          from the installer for this step is the location of the directory
          where the software is installed in a form accessible over the
          network which is put into the script.  The user is also asked
	  where to place the script.

	Manage Network Licenses.  Our application makes use of a third
	  party floating network license application which requires
	  us to create a directory in /usr/adm, a symbolic link in /etc
          and modify the rc.local file.  However, each step is explained
          before it is done and the installer is told what to do to do
          this himself if he does not want the script to take care of it
          for him.

	Load optional libraries.  In addition to our executables, there
	  are several (50 - 100) optional parts libraries.  These are
	  selected from a menu and loaded after the installer selects
	  what he wants.  These can be located anywhere, but the default
	  is underneath the directory where everything else is loaded.


Here are a few things I found getting the installation scripts for our
software written:

While the rc.local file is modified (either by the installation scripts
or by hand), only a line calling another file, rc.<vendor> (ours is rc.pcad),
is inserted.  The rc.<vendor> file does all the necessary startup work.
This allows us to plug in a new release more easily if the startup sequence
changes for some reason.  Only the rc.<vendor> file needs to be replaced.
There is no need to try editing the rc.local file again for later releases.
Another advantage is that the rc.<vendor> file can be run independently if,
for some reason, the call to it is removed from rc.local, or the installer
decides not to modify rc.local.

Installation directories should be specified by the user.  The only things
which we cannot change are those required by the third part licensing
package we use.

If the disk space required by all the software is large, let customers
load only what they need.

The only part of the installation which requires root access concerns
the 3rd party license package over which we have no control.

Allow loading from a remote tape drive.

The last file in a group of files loaded from tape should be a checkpoint file
which the installation script can check.  If it doesn't exist, the
load is incomplete.

Before loading, the script should check available disk space and inform
installer if not enough is available.  While this is not foolproof (someone
can use up more disk space after a load has started), it works fairly well.

Executing all the software from a single script allows the following:
  
  Environment variables do not need to be set before running the software.
  Any needed are set up by the script.  The one set by ours is a path
  variable specifying the location(s) of files needed by our application.

  The executables and configuration files needed by the application should
  be kept in one spot.  There are is no need to mix these in with other files
  in a /usr/bin (or wherever) directory.  This script is the only
  file which should need to be installed in the users' path, and it should
  be callable by absolute path.

  The PATH variable does not need to be changed.

Document in the installation guide the files which may/will be
installed/changed.  Also, the installation guide should explain
step by step what the installation program is doing, and give examples
where needed.

Like with many other vendors, a large number of our customers are UNIX
novices.  It is necessary to use a script which provides reasonable defaults
to get our product installed.    I have reservations about someone
without system administration experience doing root tasks, but with
the trend of more people buying workstations, it is tough to avoid.

As far as other software packages go, Saber C was pretty good.  It had
a menu based installation script and put all its executables in a single
directory of your choice.  The only executable necessary in the users'
path was a script which got it going.  An rc file change was necessary 
(for their network license manager), but the script told you what to append
to the file instead of modifying it itself.

-- 
John Grow                   |   uucp:    (uunet!pcad!john)
Personal CAD Systems/CADAM  |
1 Technology Park Drive     |
Westford, MA 01886          |



More information about the Comp.unix.admin mailing list