aboutsummaryrefslogtreecommitdiff
path: root/doc/unixiraf.ms
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /doc/unixiraf.ms
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'doc/unixiraf.ms')
-rw-r--r--doc/unixiraf.ms1004
1 files changed, 1004 insertions, 0 deletions
diff --git a/doc/unixiraf.ms b/doc/unixiraf.ms
new file mode 100644
index 00000000..1f8ea7bd
--- /dev/null
+++ b/doc/unixiraf.ms
@@ -0,0 +1,1004 @@
+.RP
+.TL
+UNIX/IRAF Installation and Maintenance Guide
+.AU
+Doug Tody
+.br
+Steve Rooke
+.AI
+.K2 "" "" "*"
+.br
+August 1987
+
+.AB
+The procedure for installing IRAF on a UNIX host is described.
+Procedures are given both for the initial system installation,
+and for updating an existing installation with a new version of IRAF.
+The interfaces for site specific devices such as video terminals,
+graphics terminals, printers, plotters, image displays, and so on are
+discussed, and the steps to be taken to interface a new device are
+described.
+.AE
+
+.pn 1
+.bp
+.ce
+.ps +2
+\fBContents\fR
+.ps -2
+.sp 3
+.sp
+1.\h'|0.4i'\fBIntroduction\fP\l'|5.6i.'\0\01
+.sp
+2.\h'|0.4i'\fBInstalling the System\fP\l'|5.6i.'\0\02
+.br
+\h'|0.4i'2.1.\h'|0.9i'Initial System Installation\l'|5.6i.'\0\02
+.br
+\h'|0.9i'2.1.1.\h'|1.5i'Create the `iraf' account\l'|5.6i.'\0\02
+.br
+\h'|0.9i'2.1.2.\h'|1.5i'Read the distribution tape\l'|5.6i.'\0\03
+.br
+\h'|0.9i'2.1.3.\h'|1.5i'Run the INSTALL script\l'|5.6i.'\0\03
+.br
+\h'|0.9i'2.1.4.\h'|1.5i'Relink the system if necessary\l'|5.6i.'\0\04
+.br
+\h'|0.4i'2.2.\h'|0.9i'Updating an Existing IRAF Installation\l'|5.6i.'\0\04
+.br
+\h'|0.9i'2.2.1.\h'|1.5i'Save Locally Modified Files\l'|5.6i.'\0\05
+.br
+\h'|0.9i'2.2.2.\h'|1.5i'Read the Distribution Tape or Tapes\l'|5.6i.'\0\05
+.br
+\h'|0.9i'2.2.3.\h'|1.5i'Restore Site-Dependent Files\l'|5.6i.'\0\05
+.br
+\h'|0.9i'2.2.4.\h'|1.5i'Run the INSTALL Script\l'|5.6i.'\0\06
+.br
+\h'|0.4i'2.3.\h'|0.9i'Configuring the IRAF Device Tables\l'|5.6i.'\0\07
+.br
+\h'|0.9i'2.3.1.\h'|1.5i'$hlib/zzsetenv.def\l'|5.6i.'\0\07
+.br
+\h'|0.9i'2.3.2.\h'|1.5i'$iraf/dev/devices\l'|5.6i.'\0\07
+.br
+\h'|0.9i'2.3.3.\h'|1.5i'$iraf/dev/termcap\l'|5.6i.'\0\07
+.br
+\h'|0.9i'2.3.4.\h'|1.5i'$iraf/dev/graphcap\l'|5.6i.'\0\07
+.br
+\h'|0.9i'2.3.5.\h'|1.5i'Network Tables\l'|5.6i.'\0\08
+.sp
+3.\h'|0.4i'\fBTesting the System\fP\l'|5.6i.'\0\08
+.sp
+4.\h'|0.4i'\fBReconfiguring the System\fP\l'|5.6i.'\0\09
+.br
+\h'|0.4i'4.1.\h'|0.9i'Bootstrapping the System\l'|5.6i.'\0\09
+.br
+\h'|0.4i'4.2.\h'|0.9i'Relinking the System\l'|5.6i.'\0\09
+.br
+\h'|0.9i'4.2.1.\h'|1.5i'Relinking individual packages\l'|5.6i.'\0\010
+.br
+\h'|0.4i'4.3.\h'|0.9i'Autogeneration of the System (SYSGEN)\l'|5.6i.'\0\010
+.br
+\h'|0.4i'4.4.\h'|0.9i'New Ports\l'|5.6i.'\0\011
+.sp
+5.\h'|0.4i'\fBTuning Considerations\fP\l'|5.6i.'\0\012
+.br
+\h'|0.4i'5.1.\h'|0.9i'Precompiling TERMCAP and GRAPHCAP Entries\l'|5.6i.'\0\012
+.br
+\h'|0.4i'5.2.\h'|0.9i'Stripping the System to Reduce Disk Consumption\l'|5.6i.'\0\012
+.sp
+6.\h'|0.4i'\fBInterfacing New Graphics Devices\fP\l'|5.6i.'\0\013
+.br
+\h'|0.4i'6.1.\h'|0.9i'Graphics Terminals\l'|5.6i.'\0\013
+.br
+\h'|0.4i'6.2.\h'|0.9i'Graphics Plotters\l'|5.6i.'\0\013
+.br
+\h'|0.4i'6.3.\h'|0.9i'Image Displays\l'|5.6i.'\0\014
+.sp
+7.\h'|0.4i'\fBThe IRAF Directory Structure\fP\l'|5.6i.'\0\014
+
+.nr PN 0
+.bp
+.NH
+Introduction
+.PP
+The procedure for installing IRAF on a UNIX host is complicated by the great
+variety of computers which run UNIX, by the many small differences in the
+operating system software on these machines, and by the differences in the
+hardware configurations of the various machines. Fortunately, however,
+most sites installing UNIX/IRAF will be installing IRAF on a system which
+is already directly supported by NOAO, in which case the installation should
+be straightforward.
+.PP
+This system installation and maintenance guide describes those operations and
+procedures which are the same regardless of the peculiarities of each vendor's
+UNIX implementation. To install or update IRAF on a specific machine you
+will need both this manual and the installation notes for your particular
+host system. For example, to install IRAF on a Sun workstation you will
+follow the instructions given in this manual, plus those given in the
+\fISun/IRAF Installation Notes\fR.
+.PP
+The distribution tape is a snapshot of one of our local (NOAO/Tucson) UNIX/IRAF
+systems. The device and system configuration tables come configured for our
+system, and will have to be modified as part of the installation process.
+These modifications are discussed in detail in this document.
+To simplify the installation process as well as future upgrades, we have tried
+to isolate the site dependent files to the minimum number of directories, i.e.,
+\fLdev\fR, \fLhlib\fR (a subdirectory of \fL$iraf/unix\fR), and \fLlocal\fR and its
+subdirectories. The remainder of the system should not require any
+modifications.
+.sp
+.TS
+center;
+cb s s
+l l l.
+IRAF HOTLINE
+.sp
+telephone \fL(602) 323-4160\fP
+internet iraf@noao.arizona.edu
+BITnet iraf@noao.arizona.edu
+ (via Wisconsin gateway until 1 Dec 87)
+SPAN/HEPnet (DECnet) draco::iraf or 5356::iraf
+UUCP/Usenet seismo!noao!iraf, ihnp4!noao!iraf,
+ uunet!noao.arizona.edu!iraf (after 1 Sept 87)
+.TE
+.PP
+An installation typically takes about an hour, somewhat longer if relinking is
+necessary. Interfacing new graphics terminals, plotters, or image displays
+can take considerably longer, of course, and we will only touch upon such
+matters in the installation guide. Feel free to contact the IRAF hotline for
+assistance if any problems should arise during the installation, or for help
+in interfacing new devices.
+
+.NH
+Installing the System
+.PP
+The procedures to be followed to install the system depend upon whether you
+are installing IRAF for the first time, or merely updating an existing IRAF
+installation. If you updating an existing installation to the latest IRAF
+release you have less work to do, as you will have already modified the
+site-dependent files as part of the previous installation.
+Proceed to \(sc2.2 if that is the case.
+
+.NH 2
+Initial System Installation
+.PP
+This section documents the procedure for installing a binary distribution
+tape prepared on a compatible (VAX, Sun, or Microvax) system at NOAO.
+The procedure outlined in this section is also used to install a source
+distribution, the difference being that when one is done it is still
+necessary to do a sysgen to compile and link the system.
+If you have already installed IRAF and are merely installing a new release
+of the system, proceed to \(sc2.2 instead of following the procedure
+outlined here.
+.LP
+The basic system installation procedure is as follows:
+.RS
+.IP \(bu
+create the `iraf' account
+.IP \(bu
+read the distribution tape or tapes (UNIX \fItar\fR format)
+.IP \(bu
+run the \fLinstall\fR script
+.IP \(bu
+configure the device tables
+.RE
+.PP
+This should suffice for the basic installation of a full binary distribution.
+If executables were not included with the distribution (a "you relink" type
+distribution) then relinking will also be necessary, but this is easy.
+In some cases it may be desirable to delete all binaries and recompile the
+entire system, e.g., to reconfigure the system for different floating point
+hardware. Once the basic system is up and running it will still be necessary
+to provide interfaces for the terminals, printers, plotters, and so on in
+use at your site, in order to have a fully functional system.
+
+.NH 3
+Create the `iraf' account
+.PP
+The first step is to set up an account for user `iraf'.
+IRAF is a big system and we do not recommend trying to install it as a
+subdirectory of someone's personal account. IRAF system maintenance
+should be performed by the IRAF system manager while logged into the `iraf'
+account, to ensure that the environment is properly configured to run the
+system management tools. Ordinary users should not have write permissions
+on the IRAF directories to avoid accidental deletion of critical files.
+.PP
+The pathname to the root directory does not matter, but it is wise to keep
+it short to speed up pathname resolution and to minimize the possibility
+of filename truncation. A typical IRAF root directory is "\fL/usr/iraf\fR"
+or "\fL/u/iraf\fR". The account should be set up to use \fL/bin/csh\fR as the
+standard shell. The disk partition containing IRAF should have about 60 Mb
+of space available for the system; if necessary, the system can be stripped
+later to save space, but the full 60 Mb is required during system installation.
+.PP
+In what follows, we refer to the IRAF root directory as "\fL$iraf\fR", as if it
+were a cshell \fIsetenv\fR environment variable. Note that during the
+initial stages of the installation this variable may not yet be defined,
+hence you should be prepared to manually substitute the actual pathname
+when entering the commands shown.
+.PP
+Contrary to common practice,
+the login directory for `iraf' is not \fL$iraf\fR as one would expect,
+but \fL$iraf/local\fR. This is done so that all local files may be kept
+in one place, apart from the standard system. This simplifies system
+updates and makes it easier to keep track of locally added or modified files.
+When creating the iraf account be sure to set up the root directory in this
+way, else when you later login as `iraf' you will not access the
+standard \fL.login\fR etc. files in the \fL$iraf/local\fR directory.
+
+.NH 3
+Read the distribution tape
+.PP
+The system is distributed on one or more UNIX \fItar\fR format tapes or
+cassettes. Login as IRAF, go to the IRAF root directory, and enter the
+\fLtar\fR command shown for each tape in the distribution kit.
+The order in which the tapes are read is not important.
+Note that the \fL$iraf/local\fR directory, \fL.login\fR file,
+etc., will not be created
+until the tape is read, so the login will not be completely successful,
+but this is harmless. Note also that the environment variable \fIiraf\fR
+has probably not yet been defined, so you must substitute the actual
+pathname to the iraf root directory when entering the commands shown below.
+.DS
+\fL% cd $iraf
+% tar -xpf /dev/\fIdevice\fR
+.DE
+The full system contains something like 7000 files in over 250 directories;
+printing the filenames (e.g., with \fLtar -tv\fR) as the tape is read is not
+recommended, as this can slow things down considerably.
+It typically takes a half hour or so to restore the tape or tapes to disk.
+.NH 3
+Run the INSTALL script
+.PP
+Once the system has been restored onto disk, most of the remaining work
+required for the basic installation is done by the semi-automated \fIinstall\fR
+script supplied with the system. The install script edits various IRAF system
+configuration files to reflect the pathname to IRAF on the local system,
+and installs a few links in standard UNIX directories to define the UNIX
+level tasks necessary for the user to start up IRAF.
+.PP
+The install script may be run in "do-nothing" mode by specifying the -n
+option on the command line, as in the example below. This is recommended
+the first time the script is run so that you can see what questions will be
+asked and what the script will do, without actually doing anything.
+.DS
+\fL% cd $iraf/unix/hlib
+% install -n\fR
+.DE
+The script will make educated guesses regarding the pathname to the iraf
+root directory, the pathname to the UNIX directory where locally added
+commands are normally put, and the pathname to the public scratch directory
+(\fLimdir\fR) where bulk image data is to be stored,
+and then ask for you to enter
+the pathnames to these directories, prompting with the values it has guessed.
+If the prompted value is acceptable hit return to accept it, otherwise
+you should enter a new value.
+.PP
+As mentioned earlier, typical values for the IRAF root directory are
+\fL/usr/iraf\fR or \fL/u/iraf\fR.
+If the actual directory is more obscure the script
+will fail to find it and you must enter the actual path. Locally added UNIX
+level tasks are most commonly put in a directory like \fL/usr/local/bin\fR,
+but any directory in the normal user's search path will do, even \fL/usr/bin\fR
+if you have not defined a \fLlocal/bin\fR directory on your system.
+.PP
+Most likely the script will not find any good place for \fLimdir\fR,
+and will prompt
+with \fL/tmp\fR for lack of anything better. This will work during the initial
+system testing, but is not recommended as a permanent solution as your image
+files will be deleted every time the system is rebooted. On the other hand,
+we do not recommend storing bulk image data directly in the user directories
+as the disk management policies for large but short-lived data files tend to
+be different than those for small but long-lived user files. The best solution
+is to set aside a large area (on our system it is \fL/tmp2\fR,
+\fL/tmp3\fR, etc.) which
+is not backed up daily or weekly, and in which files which have not been
+modified for two weeks or so are automatically deleted. Another advantage of
+a separate area for large data files on BSD derived systems is that when you
+make the files system you can specify a larger than normal file system block
+size to increase the i/o bandwidth to disk.
+.LP
+Once you are happy with the installation procedure, become super user and
+run the install script for real, without leaving the \fLhlib\fR directory:
+.DS
+\fL% su
+% install\fR
+.DE
+You should now log out entirely and log back in as `iraf'.
+Type "\fLecho $iraf\fR"
+to verify that the system knows what the root directory is. If you have
+installed a full binary distribution on a compatible machine you should be
+able to run IRAF by entering the commands \fBmkiraf\fR to configure the IRAF
+environment for user `iraf' (while still in the \fL$iraf/local\fR login
+directory) and \fBcl\fR to start up the IRAF Command Language (CL).
+If the CL does not run you must relink or recompile and relink the system,
+as described in the next section.
+
+.NH 3
+Relink the system if necessary
+.PP
+Relinking the IRAF system is necessary if the distribution was shipped
+without the executables in the \fLbin\fR directory (e.g. a `you-relink'
+system). In order to relink, the system must first have been
+\fIbootstrapped\fR; see \(sc4.1 if in doubt or if it is necessary
+to perform a bootstrap. `You-relink' and of course `load-and-go'
+distributions are already bootstrapped; source only distributions are not.
+.PP
+Relinking is covered in greater detail in \(sc4.2. Briefly, to relink the
+entire system while spooling the output, run \fLmkpkg\fR from the IRAF root
+directory:
+.DS
+\fL% cd $iraf
+% mkpkg >& spool &\fR
+.DE
+See \(sc4.3 for information on inspecting a spoolfile for errors.
+A relink-only sysgen might take a half hour or so depending on the
+hardware configuration and system loading.
+.PP
+If IRAF is being installed on a host machine which is binary incompatible
+with the distributed system (e.g., because the local host uses floating point
+hardware not available at NOAO) then it may be necessary to strip the binaries
+and recompile the system from scratch. Recompiling the full system can easily
+take an entire day (of computer time, not person time).
+
+.NH 2
+Updating an Existing IRAF Installation
+.PP
+Skip to \(sc2.3 if you are installing IRAF for the first time. This section
+is for sites upgrading to a new version of IRAF.
+.PP
+Updating a UNIX/IRAF installation is similar to the initial installation
+procedure. The main difference is that local modifications made to the
+site dependent files should be saved and then merged back into the generic
+system from the distribution tape. The typical update process consists of
+the following steps:
+.RS
+.IP \(bu
+Save any locally modified files.
+.IP \(bu
+Delete the old system.
+.IP \(bu
+Read the distribution tape.
+.IP \(bu
+Restore site-dependent files.
+.IP \(bu
+Run the \fLinstall\fR script.
+.IP \(bu
+Relink the system if necessary.
+.RE
+.NH 3
+Save Locally Modified Files
+.PP
+Login as IRAF. Ordinarily the only directories containing files you may wish
+to save are \fLdev\fR, \fLhlib\fR (\fL$iraf/unix/hlib\fR), and \fLlocal\fR.
+The safest and easiest way to do this is to save the entire contents of
+those directories. For example:
+.DS
+\fL% cd $iraf
+% mkdir O
+% mv dev local unix/hlib O\fR
+.DE
+Many variations on this are of course possible. The basic idea is to move
+the old directories to a nonstandard place so that they are not deleted or
+overwritten when we install the new system.
+.NH 3
+Read the Distribution Tape or Tapes
+.PP
+Having temporarily preserved all directories containing the locally modified
+files, it is now time to delete the old system and read in the new one. If
+you are the cautious type you may wish first to preserve the entire
+existing IRAF system on an archive tape (e.g. if something were to have
+happened to the distribution tape en route). The old system may be deleted
+as follows (assuming IRAF owns all the files in \fL$iraf/*\fR):
+.DS
+\fL% cd $iraf
+% rm -rf [a-z]*\fR
+.DE
+This will preserve the old site local files in subdirectory "O".
+Now read the distribution tape or tapes:
+.DS
+\fL% tar -xpf /dev/\fIdevice\fR
+.DE
+.LP
+Repeat this for each tape in the distribution set. The order in which the
+tapes are restored is not important.
+.NH 3
+Restore Site-Dependent Files
+.PP
+You can either merge the contents of locally modified files saved from
+the previous installation into their counterparts in the new system, or edit
+the new ones from scratch. Whichever is easier depends on how much editing
+you had to do in the first place, which probably depends upon the complexity
+of your local computer network and the number of peripheral devices.
+Any of the site configuration files might have been modified in the new
+release of IRAF, so in general one cannot simply replace such a file with
+the one that was saved.
+.PP
+Merging means inspecting the two files (newly distributed vs. its
+saved counterpart) for differences, and deciding how to update the new
+file with local device names, directory pathnames, etc.
+The UNIX "\fLdiff\fR" utility may be useful for this,
+depending on how much a file has changed, and how extensively it
+was modified locally. One thing that is a big help is to keep track of
+all local changes made to the standard system in a local "notes" file;
+when the next system update occurs or when the installation is repeated on
+another cpu at the local site, one can then go down the list and make all
+the same changes to the newly installed system.
+.KS
+.TS
+center;
+ci ci ci
+l l l.
+directory files [and possibly]
+.sp
+\fLdev\fR devices, graphcap, termcap [, hosts, hostlogin, uhosts]
+\fLhlib\fR zzsetenv.def [, mkpkg.inc, mkpkg.sf]
+\fLlocal\fR (any local additions) [, all . (hidden) files]
+.TE
+.KE
+.PP
+The files which should be edited, via a diff/merge operation on the saved
+files or otherwise, are summarized in the table above.
+It is likely that only some of these files will have been modified at a
+given site; the ones in brackets are used at IRAF networking sites, for
+nonstandard compilation, and possibly window-system startup files for
+workstations. In principle the entire contents of the \fLlocal\fR
+directories are site-dependent and may be preserved in toto during an
+update, but this is not true for all versions of IRAF, and sometimes
+we add things to these directories which user sites may be useful to user
+sites as well.
+.PP
+The \fLinstall\fR script, new in IRAF V2.5, takes care of the editing
+that previously was done manually on such files as \fLhlib$mkiraf.csh\fR
+and \fLhlib$libc/iraf.h\fR, so it is not necessary to diff/merge these files.
+.NH 3
+Run the INSTALL Script
+.PP
+Use of the \fLinstall\fR script is described in detail in \(sc2.1.3, and is
+summarized only briefly here. To preview its effects (still logged in as
+`iraf'):
+.DS
+\fL% cd $iraf/unix/hlib
+% install -n\fR
+.DE
+If you are satisfied, login as superuser and execute it for real, still
+in the \fLhlib\fR directory:
+.DS
+\fL% su
+% install\fR
+.DE
+Then log out entirely and back in as `iraf'. Verify that the system
+knows where the root directory is, using "\fLecho $iraf\fR". At this
+point you can test the system as described in the last paragraph of
+\(sc2.1.3. If everything works, the installation is complete, and the
+remainder of this manual will serve for system maintenance or when
+device configurations change. If the CL does not run, you must relink
+or recompile and relink the system as described in \(sc2.1.4.
+
+.NH 2
+Configuring the IRAF Device Tables
+.PP
+The following files should now be edited to define the default terminal,
+printer, editor, and so on for your system. Any part of this can be left
+until later if desired.
+.NH 3
+$hlib/zzsetenv.def
+.PP
+This file contains the name of the default editor, the default names of all
+the standard devices, and a number of other definitions which are not site
+dependent and which can therefore be ignored. To be accessible by the IRAF
+system, each local device named must also have an entry in the \fLtermcap\fR
+file (terminals and printers) or \fLgraphcap\fR file (graphics terminals and
+image displays) in \fLdev\fR. There must also be an \fIeditor\fL.ed\fR
+file in \fLdev\fR
+for the named editor; EDT, EMACS, and VI are currently supported.
+Edit the string to the right of the equals sign for the following entries.
+Sample values are shown.
+.DS
+\fLset editor = "vi"
+set printer = "imagen"
+set stdgraph = "vt640"
+set stdimage = "iism70l"
+set stdplot = "versatec"
+set terminal = "vt640"\fR
+.DE
+For example, you may wish to change the default editor to "\fLemacs\fR",
+the default printer to "\fLversatec\fR", the default image display to
+"\fLiism75\fR", and the default terminal to "\fLvt100\fR". Note that the set of
+devices for which interfaces are already available is steadily growing
+but always finite. The issues of interfacing new graphics and image
+display devices are discussed further in \(sc6.
+.NH 3
+$iraf/dev/devices
+.PP
+This file contains a list of the allocatable devices (primarily tape drives)
+for the local system. It should be obvious how to change it by reading the
+comments in the file and studying the current values, which are for our system.
+.NH 3
+$iraf/dev/termcap
+.PP
+There must be entries in this file for all local terminal and printer
+devices you wish to access from IRAF (there is no \fLprintcap\fR file in IRAF).
+The entry for a printer contains one special (nonstandard termcap) entry,
+called DD. This consists of three fields: node!device, the template for the
+temporary spoolfile, and the UNIX command to be used to dispose of the file to
+the printer. On Berkeley UNIX it is rarely necessary to make use of the node
+name capability, since the UNIX \fLlpr\fR already provides this capability.
+.PP
+If you have a new terminal which has no entry in the termcap file provided,
+you probably already have an entry in the UNIX termcap file. Simply copy it
+into the IRAF file; both systems use the same termcap database format.
+However, if this is also a graphics terminal with a device entry in
+\fLdev$graphcap\fR, you should add a `\fL:gd\fR' capability to the termcap
+entry. If the graphcap entry has a different name from the termcap entry,
+make it `\fL:gd=\fIgname\fR'.
+.NH 3
+$iraf/dev/graphcap
+.PP
+There must be entries in this file for all graphics terminals, batch plotters,
+and image displays accessed by IRAF programs. Weird graphics terminals will
+need a new entry. The IRAF file \fLsys$gio/doc/gio.hlp\fR contains docs for
+graphcap. A printed copy of this document is available upon request, however
+once IRAF is up you may find it easier to generate your own copy using
+\fLhelp\fR, as follows:
+.DS
+\fLcl> cd sys$gio/doc
+cl> help gio.hlp fi+ | lprint\fR
+.DE
+The manual page for the \fBshowcap\fR task should also be printed since this
+utility is useful for generating new graphcap entries. More focused
+documentation will be available eventually. Help is available for those who
+need it via the IRAF Hotline. We ask that new graphcap entries be sent
+back to us so that we may include them in the master graphcap file for other
+sites to use.
+.NH 3
+Network Tables
+.PP
+The \fLdev\fR directory also contains a number of files (\fLhosts\fR,
+\fLhostlogin\fR, and \fLuhosts\fR)
+used by the IRAF network software. We depend upon the networking capabilities
+of IRAF heavily at NOAO to access image displays, printers, files, etc. resident
+upon remote nodes (the IRAF network interface is also capable of spawning
+subprocess and background jobs on remote nodes, and works even when the nodes
+run different host operating systems, e.g., both UNIX and VMS).
+.PP
+We expect that most sites will not need this capability initially, hence
+documentation of the networking software will be left for later. For sites
+that want to try it out, all that is necessary to enable networking is to
+edit the three networking files in the \fLdev\fR directory, and install IRAF on
+the other nodes. It does not matter what native operating system runs on the
+remote nodes, so long as it runs IRAF as well. The source for the network
+interface is in the \fLsys$ki\fR directory, and a discussion of the conceptual
+design of the interface is given in the \fLREADME\fR file in that directory.
+
+.NH
+Testing the System
+.PP
+Once the system has been installed or updated and the principal device tables
+configured, it is time to perform a few simple tests to make sure the system
+is working properly. At this point it would probably be wise to read the
+CL User's Guide, if you have not already done so. Once the IRAF environment
+is configured with \fLmkiraf\fR (discussed earlier) one need only enter the
+"cl" command to start up the CL.
+.DS
+\fL% cl\fR
+.DE
+After a bit IRAF should print the message of the day and the root IRAF menu,
+and issue the \fLcl> \fR prompt.
+Once in the CL, you will probably have magtape and printer access, are likely
+to have graphics terminal access, and very possibly will not have either
+image display access or graphics plotter access. If the graphics terminal
+capability is ready, the next step is to run the IRAF test procedure to
+verify that all is working well, as well as try out a few of the many tasks
+in the system. If the graphics terminal is not up yet, there is probably
+no point in running the test procedure. To run the test procedure,
+familiarize yourself with the documentation in Volume 1A of the
+\fIIRAF User Handbook\fR and follow the instructions therein.
+
+.NH
+Reconfiguring the System
+.NH 2
+Bootstrapping the System
+.PP
+All current normal IRAF distributions come with the system already bootstrapped.
+A bootstrap should not be necessary unless one is doing something unusual,
+e.g., attempting a new port.
+.PP
+A bootstrap is like a full system sysgen, except that it is the host
+system interface (kernel and bootstrap utilities) which are compiled and
+linked, rather than IRAF itself. The system must be bootstrapped before
+a sysgen is possible, since the bootstrap utilities are required to do a
+sysgen. The two operations are distinct because only the bootstrap is
+machine dependent; everything else works the same on all IRAF systems.
+.PP
+The bootstrap operation is necessary when installing the system from a
+source only distribution tape. We assume that the files in the host system
+interface have already been configured for the host system. If this is
+not the case, then we are doing a port, which is a lot more ambitious than
+a simple bootstrap.
+.PP
+To bootstrap UNIX/IRAF, go to the \fLunix\fR directory and interpret the shell
+script \fLmkpkg.csh\fR. This takes about 45 minutes, so the output should be
+spooled in a file. Note that (for no good reason) the files have a \fL.csh\fR
+extension even though we have chosen to use the Bourne shell to execute
+the commands therein.
+.DS
+\fL% cd $iraf/unix
+% sh -x mkpkg.csh >& spool &\fR
+.DE
+A bootstrap recompiles everything whether it needs to or not, so it is
+usually not necessary to delete the binaries before doing a full bootstrap.
+
+.NH 2
+Relinking the System
+.PP
+Relinking the system is necessary if the system was shipped without
+the executables in the \fLbin\fR directory. In order to relink the system must
+first have been bootstrapped. When the system is shipped without
+executables (to save space) it will already have been bootstrapped.
+If it is necessary to bootstrap the system, e.g., given a source only
+distribution, go read \(sc4.1 before trying to relink the system.
+.PP
+The system is relinked by the bootstrap utility program \fBmkpkg\fR.
+The \fLmkpkg\fR program is driven by the \fLmkpkg\fR files found in all IRAF
+source directories. Running \fLmkpkg\fR in a directory causes the
+contents of that directory, normally an applications package or library,
+to be updated, along with the contents of all subdirectories referenced
+by the root \fLmkpkg\fR file.
+.PP
+Running \fLmkpkg\fR in the root IRAF directory causes the entire system to
+be updated. If the system libraries are all up to date, the effect is to
+relink the system. If the system has been modified and some library modules
+have to be recompiled and inserted into the system libraries, then the
+operation is a partial sysgen. If there are no libraries or object libraries
+then we have a full sysgen, which is the topic of the next section.
+The \fLmkpkg\fR utility is documented in detail in Volume 1B of the
+IRAF User Handbook, in the manual pages for the \fLsoftools\fR package.
+.LP
+To relink all of IRAF, go to the root and run \fLmkpkg\fR, i.e.,
+.DS
+\fL% cd $iraf
+% mkpkg\fR
+.DE
+The program will inspect all source modules and verify that the system
+libraries are up to date, then relink the system executables, followed by
+all the applications executables, installing the executable files in the
+\fLbin\fR directory.
+.NH 3
+Relinking individual packages
+.PP
+It is just as easy to relink the individual IRAF packages, e.g., after
+a bug has been fixed, or if an update of a package is received by electronic
+mail. This would normally be done from within IRAF since the next step
+is to test the new package. We will use the \fLcl> \fR prompt in the
+examples, but since \fLmkpkg\fR is a bootstrap utility (IRAF foreign task),
+usage is the same both in IRAF and in UNIX.
+.LP
+To relink a package and install the new executable in \fLbin\fR:
+.DS
+\fLcl> mkpkg update\fR
+.DE
+To relink a package, leaving the executable in the package directory for
+testing or debugging prior to installation:
+.DS
+\fLcl> mkpkg\fR
+.DE
+To install an already linked executable after testing:
+.DS
+\fLcl> mkpkg install\fR
+.DE
+To update only the package library without relinking (this assumes that the
+name of the library is \fLlibpkg.a\fR):
+.DS
+\fLcl> mkpkg libpkg.a\fR
+.DE
+The "update", "install", and "libpkg.a" identifiers are entry points in the
+\fLmkpkg\fR file, which may be read to see what is going on.
+.PP
+As an actual example of a package relink, suppose we wanted to increase the
+size of the stack area in the CL to 8000 elements, e.g., because the CL was
+running out of space at runtime. We would go to the CL directory, edit
+the file \fLconfig.h\fR, change the value of \fLSTACKSIZ\fR to \fL8000\fR,
+and then run \fLmkpkg\fR:
+.DS
+\fLcl> cd cl
+cl> ed config.h
+cl> mkpkg update\fR
+.DE
+Since \fLconfig.h\fR is included by nearly all the CL source files, the entire
+package would be recompiled unnecessarily, but it is safer that way.
+
+.NH 2
+Autogeneration of the System (SYSGEN)
+.PP
+A full system sysgen is necessary when installing a source only version
+of the system. The system must first have been bootstrapped; see \(sc4.1
+if this has not yet been done. A full sysgen may also be necessary if
+a binary distribution has been received but it is later discovered that it is
+necessary or desirable to recompile the system. In this case the existing
+libraries and objects \fImust be deleted\fR before the sysgen, else the sysgen
+will be nothing more than a relink. The \fBrmbin\fR utility is used to
+descend a directory tree, deleting all binary files therein. Note that
+the ONLY case in which it is necessary to use \fLrmbin\fR is when we wish
+to force the entire system to be recompiled. The \fLrmbin\fR task is yet
+another bootstrap utility, and is documented in the manual pages for the
+\fLsoftools\fR package.
+.DS
+\fL% cd $iraf
+% rmbin -vi bin lib pkg sys\fR
+.DE
+This will delete all binaries in the portable part of the system, excluding
+the \fLhost\fR or \fL$iraf/unix\fR directories (if you run \fLrmbin\fR on the
+\fL$iraf/unix\fR directories, you will have to bootstrap the system as well).
+.PP
+Before starting the full system sysgen it may be desirable to review the
+switches in the file \fLmkpkg.inc\fR in the \fLhlib\fR directory.
+This is the global include file for the \fLmkpkg\fR utility,
+and contains various switches controlling \fLmkpkg\fR, e.g., which packages
+will be compiled, and the default compiler and linker flags.
+.PP
+Since a full sysgen takes a long time and generates a lot of output which
+later has to be reviewed, they are always run in batch with the output
+redirected, e.g.:
+.DS
+\fL% cd $iraf
+% mkpkg >& spool &\fR
+.DE
+To watch what is going on after this command has been submitted and while
+it is running, try
+.DS
+\fL% tail -f spool\fR
+.DE
+Sysgens are restartable, so if the sysgen aborts for any reason, simply
+fix the problem and start it up again.
+.PP
+A full sysgen generates a lot of output, too much to be safely reviewed for
+errors by simply paging the spool file. Enter the following command to review
+the output (this assumes that the output has been saved in a file named
+\fLspool\fR).
+.DS
+\fL% mkpkg summary\fR
+.DE
+It is normal for a number of compiler messages warning about assigning
+character data to an integer variable to appear in the spooled output.
+These are harmless on most (but not all) machines, and are due to questionable
+coding practices in the old NCAR graphics utilities and some of the math
+library routines, all of which are coded in Fortran (SPP code never causes
+such problems!).
+.PP
+The discussion up to now has centered on the full system sysgen.
+Partial sysgens are actually much more common. For example, if an important
+bug is fixed in the VOS or in the IRAF kernel, a (partial) sysgen should be
+conducted to recompile the affected modules and relink the system.
+An example of this occurs when the \fLtermcap\fR or \fLgraphcap\fR entries
+for important local devices are cached by running the \fBttycompile\fR
+task (another \fLsoftools\fR utility). A sysgen is required after regenerating
+the cache tables, since these must be compiled and linked into the affected
+programs to have any effect.
+
+.NH 2
+New Ports
+.PP
+We recommend that you contact the IRAF group for assistance if you are
+contemplating porting IRAF to a new host machine.
+To port IRAF to a new version of UNIX requires some modifications to the
+files in the host interface directories (\fL$iraf/unix/\fR...),
+followed by a full
+sysgen and lots of testing. Typically most of the code in the host interface
+can be used without change, with only minor changes to the remaining code,
+since the different versions of UNIX are quite similar (as compared to,
+for example, a port to a completely different operating system like VMS or
+AOS/VS).
+.PP
+Note that even when the target system is a "fully compatible" 4.X BSD UNIX
+system, some changes are likely to be necessary since all of these systems
+are slightly different. For example, the SUN and ISI implementations of
+BSD UNIX employ different assemblers, and the Fortran compilers on the
+two systems have diverged considerably. A port to Bell System V or one of
+the UNIX look alikes would certainly require some changes to the IRAF kernel,
+particularly in the exception handling, process control, and network interface
+facilities.
+.PP
+The changes required are likely to be minor for someone sufficiently familiar
+with both IRAF and UNIX, but should not be underestimated. Every new port
+produces its share of compile time errors (due to differences in the Fortran
+compilers) and finds a few new bugs, sometimes in the IRAF software but more
+often in the host Fortran compiler, now that IRAF has been ported to so many
+systems. A thorough understanding of both IRAF and the host system is required
+to rapidly isolate such bugs.
+
+.NH
+Tuning Considerations
+.PP
+There are two things that are commonly done to tune UNIX/IRAF for a
+particular host system:
+.RS
+.IP \(bu
+Precompile selected \fLtermcap\fR and \fLgraphcap\fR entries
+.IP \(bu
+Strip the system to reduce disk consumption
+.RE
+.LP
+The most important optimization is precompilation of the termcap and graphcap
+entries of the devices most commonly used at the local site, particular when
+running IRAF on a slow machine. Stripping the system is inadvisable if the
+system is to be used for software development, but is normally desirable when
+installing a production version of IRAF on a small system with limited disk
+space, e.g., a workstation.
+
+.NH 2
+Precompiling TERMCAP and GRAPHCAP Entries
+.PP
+Precompilation of a termcap or graphcap entry is a technique used to
+speed runtime access of the entry for that device. If the entry is not
+precompiled the termcap or graphcap file must be physically opened and
+scanned at runtime to read the desired entry. This causes a noticeable
+delay of as much as a second when clearing the terminal screen or plotting
+a graph, hence it is usually worthwhile to cache the entries for commonly
+used video and graphics terminals. It is not worthwhile for printers,
+plotters, and image displays.
+.PP
+The system comes with selected termcap and graphcap entries already
+precompiled. To see which devices are precompiled, page the cache data
+files, \fLdev$cachet.dat\fR (for termcap) and \fLdev$cacheg.dat\fR
+(for graphcap).
+To cache a different set of entries one must regenerate these files with the
+\fBmkttydata\fR task in the \fLsoftools\fR package, and then do a full
+sysgen with the \fLmkpkg\fR utility. Detailed instructions are given in
+the manual page for \fLmkttydata\fR.
+.PP
+Note that if you wish to precompile and relink the system to cache selected
+termcap or graphcap device entries and plan to strip the system as well to
+save disk space, \fIyou must cache the termcap and graphcap entries before
+stripping the system\fR, because once the system is stripped you cannot
+relink.
+
+.NH 2
+Stripping the System to Reduce Disk Consumption
+.PP
+If the system is to be installed on multiple cpus, or if a production
+version is to be installed on a workstation, it may be necessary or desirable
+to strip the system of all non-runtime files to save disk space.
+This equates to deleting all the sources and all the reference manuals and
+other documentation, excluding the online manual pages. A special utility
+called \fBrmfiles\fR (in the \fLsoftools\fR package, of course) is provided
+for this purpose. It is not necessary to run \fLrmfiles\fR directly to strip
+the system. The preferred technique is to enter the commands given below.
+The example is for the cshell for consistency with the rest of this document,
+but this could be done from within the CL as well.
+.DS
+\fL% cd $iraf
+% mkpkg strip\fR
+.DE
+This will preserve all runtime files, permitting use of the standard system
+as well as user software development. The size of the system is reduced
+from about 50 Mb (megabytes) to around 26 Mb. One can optionally enter the
+command \fLmkpkg stripall\fR to delete the system libraries as well, but this
+saves only another couple of Mb and a full sysgen or a tape reload will be
+required to regain the capability to link user programs with the IRAF
+libraries (including IMFORT), or relink the IRAF executables.
+.PP
+Note: if the \fLvms\fR directory is present at the \fL$iraf\fR root,
+it may be removed entirely. On a full system it takes up over 3Mb, and
+may be present on some distribution tapes for UNIX/IRAF cut on our master
+development system.
+
+.NH
+Interfacing New Graphics Devices
+.PP
+There are three types of graphics devices that concern us here.
+These are the graphics terminals, graphics plotters, and image displays.
+
+.NH 2
+Graphics Terminals
+.PP
+The IRAF system as distributed is capable of talking to just about any
+conventional graphics terminal and most workstations' terminal emulators,
+using the \fLstdgraph\fR
+graphics kernel supplied with the system. All one need do to interface to a
+new graphics terminal is add a new graphcap entry for the device. This can
+take anywhere from a few hours to a few days, depending on one's level of
+expertise, and the perversity of the device in question. Be sure to check
+the contents of the \fLdev$graphcap\fR file to see if the terminal is already
+supported, before trying to write a new entry. Assistance in interfacing new
+graphics terminals is available via the IRAF Hotline.
+
+.NH 2
+Graphics Plotters
+.PP
+The current IRAF system comes with several graphics kernels used to drive
+graphics plotters. The standard plotter interface is via the SGI graphics
+kernel, which has largely replaced the older \fLNCAR\fR kernel used in earlier
+versions of IRAF (in those earlier versions the \fLNCAR\fR kernel was called
+the \fLstdplot\fR kernel). Further information on the SGI plotter interface
+is given in the paper \fIThe IRAF Simple Graphics Interface\fR, a copy of which
+is included with the installation kit.
+.PP
+SGI device interfaces for most
+plotter devices already exist, and adding support for new devices is
+straightforward. Sources for the SGI device translators supplied with the
+distributed system are maintained in the directory \fL$iraf/unix/gdev/sgidev\fR.
+NOAO serves as a clearinghouse for new SGI plotter device interfaces;
+contact us if you do not find support for a local plotter device in the
+distributed system, and if you plan to implement a new device interface let
+us know so that we may help other sites with the same device.
+.PP
+The older \fLNCAR\fR kernel is used to generate NCAR metacode and can be
+interfaced to an NCAR metacode translator at the host system level to get
+plots on devices supported by host-level NCAR metacode translators.
+The host level NCAR metacode translators are not included in the standard
+IRAF distribution, but public domain versions of the NCAR implementation for
+UNIX systems are widely available. A site which already has the
+NCAR software may wish to go this route, but the SGI interface will provide
+a more efficient and simpler solution in most cases.
+.PP
+The remaining possibility with the current system is the \fLcalcomp\fR kernel.
+Many sites will have a Calcomp or Versaplot libary (or Calcomp compatible
+library) already available locally. To make use of such a library to get
+plotter output on any devices supported by the interface, one may copy
+the library to the \fLhlib\fR directory and relink the Calcomp graphics
+kernel.
+.PP
+A graphcap entry for each new device will also be required. Information on
+preparing graphcap entries for graphics devices is given in the GIO design
+document, and many actual working examples will be found in the graphcap
+file. The best approach is usually to copy one of these and modify it.
+
+.NH 2
+Image Displays
+.PP
+The current IRAF system does not yet have a well defined and well isolated
+device independent image display interface. Work on such an interface is
+currently underway; contact the IRAF group at NOAO for further information
+on the status of the new display interfaces. Further information on the
+image display interfaces currently available may be found in the
+\fIIRAF Newsletter\fR.
+.PP
+If there is no IRAF interface for your device, the best approach at present is
+to use the IMFORT interface and whatever non-IRAF display software you
+currently have to construct a host level Fortran or C display program
+(a number of people have also managed to construct an interface by hacking
+the IRAF display software in \fLpkg$images/tv/display\fR).
+The IMFORT library provides host system Fortran or C programs with access
+to IRAF images on disk. Documentation on the IMFORT interface is available in
+\fIA User's Guide to Fortran Programming in IRAF -- The IMFORT Interface\fR,
+Doug Tody, September 1986, a copy of which is included in the IRAF User
+Handbook, Volume 1A.
+
+.NH
+The IRAF Directory Structure
+.PP
+The current full UNIX/IRAF directory structure is documented graphically in
+the appendix. The main branches of the tree are the following; beneath the
+directories shown are some 250 subdirectories, the largest directory trees
+being \fLsys\fR, \fLpkg\fR, and \fLnoao\fR. The entire contents of all
+directories other than \fLunix\fR, \fLlocal\fR, and a few configuration files
+in \fLdev\fR are fully portable, and are identical in all installations
+of IRAF sharing the same version number.
+.DS
+\fLbin \fR- installed executables
+\fLdev \fR- device tables (\fLtermcap\fR, \fLgraphcap\fR, etc.)
+\fLdoc \fR- assorted IRAF manuals
+\fLlib \fR- the system library; object libraries, global files
+\fLlocal \fR- iraf login directory; locally added software
+\fLmath \fR- sources for the mathematical libraries
+\fLnoao \fR- packages for NOAO data reduction
+\fLpkg \fR- the IRAF applications packages
+\fLsys \fR- the virtual operating system (VOS)
+\fLunix \fR- the UNIX host system interface (HSI = kernel + bootstrap utilities)
+.DE
+.LP
+The contents of the \fLunix\fR directory (host system interface) are
+as follows:
+.DS
+\fLas \fR- assembler sources for UNIX/IRAF
+\fLboot \fR- bootstrap utilities (mkpkg, rtar, wtar, etc.)
+\fLgdev \fR- graphics device interfaces (SGI device translators)
+\fLhlib \fR- host dependent runtime files
+\fLmc68000 \fR- Motorola 68xxx assembler sources
+\fLmkpkg.sh \fR- executed to bootstrap the UNIX/IRAF HSI
+\fLos \fR- OS interface routines (UNIX/IRAF kernel)
+\fLrmbin.sh \fR- executed to delete binary files in subdirectories
+.DE
+.PP
+If you will be working with the system much at the system level, it will be
+well worthwhile to spend some time exploring these directories and gaining
+familiarity with the system.