QEF home page
11. Installing and the Install Log

In this section we build the rest of the project and introduce qefdirs, the multi-directory manager.


Table of Contents
Previous Page
Next Page

Before we leave this directory, let's build and install the balance.
% qef Install Man
#{ Install Man @gobo 2003/07/20 02:22:32
# QEFHALTFILE: /g/dt/cook/obj/ctoe/%qef31186b.hlt
+ cc -c -I. -I/g/dt/cook/work/ctoe -I/p/cook/s3.4/ctoe \
        -I/p/qtree/9.1/linux2_0i/include \
	    /p/cook/s3.4/ctoe/ctoe.c
+ qyacc -h -yctoe /p/cook/s3.4/ctoe/ctoey.y
+ qlex -yctoe /p/cook/s3.4/ctoe/ctoel.l
yacc: 6 shift/reduce conflicts.
+ instal -d /g/dt/cook/dest/man/man1/ctoe.1
	/p/cook/s3.4/ctoe/ctoe.1
+ instal -d /g/dt/cook/dest/man/man1/etoc.1
	/p/cook/s3.4/ctoe/etoc.1
+ cc -c -I. -I/g/dt/cook/work/ctoe -I/p/cook/s3.4/ctoe \
        -I/p/qtree/9.1/linux2_0i/include ctoey.c
+ cc -c -I. -I/g/dt/cook/work/ctoe -I/p/cook/s3.4/ctoe \
        -I/p/qtree/9.1/linux2_0i/include ctoel.c
+ cc -o ctoe ctoe.o ctoey.o ctoel.o \
	    -L/p/qtree/9.1/linux2_0i/lib -ldt \
	    /p/qtree/9.1/linux2_0i/lib/libl.a
+ instal -E -d /g/dt/cook/dest/bin/ctoe ctoe
+ instal -E -d /g/dt/cook/dest/bin/etoc etoc
#} E0 gobo@/g/dt/cook/obj/ctoe 2003/07/20 02:22:42(10)
The Instal Log

One of the features of the instal (used for most installations) is the audit trail named by the qvrs variable InstLog. This variable is usually set in the project's top level tree.vrs file using the following:

cset	InstLog		@RootDir/instal.log
To examine the @InstLog file:
% qvrs @InstLog  # retrieve value of InstLog
/g/dt/cook/obj/instal.log

% tail `!!`  # tail the instal log
# /*^ cleanilog -puv ^F
dest/man/man1/ctoe.1 dt  20030720 02:22  ctoe:src/ctoe/ctoe.1
dest/man/man1/etoc.1 dt  20030720 02:22  ctoe:src/ctoe/etoc.1
dest/bin/ctoe        dt  20030720 02:22  ctoe:ctoe
dest/bin/etoc        dt  20030720 02:22  ctoe:etoc

The com line (/*^ cleanilog) is the command to clean up the log (e.g., remove duplicate entries and references to non-existent files). This line was added manually.

The fields of the instal record are:

  1. the installed file's path name (e.g., /g/dt/cook/dest/bin/etoc)
  2. the user id of the installer (e.g., dt)
  3. the date and time the file was installed (e.g., 20030720 01:26)
  4. the directory from which the install was done and the source file relative to that directory (e.g., ctoe:etoc)
Why is instal misspelled?
% x-qmisc faq8
faq8(x-qmisc)  Why is Q-Tree's instal program misspelled?

Because so many versions of install are mis-implemented.

The second `l' is elided to ensure that the Q-Tree instal is used
as versus implementations of install that often vary greatly and
are never as paranoid as instal.  One of the primary objectives
of the qef package is consistent behaviour across all platforms.
This often means that the system must provide its own utilities,
rather than risk wide variations in semantics and interfaces.

Note:	On one university system the author found over two dozen
	variations of install, with a wide range of semantics
	and syntaxes. Note instal will not install an empty file
	unless the -e flag is specified because that same
	university's file system so often quietly created empty
	files.

instal has a variety of flags to control the installation of a file. The qvrs variable _F_instal is used to specify universal flags, whereas _F_instal[file] is used to specify the flags for file. The _F_instal flag is usually set in the default and prototype file /QefAdm/confvrs/deflconf.vrs to:

 cset _F_instal -qIs
The --q quiets instal, that is suppresses the default reporting of sub-commands. The --s specifies that installed programs are to be stripped.
instal -I and the instal.fix file

Some flags, such as --o user, --g group, or --M mode can fail due to permissions. The --I flag specifies that instal is not to fail (i.e., exit with a non-zero status) in the event of such a failure. In such instances a record is added to a file whose name is determined by changing the '.log' of InstLog to '.fix'. The records are in the form read by tchown, as illustrated by the following example lines:

102755  ^       mail    /p/qtree/9.1/linux2_0i/bin/mvmail
104755  root    ^       /p/qtree/9.1/linux2_0i/bin/sc

This features allows one to install software as a user other than root (which we believe is a good thing) and then make the ownership, group, and mode changes as required by a user with appropriate permission after validation that the settings are kosher.


cook21.qh - 1.17 - 03/10/24 QEF home page Table of Contents Previous Page Next Page