diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
commit | fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch) | |
tree | bdda434976bc09c864f2e4fa6f16ba1952b1e555 /doc/unixiraf.ms | |
download | iraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz |
Initial commit
Diffstat (limited to 'doc/unixiraf.ms')
-rw-r--r-- | doc/unixiraf.ms | 1004 |
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. |