mirror of
https://git.openafs.org/openafs.git
synced 2025-01-20 07:51:00 +00:00
52557c982e
needs more massaging to make it fit the tree, but, get it here first
4202 lines
77 KiB
HTML
4202 lines
77 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<HTML
|
|
><HEAD
|
|
><TITLE
|
|
>Configuring Client Machines with the package Program</TITLE
|
|
><META
|
|
NAME="GENERATOR"
|
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
|
|
REL="HOME"
|
|
TITLE="AFS Administration Guide"
|
|
HREF="book1.html"><LINK
|
|
REL="UP"
|
|
TITLE="Managing Client Machines"
|
|
HREF="p21471.html"><LINK
|
|
REL="PREVIOUS"
|
|
TITLE="Administering Client Machines and the Cache Manager"
|
|
HREF="c21473.html"><LINK
|
|
REL="NEXT"
|
|
TITLE="Managing Users and Groups"
|
|
HREF="p24911.html"></HEAD
|
|
><BODY
|
|
CLASS="chapter"
|
|
BGCOLOR="#FFFFFF"
|
|
TEXT="#000000"
|
|
LINK="#0000FF"
|
|
VLINK="#840084"
|
|
ALINK="#0000FF"
|
|
><DIV
|
|
CLASS="NAVHEADER"
|
|
><TABLE
|
|
SUMMARY="Header navigation table"
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TH
|
|
COLSPAN="3"
|
|
ALIGN="center"
|
|
>AFS Administration Guide: Version 3.6</TH
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="left"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="c21473.html"
|
|
ACCESSKEY="P"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="80%"
|
|
ALIGN="center"
|
|
VALIGN="bottom"
|
|
></TD
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="right"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="p24911.html"
|
|
ACCESSKEY="N"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"></DIV
|
|
><DIV
|
|
CLASS="chapter"
|
|
><H1
|
|
><A
|
|
NAME="HDRWQ419"
|
|
></A
|
|
>Chapter 11. Configuring Client Machines with the package Program</H1
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program automates many aspects of the client configuration process. With the
|
|
<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program, you can easily configure the local disk of numerous clients by defining global
|
|
configuration files. </P
|
|
><DIV
|
|
CLASS="sect1"
|
|
><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="HDRWQ420"
|
|
>Summary of Instructions</A
|
|
></H1
|
|
><P
|
|
>This chapter explains how to perform the following tasks by using the indicated commands or instructions in a prototype
|
|
file:</P
|
|
><DIV
|
|
CLASS="informaltable"
|
|
><A
|
|
NAME="AEN23853"
|
|
></A
|
|
><TABLE
|
|
BORDER="0"
|
|
FRAME="void"
|
|
CLASS="CALSTABLE"
|
|
><COL
|
|
WIDTH="37*"><COL
|
|
WIDTH="63*"><TBODY
|
|
><TR
|
|
><TD
|
|
>Configure a client machine's local disk</TD
|
|
><TD
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
>Define directory</TD
|
|
><TD
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>D</B
|
|
></SPAN
|
|
> [update_code] directory owner group mode_bits</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
>Define file</TD
|
|
><TD
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>F</B
|
|
></SPAN
|
|
> [update_code] file source_file [owner group mode_bits]</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
>Define symbolic link</TD
|
|
><TD
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>L</B
|
|
></SPAN
|
|
> [update_code] link actual_file [owner group mode_bits]</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
>Define block special device</TD
|
|
><TD
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>B</B
|
|
></SPAN
|
|
> device_name major_device_number minor_device_number owner group
|
|
mode_bits</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
>Define character special device</TD
|
|
><TD
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>C</B
|
|
></SPAN
|
|
> device_name major_device_number minor_device_number owner group
|
|
mode_bits</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
>Define socket</TD
|
|
><TD
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>S</B
|
|
></SPAN
|
|
> socket_name [owner group mode_bits]</TD
|
|
></TR
|
|
></TBODY
|
|
></TABLE
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="HDRWQ422"
|
|
>Using the package Program</A
|
|
></H1
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program uses system-independent <SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>prototype files</I
|
|
></SPAN
|
|
> to
|
|
define a standard disk configuration; a prototype file indicates which files reside on the local client disk, which files are
|
|
links into AFS, etc. The prototype files are then compiled into <SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>configuration files</I
|
|
></SPAN
|
|
> for each different
|
|
system type.</P
|
|
><P
|
|
>Not all client machines have the same configuration. If desired, you can create different prototype files for different
|
|
client functions (print server, regular client, etc.).</P
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program compares the contents of a local client disk with the configuration
|
|
file. If there are any differences, the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program makes the necessary updates to the
|
|
local disk by copying the files from AFS onto the disk. The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program can also be
|
|
configured to delete files that are not part of the system configuration or automatically reboot the client when certain files
|
|
(such as the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>dkload</B
|
|
></SPAN
|
|
> file) have been updated.</P
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program does require that you take some time to prepare the prototype files,
|
|
but it provides the following benefits: <UL
|
|
><LI
|
|
><P
|
|
>You no longer need to configure each machine individually; the prototype configuration file applies to all
|
|
machines.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>You can change the configuration of machines simply by changing the prototype file and rebooting the clients.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Disk organization is uniform across a set of machines.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>The configuration files serve as a record of files on the disk and symbolic links into AFS.</P
|
|
></LI
|
|
></UL
|
|
></P
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="Header_494"
|
|
>Using Package on File Server Machines</A
|
|
></H2
|
|
><P
|
|
>While the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program was designed for use on client machines, it can also be used
|
|
to configure a file server machine's disk. However, if any of the files referred to in a configuration file reside in volumes
|
|
on the file server, the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program cannot access the volumes during reboot (and until
|
|
the File Server process and Volume Server process start up again).</P
|
|
><P
|
|
>Since the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program aborts when it cannot access a file, you need to eliminate
|
|
references to files in AFS that reside in volumes on the file server machine. Because of these constraints, the remainder of
|
|
this chapter assumes the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program is being used for client configurations.</P
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="HDRWQ423"
|
|
>Package Overview</A
|
|
></H1
|
|
><P
|
|
>There are three main steps to follow before running the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program: <OL
|
|
TYPE="1"
|
|
><LI
|
|
><P
|
|
>Preparing function-specific <SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>prototype files</I
|
|
></SPAN
|
|
> (and any included <SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>library
|
|
files</I
|
|
></SPAN
|
|
>).</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Modifying the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
> and compiling
|
|
prototype files into system-specific <SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>configuration files</I
|
|
></SPAN
|
|
>.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Modifying client machines to run the appropriate <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> configuration file
|
|
automatically.</P
|
|
></LI
|
|
></OL
|
|
></P
|
|
><P
|
|
>The following sections summarize these steps.</P
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="Header_496"
|
|
>Preparing Prototype Files</A
|
|
></H2
|
|
><P
|
|
>Begin by listing the different functions or roles client machines perform and the local disk configurations that support
|
|
those functions. Example roles include a standard client that provides AFS access, a print server that drives a printer, and a
|
|
backup machine on which you issue commands from the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>backup</B
|
|
></SPAN
|
|
> suite. Create a different
|
|
<SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>prototype file</I
|
|
></SPAN
|
|
> for each role.</P
|
|
><P
|
|
>A prototype file defines the disk configuration that supports a specific role. Usually, prototype files are
|
|
function-specific, but system independent; system-specific values can be defined using variables and library files. Then, when
|
|
you modify a variable or library file, the change gets propagated to all appropriate clients when the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program is invoked.</P
|
|
><P
|
|
>Methods for building flexible prototype files that are easy to maintain are presented in <A
|
|
HREF="c23832.html#HDRWQ427"
|
|
>Example Prototype and Library Files</A
|
|
>.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="HDRWQ424"
|
|
>Compiling Prototype Files</A
|
|
></H2
|
|
><P
|
|
>Prototype files are usually system-independent, but can include <SAMP
|
|
CLASS="computeroutput"
|
|
>ifdef</SAMP
|
|
> statements to
|
|
satisfy the needs of different system types. The prototype files are compiled to generate operating-system specific versions.
|
|
During compilation, the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program selects the definitions suitable for each system type
|
|
and replaces any variables with actual values. These compiled, machine-specific files are called <SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>configuration
|
|
files</I
|
|
></SPAN
|
|
>.</P
|
|
><P
|
|
>Prototype files are compiled using a standard-type <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
> file, as described in <A
|
|
HREF="c23832.html#HDRWQ438"
|
|
>The Package Makefile File</A
|
|
>.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="Header_498"
|
|
>Preparing Clients</A
|
|
></H2
|
|
><P
|
|
>Once system-specific configuration files exist, the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program is ready to run on
|
|
the clients. You must first make the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> binary available and specify the correct
|
|
configuration file.</P
|
|
><P
|
|
>Modify the clients as described below: <OL
|
|
TYPE="1"
|
|
><LI
|
|
><P
|
|
>Create a <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>.package</B
|
|
></SPAN
|
|
> file in the root ( <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/</B
|
|
></SPAN
|
|
> )
|
|
directory of each client's local disk that defines the default configuration file.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Make the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> binary (<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/etc/package</B
|
|
></SPAN
|
|
>) available
|
|
on the local disk.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Modify the machine's initialization file (<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/etc/rc</B
|
|
></SPAN
|
|
> or equivalent) to include a
|
|
call to the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program.</P
|
|
></LI
|
|
></OL
|
|
></P
|
|
><P
|
|
>These steps are discussed more completely in <A
|
|
HREF="c23832.html#HDRWQ447"
|
|
>Modifying Client Machines</A
|
|
>.</P
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="HDRWQ425"
|
|
>The package Directory Structure</A
|
|
></H1
|
|
><P
|
|
>This section assumes that the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
>-related files have been installed in three
|
|
subdirectories of the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/afs/</B
|
|
></SPAN
|
|
>cellname/<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>wsadmin</B
|
|
></SPAN
|
|
> directory:
|
|
<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>src</B
|
|
></SPAN
|
|
>, <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>lib</B
|
|
></SPAN
|
|
> and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>etc</B
|
|
></SPAN
|
|
>, as
|
|
recommended in the <SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>IBM AFS Quick Beginnings</I
|
|
></SPAN
|
|
>.</P
|
|
><P
|
|
>These directories contain several sample prototype, library, and configuration files, which can help to clarify how the
|
|
<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program works. However, they are not necessarily suitable for use in your cell; you
|
|
must modify them for your needs.</P
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="HDRWQ426"
|
|
>The src directory</A
|
|
></H2
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>src</B
|
|
></SPAN
|
|
> directory contains some sample prototype files (used to build the configuration
|
|
files), the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
> file used to build them, and the resulting compiled configuration
|
|
files.</P
|
|
><P
|
|
>Prototype files have names of the form function.<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>proto</B
|
|
></SPAN
|
|
>. For example, a <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>minimal.proto</B
|
|
></SPAN
|
|
> file defines the minimum set of library files need to run AFS and a<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>staff.dkload.proto</B
|
|
></SPAN
|
|
> file defines a client configuration that uses the a dynamic kernel loading program.
|
|
Prototype files can also contain definitions for system administrative files, such as a <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>hosts.equiv</B
|
|
></SPAN
|
|
> file.</P
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
> file is used to compile the system-independent prototype files into
|
|
system-specific configuration files. To learn how to modify this file for use in your cell, see <A
|
|
HREF="c23832.html#HDRWQ438"
|
|
>The
|
|
Package Makefile File</A
|
|
>.</P
|
|
><P
|
|
>Configuration files are the compiled version of the prototype files and are named function<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>.</B
|
|
></SPAN
|
|
>sysname. Configuration files also appear in the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>etc</B
|
|
></SPAN
|
|
> subdirectory,
|
|
which the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program accesses when configuring disks.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="Header_501"
|
|
>The lib directory</A
|
|
></H2
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>lib</B
|
|
></SPAN
|
|
> directory contains many of the example library files referred to in prototype
|
|
files. For example, the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>base.generic</B
|
|
></SPAN
|
|
> file is a system-independent file which includes a
|
|
definition of the cell name, system options, and variables; these are used to set the owner, group, and mode_bits fields in
|
|
the file and the symbolic link definitions.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="Header_502"
|
|
>The etc directory</A
|
|
></H2
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>etc</B
|
|
></SPAN
|
|
> directory contains the system-specific configuration files built from the
|
|
prototype files in the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>src</B
|
|
></SPAN
|
|
> subdirectory. The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program
|
|
uses the configuration files in the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>etc</B
|
|
></SPAN
|
|
> directory to configure disks.</P
|
|
><P
|
|
>Some of the example files include <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>minimal</B
|
|
></SPAN
|
|
> and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>staff</B
|
|
></SPAN
|
|
>
|
|
prototype files compiled for different system types.</P
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="HDRWQ427"
|
|
>Example Prototype and Library Files</A
|
|
></H1
|
|
><P
|
|
>A prototype file is a template that defines the configuration of a client's local disk. Prototype files are usually
|
|
function-specific (for example, a backup machine, print server, etc.) but system-independent. Prototype files support the use of
|
|
<SAMP
|
|
CLASS="computeroutput"
|
|
>ifdef</SAMP
|
|
> statements and variables, so you can include system-specific definitions. The actual
|
|
system-specific configuration file is generated when the prototype file is compiled.</P
|
|
><P
|
|
>The components defined in a prototype file can include the directories, files, symbolic links, block special devices,
|
|
character special devices and sockets that need to reside on a client's local disk in order for it to perform a specific role,
|
|
such as a print server or backup machine. Thus, we recommend that you construct a unique prototype file for each different
|
|
client function.</P
|
|
><P
|
|
>To make the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program more effective and easy to maintain, create prototype files
|
|
that are modular and generic, instead of specific, by using library files and variables: <UL
|
|
><LI
|
|
><P
|
|
>By creating general-purpose library files, you can include the same library file in many prototype files. Thus, you
|
|
can make global configuration changes by modifying a single library file; you do not need to modify each prototype
|
|
file.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Variables enable you to change definitions simply by changing the variable's value.</P
|
|
></LI
|
|
></UL
|
|
></P
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="HDRWQ428"
|
|
>An Example Prototype File</A
|
|
></H2
|
|
><P
|
|
>The following is part of an example prototype file that contains the minimum definitions necessary to run AFS. A similar
|
|
file called <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>minimal.proto</B
|
|
></SPAN
|
|
> can reside in your <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>src</B
|
|
></SPAN
|
|
>
|
|
subdirectory. As recommended, this prototype file references library files and does not include actual definitions.</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> .
|
|
.
|
|
# Package prototype for a minimal configuration.
|
|
# Base components
|
|
%include ${wsadmin}/lib/base.generic
|
|
# Machine-specific components
|
|
%ifdef rs_aix42
|
|
%include ${wsadmin}/lib/rs_aix42.readonly
|
|
%include ${wsadmin}/lib/rs_aix42.AFS
|
|
%endif rs_aix42
|
|
%ifdef alpha_dux40
|
|
%include ${wsadmin}/lib/alpha_dux40.readonly
|
|
%include ${wsadmin}/lib/alpha_dux40.AFS
|
|
%endif alpha_dux40
|
|
%ifdef sun4x_56
|
|
%include ${wsadmin}/lib/sun4x_56.readonly
|
|
%include ${wsadmin}/lib/sun4x_56.AFS
|
|
%endif sun4x_56
|
|
.
|
|
.
|
|
</PRE
|
|
><P
|
|
>In the previous example, the first uncommented line includes the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/lib/base.generic</B
|
|
></SPAN
|
|
>
|
|
library file. This library file can contain definitions appropriate for many prototype files; the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>base.generic</B
|
|
></SPAN
|
|
> library file can also be included in other prototype files, like a <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>staff.proto</B
|
|
></SPAN
|
|
> or <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>backup.proto</B
|
|
></SPAN
|
|
> file. An example library file appears in
|
|
the following section.</P
|
|
><P
|
|
>Note that system-specific definitions are permitted through the use of <SAMP
|
|
CLASS="computeroutput"
|
|
>ifdef</SAMP
|
|
> statements
|
|
and variables (for example, <SAMP
|
|
CLASS="computeroutput"
|
|
>${wsadmin}</SAMP
|
|
> is used to specify pathnames). Thus, the same
|
|
prototype file can be used to configure a machine running AIX 4.2 or Solaris 2.6, even though they require different files,
|
|
directories, symbolic links and devices.</P
|
|
><P
|
|
>In the next uncommented lines of this example, the administrator has constructed different library files for different
|
|
system types. Each of these is compiled into unique configuration files. For instance, the following lines in this prototype
|
|
file tell the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program to use the library files <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>lib/rs_aix42.readonly</B
|
|
></SPAN
|
|
> and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>lib/rs_aix42.AFS</B
|
|
></SPAN
|
|
> for the configuration file
|
|
when the value rs_aix42 has been declared. (The system-type definition is declared in the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
>; see <A
|
|
HREF="c23832.html#HDRWQ438"
|
|
>The Package Makefile File</A
|
|
>.)</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> %ifdef rs_aix42
|
|
%include ${wsadmin}/lib/rs_aix42.readonly
|
|
%include ${wsadmin}/lib/rs_aix42.AFS
|
|
%endif rs_aix42
|
|
</PRE
|
|
><P
|
|
>Similarly, the following lines tell the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program to use the library files
|
|
<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>lib/sun4x_56.readonly</B
|
|
></SPAN
|
|
> and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>lib/sun4x_56.AFS</B
|
|
></SPAN
|
|
> when the value
|
|
sun4x_56 has been declared.</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> %ifdef sun4x_56
|
|
%include ${wsadmin}/lib/sun4x_56.readonly
|
|
%include ${wsadmin}/lib/sun4x_56.AFS
|
|
%endif sun4x_56
|
|
</PRE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="Header_505"
|
|
>Example Library File</A
|
|
></H2
|
|
><P
|
|
>The following is part of an example library file for basic configuration definitions. A similar file, called <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>base.generic</B
|
|
></SPAN
|
|
>, can reside in your <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>lib</B
|
|
></SPAN
|
|
> subdirectory. Note that
|
|
configurations are defined using standard <SAMP
|
|
CLASS="computeroutput"
|
|
>ifdef</SAMP
|
|
> statements.</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> .
|
|
.
|
|
#
|
|
# Base package definitions.
|
|
#
|
|
%ifndef cell
|
|
%define cell abc.com
|
|
%endif cell
|
|
%ifndef sys
|
|
%include /etc/package.sys
|
|
%endif sys
|
|
%define ${name} ${name}
|
|
%define ${cpu} ${cpu}
|
|
%define ${sys} ${sys}
|
|
%define ${dept} ${dept}
|
|
%define ${hostname} ${hostname}
|
|
%ifdef rs_aix42
|
|
% define AIX
|
|
% define rootlinks
|
|
%ifndef noafsd
|
|
% define afsd
|
|
%endif noafsd
|
|
%endif rs_aix42
|
|
.
|
|
.
|
|
#
|
|
# Some definitions to handle common combinations of owner, group,
|
|
# and protection fields.
|
|
#
|
|
%define rzmode root wheel 600
|
|
%define usermode root wheel 666
|
|
%define systemmode root wheel 644
|
|
%define diskmode root wheel 644
|
|
%define ptymode root wheel 666
|
|
%define ttymode root wheel 666
|
|
.
|
|
.
|
|
%define aix_rootbin root bin
|
|
%define aix_rootprintq root printq
|
|
%define aix_rootstaff root staff
|
|
%define aix_rootsys root system
|
|
%define aix_binbin bin bin
|
|
%define aix_binmail bin mail
|
|
%define aix_binsys bin system
|
|
%define aix_addsys adduser system
|
|
%define aix_romode 444
|
|
%define aix_loginmode 544
|
|
%define aix_usermode 666
|
|
%define aix_systemmode 644
|
|
%define aix_textmode 644
|
|
%define aix_rwmode1 660
|
|
%define aix_allrugw 664
|
|
</PRE
|
|
><P
|
|
>The following example library file uses <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
>-specific syntax to define files,
|
|
directories, sockets, etc. Each line, called a <SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>configuration file instruction</I
|
|
></SPAN
|
|
>, defines a specific
|
|
component of disk configuration. The proper syntax for these instructions is briefly described in <A
|
|
HREF="c23832.html#HDRWQ429"
|
|
>Package Configuration File Instruction Syntax</A
|
|
>; see the reference page for the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> configuration file in the <SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>IBM AFS Administration Reference</I
|
|
></SPAN
|
|
> for detailed
|
|
descriptions.</P
|
|
><P
|
|
>In this example, the library file contains instructions specific to the configuration of an <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>rs_aix42</B
|
|
></SPAN
|
|
> machine. You can have similar library files in your <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>lib</B
|
|
></SPAN
|
|
>
|
|
subdirectory.</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> .
|
|
.
|
|
#
|
|
# Generic configuration for an AFS rs_aix42 machine.
|
|
#
|
|
D / ${treemode}
|
|
D /afs
|
|
FAQ /unix ${machine}/unix.std ${binmode}
|
|
LA /unix.std /unix
|
|
D /bin ${treemode}
|
|
F /bin/as ${machine} ${binmode}
|
|
F /bin/ld ${machine} ${binmode}
|
|
F /bin/nm ${machine} ${binmode}
|
|
FO /bin/login ${afstest} ${suidmode}
|
|
.
|
|
.
|
|
FAQ /usr/vice/etc/ThisCell ${common}/etc/ThisCell ${textmode}
|
|
FQ /usr/vice/etc/afsd ${afstest}/root.client ${binmode}
|
|
FA /usr/vice/etc/bos ${afstest}/bin/bos ${binmode}
|
|
FA /usr/vice/etc/fs ${afstest}/bin/fs ${binmode}
|
|
</PRE
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="HDRWQ429"
|
|
>Package Configuration File Instruction Syntax</A
|
|
></H1
|
|
><P
|
|
>Within a library file, configuration file instructions are used to define the specific disk configuration. Each
|
|
instruction can be used to define a file, directory, socket, or device on the client machine. The syntax for each valid
|
|
instruction type is described briefly here; detailed descriptions of the fields appear in the <SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>IBM AFS Command
|
|
Reference Manual</I
|
|
></SPAN
|
|
>. <UL
|
|
><LI
|
|
><P
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>D</B
|
|
></SPAN
|
|
> defines a directory</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>F</B
|
|
></SPAN
|
|
> defines a file</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>L</B
|
|
></SPAN
|
|
> defines a link</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>B</B
|
|
></SPAN
|
|
> defines a block special device</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>C</B
|
|
></SPAN
|
|
> defines a character special device</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>S</B
|
|
></SPAN
|
|
> defines a socket</P
|
|
></LI
|
|
></UL
|
|
></P
|
|
><DIV
|
|
CLASS="note"
|
|
><BLOCKQUOTE
|
|
CLASS="note"
|
|
><P
|
|
><B
|
|
>Note: </B
|
|
>Each configuration instruction must appear on a single, unbroken line. Instructions sometimes appear here on multiple
|
|
lines only for legibility.</P
|
|
><P
|
|
>The configuration file must be completely correct. If there are any syntax errors or incorrect values, the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> command interpreter exits without executing any instruction.</P
|
|
></BLOCKQUOTE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="HDRWQ430"
|
|
>Local Files versus Symbolic Links</A
|
|
></H2
|
|
><P
|
|
>You can take advantage of the AFS by keeping the number of files on the local client disk to a minimum; instead, create
|
|
symbolic links that point into AFS. This can improve machine performance by allowing more space for caching and
|
|
swapping.</P
|
|
><P
|
|
>Some files, however, must reside on the local disk, as described below. Create these files in the prototype or library
|
|
files using the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>F</B
|
|
></SPAN
|
|
> (file) instruction, not the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>L</B
|
|
></SPAN
|
|
> (symbolic
|
|
link) instruction.</P
|
|
><P
|
|
>The following types of files must reside on the local disk of all AFS clients: <UL
|
|
><LI
|
|
><P
|
|
>Boot sequence files executed before the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>afsd</B
|
|
></SPAN
|
|
> program runs.</P
|
|
><P
|
|
>Until <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>afsd</B
|
|
></SPAN
|
|
> runs and initializes the Cache Manager, AFS is inaccessible from the
|
|
client. Any files that are executed before the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>afsd</B
|
|
></SPAN
|
|
> program runs must reside on the
|
|
local client disk.</P
|
|
><P
|
|
>For example, on a machine that uses a disk cache, the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/usr/vice/cache</B
|
|
></SPAN
|
|
> directory
|
|
must exist when you bring up the Cache Manager, so that there is a location to create cache files. The binary files
|
|
<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/etc/mount</B
|
|
></SPAN
|
|
> and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/etc/umount</B
|
|
></SPAN
|
|
> must be available on the
|
|
local disk as the machine boots in order to mount the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/usr/vice/cache</B
|
|
></SPAN
|
|
> directory.</P
|
|
><P
|
|
>In addition, certain UNIX files, such as initialization files (<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/etc/rc</B
|
|
></SPAN
|
|
> or
|
|
equivalent) and file system mapping files (<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/etc/fstab</B
|
|
></SPAN
|
|
> or equivalent), must reside on
|
|
the local disk.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Diagnostic and recovery files</P
|
|
><P
|
|
>Certain commands can be used to diagnose and recover from problems caused by a file server outage. It is best to
|
|
keep copies of the binaries for these commands on the local disk. For example, store the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>bos</B
|
|
></SPAN
|
|
> and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>fs</B
|
|
></SPAN
|
|
> binaries in the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/usr/vice/etc</B
|
|
></SPAN
|
|
> directory on the local disk, as well as in the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/usr/afsws</B
|
|
></SPAN
|
|
> directory (which in the conventional configuration is a symbolic link into AFS). Then,
|
|
set PATH variables so that the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/usr/afsws</B
|
|
></SPAN
|
|
> directory appears before the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/usr/vice/etc</B
|
|
></SPAN
|
|
> directory. Thus, even if users cannot access AFS (for example, due to a file server
|
|
outage) they can still access copies of the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>bos</B
|
|
></SPAN
|
|
> and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>fs</B
|
|
></SPAN
|
|
>
|
|
binaries in the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/usr/vice/etc</B
|
|
></SPAN
|
|
> directory on the local disk.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Files in the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/usr/vice</B
|
|
></SPAN
|
|
> directory</P
|
|
><P
|
|
>The contents of the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/usr/vice</B
|
|
></SPAN
|
|
> directory, including the cache files in the
|
|
<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>cache</B
|
|
></SPAN
|
|
> subdirectory and the configuration files in the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>etc</B
|
|
></SPAN
|
|
> subdirectory, must reside on the local disk. For a description of the files in the directory,
|
|
see <A
|
|
HREF="c21473.html#HDRWQ391"
|
|
>Configuration and Cache-Related Files on the Local Disk</A
|
|
>.</P
|
|
></LI
|
|
></UL
|
|
></P
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="HDRWQ431"
|
|
>Defining a Directory</A
|
|
></H2
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>D</B
|
|
></SPAN
|
|
> instruction defines a directory to be created on the local disk. If a symbolic
|
|
link, file, or other element on the local disk has the same name, it is replaced with a directory. If the directory already
|
|
exists, its owner, group, and mode bits are changed if necessary to conform with the instruction.</P
|
|
><P
|
|
>Use the following instruction to define a directory:</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>D</B
|
|
></SPAN
|
|
>[update_code] directory owner group mode_bits
|
|
</PRE
|
|
><P
|
|
>The following example defines the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/usr</B
|
|
></SPAN
|
|
> directory:</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> D /usr root wheel 755
|
|
</PRE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="HDRWQ432"
|
|
>Defining a File</A
|
|
></H2
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>F</B
|
|
></SPAN
|
|
> instruction defines a file to be created on the local disk. The source file can
|
|
reside in either AFS or the local disk.</P
|
|
><P
|
|
>If a file of this name already exists, then it is updated with (overwritten by) the source file, unless the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>I</B
|
|
></SPAN
|
|
> update code is specified. If a symbolic link or directory of this name exists, the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program replaces it with the source file.</P
|
|
><DIV
|
|
CLASS="note"
|
|
><BLOCKQUOTE
|
|
CLASS="note"
|
|
><P
|
|
><B
|
|
>Note: </B
|
|
>Some files must reside on the local disk; they cannot be symbolic links. See <A
|
|
HREF="c23832.html#HDRWQ430"
|
|
>Local Files
|
|
versus Symbolic Links</A
|
|
>.</P
|
|
></BLOCKQUOTE
|
|
></DIV
|
|
><P
|
|
>Use the following instruction to define a file:</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>F</B
|
|
></SPAN
|
|
>[update_code] file source_file [owner group mode_bits]
|
|
</PRE
|
|
><P
|
|
>An example which creates/updates the file <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/bin/grep</B
|
|
></SPAN
|
|
> on the local disk, using <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/afs/abc.com/rs_aix42/bin/grep</B
|
|
></SPAN
|
|
> as the source:</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> F /bin/grep /afs/abc.com/rs_aix42 root wheel 755
|
|
</PRE
|
|
><P
|
|
>In the following example, two update codes are used, and the <SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>owner</I
|
|
></SPAN
|
|
>, <SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>group</I
|
|
></SPAN
|
|
> and
|
|
<SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>mode_bits</I
|
|
></SPAN
|
|
> slots are left empty, so that the disk file adopts the source file's values for those
|
|
slots.</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> FAQ /usr/vice/etc/ThisCell /afs/abc.com/common/etc/ThisCell
|
|
</PRE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="HDRWQ433"
|
|
>Defining a Symbolic Link</A
|
|
></H2
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>L</B
|
|
></SPAN
|
|
> instruction defines a symbolic link to be created on the local disk. The symbolic
|
|
link can point to the AFS file system or the local disk. If the identical symbolic link already exists, the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program does nothing. However, if an element of the same name exists on the disk as a file or
|
|
directory, the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program replaces the element with a symbolic link.</P
|
|
><DIV
|
|
CLASS="note"
|
|
><BLOCKQUOTE
|
|
CLASS="note"
|
|
><P
|
|
><B
|
|
>Note: </B
|
|
>Some files must reside on the local disk; they cannot be symbolic links. See <A
|
|
HREF="c23832.html#HDRWQ430"
|
|
>Local Files
|
|
versus Symbolic Links</A
|
|
>.</P
|
|
></BLOCKQUOTE
|
|
></DIV
|
|
><P
|
|
>Use the following instruction to define a symbolic link:</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>L</B
|
|
></SPAN
|
|
>[update_code] link actual_file [owner group mode_bits]
|
|
</PRE
|
|
><DIV
|
|
CLASS="note"
|
|
><BLOCKQUOTE
|
|
CLASS="note"
|
|
><P
|
|
><B
|
|
>Note: </B
|
|
>Do not create a symbolic link to a file whose name begins with the number sign (<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>#</B
|
|
></SPAN
|
|
>) or
|
|
percent sign (<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>%</B
|
|
></SPAN
|
|
>). The Cache Manager interprets such a link as a mount point to a regular or
|
|
Read/Write volume, respectively.</P
|
|
></BLOCKQUOTE
|
|
></DIV
|
|
><P
|
|
>The following example creates a symbolic link from the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/etc/ftpd</B
|
|
></SPAN
|
|
> directory on the local
|
|
disk to the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/afs/abc.com/hp_ux110/etc/ftpd</B
|
|
></SPAN
|
|
> file in AFS. Since the <SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>owner</I
|
|
></SPAN
|
|
>,
|
|
<SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>group</I
|
|
></SPAN
|
|
> and <SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>mode_bits</I
|
|
></SPAN
|
|
> fields are empty, the symbolic link adopts values for those
|
|
fields from the actual file:</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> L /etc/ftpd /afs/abc.com/hp_ux110
|
|
</PRE
|
|
><P
|
|
>This example uses the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>A</B
|
|
></SPAN
|
|
> update code:</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> LA /etc/printcap /afs/abc.com/common/etc/printcap.remote
|
|
root wheel 644
|
|
</PRE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="HDRWQ434"
|
|
>Defining a Block Special Device</A
|
|
></H2
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>B</B
|
|
></SPAN
|
|
> instruction defines a block special device, which is a device that handles data
|
|
in units of multibyte blocks, such as a disk. If a device of the same name already exists, the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program replaces it with the specified block device.</P
|
|
><P
|
|
>Use the following instruction to define a block special device (it appears on two lines here only for
|
|
legibility):</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>B</B
|
|
></SPAN
|
|
> device_name major_device_number minor_device_number \
|
|
owner group mode_bits
|
|
</PRE
|
|
><P
|
|
>The following example defines a disk called <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/dev/hd0a</B
|
|
></SPAN
|
|
> to have major and minor device
|
|
numbers <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>1</B
|
|
></SPAN
|
|
> and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>0</B
|
|
></SPAN
|
|
>:</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> B /dev/hd0a 1 0 root wheel 644
|
|
</PRE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="HDRWQ435"
|
|
>Defining a Character Special Device</A
|
|
></H2
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>C</B
|
|
></SPAN
|
|
> instruction defines a character special device, which is device that handles data
|
|
in units of a single character at a time, such as a terminal or tty. If a device of the same name already exists, the
|
|
<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program replaces it with the specified character device.</P
|
|
><P
|
|
>Use the following instruction to define a character special device (it appears here on two lines only for
|
|
legibility):</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>C</B
|
|
></SPAN
|
|
> device_name major_device_number minor_device_number \
|
|
owner group mode_bits
|
|
</PRE
|
|
><P
|
|
>The following example defines the tty called <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/dev/ttyp5</B
|
|
></SPAN
|
|
> with major and minor device
|
|
numbers <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>6</B
|
|
></SPAN
|
|
> and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>5</B
|
|
></SPAN
|
|
>:</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> C /dev/ttyp5 6 5 root wheel 666
|
|
</PRE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="HDRWQ436"
|
|
>Defining a Socket</A
|
|
></H2
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>S</B
|
|
></SPAN
|
|
> instruction defines a socket, which is communications device for UDP and TCP/IP
|
|
connections. If a socket of the same name already exists, the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program replaces
|
|
it.</P
|
|
><P
|
|
>Use the following instruction to define a socket:</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>S</B
|
|
></SPAN
|
|
> socket_name [owner group mode_bits]
|
|
</PRE
|
|
><P
|
|
>The following example defines a socket called <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/dev/printer</B
|
|
></SPAN
|
|
>:</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> S /dev/printer root wheel 777
|
|
</PRE
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="HDRWQ437"
|
|
>Constructing Prototype and Library Files</A
|
|
></H1
|
|
><P
|
|
>This section describes the general steps required to create <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> prototype and library
|
|
files. Refer to the previous sections for guidelines, and the files in your <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>wsadmin</B
|
|
></SPAN
|
|
> directory
|
|
for examples. The construction of prototype and library files is different for each cell.</P
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="Header_515"
|
|
>To construct a prototype file and its component library files</A
|
|
></H2
|
|
><OL
|
|
TYPE="1"
|
|
><LI
|
|
><P
|
|
>Determine where the three <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
>-related subdirectories (<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>src</B
|
|
></SPAN
|
|
>, <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>lib</B
|
|
></SPAN
|
|
> and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>etc</B
|
|
></SPAN
|
|
>) reside in your
|
|
cell's file tree; the following instructions assume they were loaded into the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/afs/</B
|
|
></SPAN
|
|
>cellname<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/wsadmin</B
|
|
></SPAN
|
|
> directory, as described in the IBM AFS Quick
|
|
Beginnings.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Decide how many different functions you want client machines in your cell to perform. We recommend that you
|
|
construct a separate prototype file for each function. Common functions include: <UL
|
|
><LI
|
|
><P
|
|
>Standard workstation: provides users with access to files in AFS</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Printer server: drives a printer; can be combined with "staff" functionality</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Backup machine: performs backups of AFS volumes to tape by running the AFS Backup System software</P
|
|
></LI
|
|
></UL
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Determine the minimum functionality needed for all clients (such as AFS setup) and place these generic definitions
|
|
in one or more library files.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>For each type of client (printer server, backup machine, and so on), place all system-independent definitions in one
|
|
file, and all operating-system dependent definitions in another file.</P
|
|
></LI
|
|
></OL
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="HDRWQ438"
|
|
>The Package Makefile File</A
|
|
></H1
|
|
><P
|
|
>Once you have created the appropriate prototype and library files, you must compile the prototype for each system type.
|
|
The result is a system-specific configuration file.</P
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
> file defines the prototype and library files used and the order of
|
|
compilation. We recommend that you create your <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
> file by modifying the example provided
|
|
with the AFS distribution, as described in this section. In the conventional configuration, it is located at <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/afs/</B
|
|
></SPAN
|
|
>cellname<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/wsadmin/src/Makefile</B
|
|
></SPAN
|
|
>.</P
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="Header_517"
|
|
>Overview</A
|
|
></H2
|
|
><P
|
|
>The following list summarizes the sections in the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
> file, identifying each by the header name that begins the section. More detailed descriptions
|
|
follow. <DIV
|
|
CLASS="variablelist"
|
|
><DL
|
|
><DT
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>CONFIG=</B
|
|
></SPAN
|
|
></DT
|
|
><DD
|
|
><P
|
|
>Lists all of the configuration files to be created and defines which prototype files are compiled for which
|
|
system types. See <A
|
|
HREF="c23832.html#HDRWQ439"
|
|
>The CONFIG Section</A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>BASE_LIBS=</B
|
|
></SPAN
|
|
></DT
|
|
><DD
|
|
><P
|
|
>Lists the pathnames of all operating-system- and function independent library files included in any prototype
|
|
files. See <A
|
|
HREF="c23832.html#HDRWQ440"
|
|
>The BASE_LIBS Section</A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>MACHINE_LIBS=</B
|
|
></SPAN
|
|
></DT
|
|
><DD
|
|
><P
|
|
>Lists the pathnames of all operating-system-specific library files included in any prototype files. See <A
|
|
HREF="c23832.html#HDRWQ441"
|
|
>The MACHINE_LIBS Section</A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>LIBS=</B
|
|
></SPAN
|
|
></DT
|
|
><DD
|
|
><P
|
|
>A one-line instruction that defines LIBS as the combination of BASE_LIBS and MACHINE_LIBS. See <A
|
|
HREF="c23832.html#HDRWQ442"
|
|
>The LIBS Section</A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>.SUFFIXES</B
|
|
></SPAN
|
|
></DT
|
|
><DD
|
|
><P
|
|
>Defines all of the suffixes that can appear on a prototype or configuration file. See <A
|
|
HREF="c23832.html#HDRWQ443"
|
|
>The .SUFFIXES Section</A
|
|
>.</P
|
|
></DD
|
|
></DL
|
|
></DIV
|
|
></P
|
|
><P
|
|
>Finally, the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
> file contains a set of instructions that the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program follows to generate configuration files. It is not generally necessary to alter this
|
|
section. See <A
|
|
HREF="c23832.html#HDRWQ444"
|
|
>The Makefile Instructions Section</A
|
|
>.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="HDRWQ439"
|
|
>The CONFIG Section</A
|
|
></H2
|
|
><P
|
|
>As mentioned, a configuration file is a prototype file that has been compiled for a specific operating system type. The
|
|
CONFIG section of the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
> file defines the prototype files to compile for each system
|
|
type. The resulting compiled file is a system-specific configuration file.</P
|
|
><P
|
|
>Study the following example taken from the sample <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
> file. Configuration files
|
|
are defined by specifying the prototype-system combination as prototype_file<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>.</B
|
|
></SPAN
|
|
>sysname. Note
|
|
that it is not necessary to generate a configuration file for each prototype-system type combination.</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> #Makefile...
|
|
# (C) Copyright IBM Corporation 1999
|
|
# Licensed Materials - Property of IBM
|
|
# All Rights Reserved.
|
|
#
|
|
CONFIG = \
|
|
staff.rs_aix42 \
|
|
staff.alpha_dux40 \
|
|
staff.xdm.alpha_dux40 \
|
|
staff.sun4x_56 \
|
|
staff.hp_ux110 \
|
|
minimal.rs_aix42 \
|
|
minimal.alpha_dux40 \
|
|
minimal.hp_ux110 \
|
|
minimal.sun4x_56
|
|
</PRE
|
|
><P
|
|
>An entry in the CONFIG section has the following format: <UL
|
|
><LI
|
|
><P
|
|
>The first part of the entry defines the prototype file and is the same as the prototype file name (without the
|
|
<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>.proto</B
|
|
></SPAN
|
|
> extension). The second part of the entry indicates the system type for which the
|
|
prototype file is to be compiled. A complete list of these suffixes is in the .SUFFIXES section of the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
> file, as described in <A
|
|
HREF="c23832.html#HDRWQ443"
|
|
>The .SUFFIXES Section</A
|
|
>. This
|
|
prototype_file<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>.</B
|
|
></SPAN
|
|
>sysname definition becomes the name of the compiled configuration
|
|
file.</P
|
|
><P
|
|
>For example, <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>staff.rs_aix42</B
|
|
></SPAN
|
|
> indicates that the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>staff.proto</B
|
|
></SPAN
|
|
> file is compiled for machines running AIX 4.2. The resulting compiled configuration
|
|
file is called <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>staff.rs_aix42</B
|
|
></SPAN
|
|
>.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Each configuration file must appear on a separate line.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>A backslash must follow the CONFIG= header and every name but the last one. A backslash must also appear on blank
|
|
lines.</P
|
|
></LI
|
|
></UL
|
|
></P
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="HDRWQ440"
|
|
>The BASE_LIBS Section</A
|
|
></H2
|
|
><P
|
|
>This section defines the complete pathname of all system- and function-independent library files included in any
|
|
prototype file. (System-specific library files are defined in the MACHINE_LIBS section). The pathnames can include the
|
|
${wsadmin} variable, whose value is supplied on the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>make</B
|
|
></SPAN
|
|
> command line.</P
|
|
><P
|
|
>You must include all of the library files referred to in your prototype files; files included but not used are
|
|
ignored.</P
|
|
><P
|
|
>Study the following example. Note that the all entries (except the last one) must be followed by a backslash.</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> BASE_LIBS = \
|
|
${wsadmin}/src/admin \
|
|
${wsadmin}/lib/devel \
|
|
${wsadmin}/lib/base.generic
|
|
</PRE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="HDRWQ441"
|
|
>The MACHINE_LIBS Section</A
|
|
></H2
|
|
><P
|
|
>This section lists the complete pathname of all operating-system-specific library files included in prototype files.
|
|
(System- and function-independent library files are defined in the BASE_LIBS section.)</P
|
|
><P
|
|
>Study the following example. Note that in this example, library files were grouped by operating-system type. Again, all
|
|
lines (except the last one) must be followed by a backslash, the ${wsadmin} variable is allowed, and files included but not
|
|
used are ignored.</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> MACHINE_LIBS = \
|
|
${wsadmin}/lib/rs_aix42.generic \
|
|
${wsadmin}/lib/rs_aix42.generic.dev \
|
|
${wsadmin}/lib/rs_aix42.readonly \
|
|
${wsadmin}/lib/rs_aix42.readwrite \
|
|
${wsadmin}/lib/rt_aix42.generic.printer \
|
|
\
|
|
.
|
|
.
|
|
${wsadmin}/lib/alpha_dux40.AFS \
|
|
${wsadmin}/lib/hp_ux110.AFS \
|
|
${wsadmin}/lib/sun4x_56.AFS \
|
|
${wsadmin}/lib/rs_aix42.AFS
|
|
</PRE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="HDRWQ442"
|
|
>The LIBS Section</A
|
|
></H2
|
|
><P
|
|
>This section contains only one instruction, which indicates that LIBS is defined as the combination of MACHINE_LIBS and
|
|
BASE_LIBS. Insert a blank line after the line to separate this section from the next.</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> LIBS = ${MACHINE_LIBS} ${BASE_LIBS}
|
|
</PRE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="HDRWQ443"
|
|
>The .SUFFIXES Section</A
|
|
></H2
|
|
><P
|
|
>This section lists the valid machine-type suffixes. This list includes system types currently supported for AFS. Unused
|
|
suffixes are ignored.</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> .SUFFIXES: .rs_aix42 \
|
|
.alpha_dux40 \
|
|
.proto \
|
|
.sun4x_56 \
|
|
.i386_linux22 \
|
|
.hp_ux110
|
|
</PRE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="HDRWQ444"
|
|
>The Makefile Instructions Section</A
|
|
></H2
|
|
><P
|
|
>The remainder of the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
> file controls how the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program generates configuration files.</P
|
|
><P
|
|
>Study the following instructions; it is assumed that you are familiar with programming and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
> concepts.</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> #The following appear on a single line each in the actual file
|
|
.proto.rs_aix42: ; mpp -Dwsadmin=${wsadmin} -Dsys=rs_aix42
|
|
-Dname=$* $*.proto > $@
|
|
.proto.alpha_dux40: ; mpp -Dwsadmin=${wsadmin} -Dsys=alpha_dux40
|
|
-Dname=$* $*.proto > $@
|
|
.proto.sun4x_56: ; mpp -Dwsadmin=${wsadmin} -Dsys=sun4x_56
|
|
-Dname=$* $*.proto > $@
|
|
.proto.hp_ux110: ; mpp -Dwsadmin=${wsadmin} -Dsys=hp_ux110
|
|
-Dname=$* $*.proto > $@
|
|
all: ${CONFIG}
|
|
${CONFIG}: ${LIBS}
|
|
system: install
|
|
install: ${CONFIG}
|
|
cp ${CONFIG} ${wsadmin}/etc
|
|
clean:
|
|
rm -f ${CONFIG} *.BAK *.CKP
|
|
</PRE
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="HDRWQ445"
|
|
>Modifying the Makefile</A
|
|
></H1
|
|
><P
|
|
>Modify the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
> files when you <UL
|
|
><LI
|
|
><P
|
|
>Add a new prototype file (function<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>.proto</B
|
|
></SPAN
|
|
>).</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Add a new system type.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Add new library files.</P
|
|
></LI
|
|
></UL
|
|
></P
|
|
><P
|
|
>The following sections provide brief examples of how to modify the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
> file for
|
|
these reasons.</P
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="Header_525"
|
|
>Adding a New Prototype File</A
|
|
></H2
|
|
><P
|
|
>When you create a new prototype file, add the file name and each system type for which it is to be built into the CONFIG
|
|
section of the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
> file.</P
|
|
><P
|
|
>For example, to add a function<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>.proto</B
|
|
></SPAN
|
|
> file for <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>alpha_dux40</B
|
|
></SPAN
|
|
> and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>hp_ux110</B
|
|
></SPAN
|
|
>, add the following entries to the CONFIG
|
|
section:</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> CONFIG = \
|
|
...
|
|
function.alpha_dux40 \
|
|
function.hp_ux110 \
|
|
...
|
|
</PRE
|
|
><P
|
|
>If you have added new library files for this prototype function, add those to the MACHINE_LIBS section.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="Header_526"
|
|
>Adding a New System Type</A
|
|
></H2
|
|
><P
|
|
>For each prototype file that you want to build for the new system type, add an entry to the CONFIG section. Also add any
|
|
new libraries to the MACHINE_LIBS section, and the new system type to the .SUFFIXES section.</P
|
|
><P
|
|
>The following example shows the modifications appropriate when building the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>staff</B
|
|
></SPAN
|
|
> and
|
|
<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>minimal</B
|
|
></SPAN
|
|
> prototype files for this new system type.</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> CONFIG = \
|
|
...
|
|
staff.sysname \
|
|
minimal.sysname \
|
|
...
|
|
</PRE
|
|
><P
|
|
>If you have created corresponding library files for this new machine type, add them to the MACHINE_LIBS section.</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> MACHINE_LIBS = \
|
|
...
|
|
${wsadmin}/lib/sysname.generic \
|
|
${wsadmin}/lib/sysname.generic.dev \
|
|
${wsadmin}/lib/sysname.readonly \
|
|
${wsadmin}/lib/sysname.readwrite \
|
|
...
|
|
</PRE
|
|
><P
|
|
>Add the new system type to the SUFFIXES section.</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> .SUFFIXES: ...\
|
|
.sysname \
|
|
...
|
|
</PRE
|
|
><P
|
|
>Add a line to build the configuration files for this system in the section with the rest of the commands to build
|
|
configuration files:</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> .proto.sysname: ; mpp -Dwsadmin=${wsadmin} \
|
|
-Dsys=sysname -Dname=$* $*.proto > $
|
|
</PRE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="Header_527"
|
|
>Adding New Library Files</A
|
|
></H2
|
|
><P
|
|
>If you added a new library file for each system type, sysname<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>.</B
|
|
></SPAN
|
|
><SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>library_file</I
|
|
></SPAN
|
|
>, add these files to the MACHINE_LIBS section of the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
>.</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> MACHINE_LIBS = \
|
|
...
|
|
${wsadmin}/lib/rs_aix42.library_file \
|
|
...
|
|
${wsadmin}/lib/alpha_dux40.library_file \
|
|
...
|
|
${wsadmin}/lib/sun4x_56.library_file \
|
|
...
|
|
</PRE
|
|
><P
|
|
>If you added a new library file that is common to all system types, library_file, add this only to the BASE_LIBS
|
|
section:</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> BASE_LIBS = \
|
|
...
|
|
${wsadmin}/lib/library_file \
|
|
...
|
|
</PRE
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="HDRWQ446"
|
|
>Compiling Prototype Files</A
|
|
></H1
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program generates configuration files and installs them in the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>etc</B
|
|
></SPAN
|
|
> and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>src</B
|
|
></SPAN
|
|
> subdirectories of the directory designated as <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>wsadmin=</B
|
|
></SPAN
|
|
> on the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>make</B
|
|
></SPAN
|
|
> command line. Recompile whenever you modify a
|
|
prototype or library file.</P
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="Header_529"
|
|
>To compile prototype files</A
|
|
></H2
|
|
><DIV
|
|
CLASS="note"
|
|
><BLOCKQUOTE
|
|
CLASS="note"
|
|
><P
|
|
><B
|
|
>Note: </B
|
|
>These instructions assume that you store your <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
>-related files in the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/afs/</B
|
|
></SPAN
|
|
>cellname<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/wsadmin</B
|
|
></SPAN
|
|
> directory. If you use a different directory,
|
|
substitute its name for <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/afs/</B
|
|
></SPAN
|
|
>cellname<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/wsadmin</B
|
|
></SPAN
|
|
>.</P
|
|
></BLOCKQUOTE
|
|
></DIV
|
|
><OL
|
|
TYPE="1"
|
|
><LI
|
|
><P
|
|
>Verify that you have all privileges in the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/afs/</B
|
|
></SPAN
|
|
>cellname<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/wsadmin</B
|
|
></SPAN
|
|
> directory and in its <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>src</B
|
|
></SPAN
|
|
>, <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>lib</B
|
|
></SPAN
|
|
> and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>etc</B
|
|
></SPAN
|
|
> subdirectories. If necessary, issue the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>fs</B
|
|
></SPAN
|
|
> <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>listacl</B
|
|
></SPAN
|
|
> command. <PRE
|
|
CLASS="programlisting"
|
|
> % <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>fs listacl</B
|
|
></SPAN
|
|
> [dir/file path]
|
|
</PRE
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Change to the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/afs/</B
|
|
></SPAN
|
|
>cellname<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/wsadmin/src</B
|
|
></SPAN
|
|
>
|
|
subdirectory. <PRE
|
|
CLASS="programlisting"
|
|
> % <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>cd /afs/</B
|
|
></SPAN
|
|
>cellname<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/wsadmin/src</B
|
|
></SPAN
|
|
>
|
|
</PRE
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Create a backup copy of the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
> file included in the AFS distribution.
|
|
<PRE
|
|
CLASS="programlisting"
|
|
> % <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>cp Makefile Makefile.example</B
|
|
></SPAN
|
|
>
|
|
</PRE
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Modify the CONFIG, BASE_LIBS and MACHINE_LIBS sections of the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Makefile</B
|
|
></SPAN
|
|
> file, as
|
|
described in <A
|
|
HREF="c23832.html#HDRWQ439"
|
|
>The CONFIG Section</A
|
|
>, <A
|
|
HREF="c23832.html#HDRWQ440"
|
|
>The BASE_LIBS Section</A
|
|
>,
|
|
and <A
|
|
HREF="c23832.html#HDRWQ441"
|
|
>The MACHINE_LIBS Section</A
|
|
>.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Compile the prototype files using the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>make</B
|
|
></SPAN
|
|
> command.</P
|
|
><P
|
|
>Use the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>wsadmin=</B
|
|
></SPAN
|
|
> argument to specify the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
>
|
|
directory. This becomes the value of the ${wsadmin} variable in the prototype and the library files.</P
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program generates configuration files and installs them in the
|
|
<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>etc</B
|
|
></SPAN
|
|
> and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>src</B
|
|
></SPAN
|
|
> subdirectories of the directory designated
|
|
as <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>wsadmin=</B
|
|
></SPAN
|
|
>.</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> % <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>make system wsadmin=/afs/</B
|
|
></SPAN
|
|
>cellname<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/wsadmin</B
|
|
></SPAN
|
|
>
|
|
</PRE
|
|
></LI
|
|
></OL
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="HDRWQ447"
|
|
>Modifying Client Machines</A
|
|
></H1
|
|
><P
|
|
>To prepare a client to run the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program automatically, perform the following
|
|
steps. The instructions are generic because they do not refer to system-specific configuration files. If desired, you can invoke
|
|
the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program with specific arguments, as described in the <SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>IBM AFS
|
|
Administration Reference</I
|
|
></SPAN
|
|
>. <OL
|
|
TYPE="1"
|
|
><LI
|
|
><P
|
|
>Specify the configuration file to use.</P
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>.package</B
|
|
></SPAN
|
|
> file in the client machine's root ( <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/</B
|
|
></SPAN
|
|
>) directory is redirected as an argument to the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> command;
|
|
the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>.package</B
|
|
></SPAN
|
|
> file specifies which configuration file the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program uses.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Make the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> binary available to the client, either by copying it to the local
|
|
disk, or by creating a symbolic link to AFS. <UL
|
|
><LI
|
|
><P
|
|
>A symbolic link saves local disk space. However, when the file server machine that houses it is down, the
|
|
<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> binary is inaccessible.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Keeping the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> binary on the local disk enables you to run the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program even if file server is down. However, a file server machine outage usually
|
|
makes it difficult to run the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program because most configuration file
|
|
instructions refer to files in AFS. A local copy of the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> binary can be
|
|
useful if the files referred to in instructions are in replicated volumes.</P
|
|
></LI
|
|
></UL
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Modify the client machine's initialization file to invoke the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program at
|
|
reboot. The client machine reboots a second time if the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program updates any files
|
|
marked with the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Q</B
|
|
></SPAN
|
|
> update code.</P
|
|
></LI
|
|
></OL
|
|
></P
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="Header_531"
|
|
>To prepare a client machine to run the package program</A
|
|
></H2
|
|
><P
|
|
>Repeat these instructions on every client that runs the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program.</P
|
|
><P
|
|
>These instructions assume that the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> configuration files (created when the
|
|
prototype files were compiled) reside in the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/afs/</B
|
|
></SPAN
|
|
>cellname<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/wsadmin/etc</B
|
|
></SPAN
|
|
> directory. <OL
|
|
TYPE="1"
|
|
><LI
|
|
><P
|
|
>Become the local superuser <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>root</B
|
|
></SPAN
|
|
> on the machine, if you are not already, by
|
|
issuing the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>su</B
|
|
></SPAN
|
|
> command. <PRE
|
|
CLASS="programlisting"
|
|
> % <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>su root</B
|
|
></SPAN
|
|
>
|
|
Password: <<VAR
|
|
CLASS="replaceable"
|
|
>root_password</VAR
|
|
>>
|
|
</PRE
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Create the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>.package</B
|
|
></SPAN
|
|
> file in the root ( <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/</B
|
|
></SPAN
|
|
>)
|
|
directory and specify the name of the prototype file to use. Do not include the system-type suffix (such as <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>.rs_aix42</B
|
|
></SPAN
|
|
>); the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program automatically determines the
|
|
correct machine type. <PRE
|
|
CLASS="programlisting"
|
|
> # <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>echo "/afs/</B
|
|
></SPAN
|
|
>cellname<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/wsadmin/etc/</B
|
|
></SPAN
|
|
>config_file<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>" >> /.package</B
|
|
></SPAN
|
|
>
|
|
</PRE
|
|
></P
|
|
><P
|
|
>For example, to configure a machine for a member of staff machine (assuming the proper prototype file had been
|
|
defined and compiled for the system type), the appropriate command is:</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> # <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>echo "/afs/</B
|
|
></SPAN
|
|
>cellname<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/wsadmin/etc/staff" >> /.package</B
|
|
></SPAN
|
|
>
|
|
</PRE
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Make the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> binary available on the local disk as <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/etc/package</B
|
|
></SPAN
|
|
>. Issue one of the following commands, depending on whether you want to create a file
|
|
or create a symbolic link.</P
|
|
><P
|
|
>To store the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> binary locally, enter the following command:</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> # <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>cp /afs/</B
|
|
></SPAN
|
|
>cellname<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/</B
|
|
></SPAN
|
|
>sysname<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/usr/afsws/etc/package /etc/package</B
|
|
></SPAN
|
|
>
|
|
</PRE
|
|
><P
|
|
>To create a symbolic link, enter the following command:</P
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> # <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>ln -s /afs/</B
|
|
></SPAN
|
|
>cellname<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/</B
|
|
></SPAN
|
|
>sysname<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/usr/afsws/etc/package /etc/package</B
|
|
></SPAN
|
|
>
|
|
</PRE
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Add the following lines to the appropriate initialization file, after the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>afsd</B
|
|
></SPAN
|
|
>
|
|
command is invoked. If this is a file server machine, the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>bosserver</B
|
|
></SPAN
|
|
> command must follow
|
|
the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> command.</P
|
|
><P
|
|
>Using the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-v</B
|
|
></SPAN
|
|
> and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-c</B
|
|
></SPAN
|
|
> options is recommended. The
|
|
<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-v</B
|
|
></SPAN
|
|
> flag produces a detailed trace, and the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-c</B
|
|
></SPAN
|
|
> option
|
|
appends the system type to the base name of the configuration file. See the <SPAN
|
|
CLASS="emphasis"
|
|
><I
|
|
CLASS="emphasis"
|
|
>IBM AFS Administration
|
|
Reference</I
|
|
></SPAN
|
|
> for a description of other options.</P
|
|
><DIV
|
|
CLASS="note"
|
|
><BLOCKQUOTE
|
|
CLASS="note"
|
|
><P
|
|
><B
|
|
>Note: </B
|
|
>Replace the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>shutdown</B
|
|
></SPAN
|
|
> command with a similar command if it is not appropriate
|
|
for rebooting your machine.</P
|
|
></BLOCKQUOTE
|
|
></DIV
|
|
><PRE
|
|
CLASS="programlisting"
|
|
> if [ -f /etc/package ]; then
|
|
if [ -f /.package ]: then
|
|
/etc/package -v -c `cat /.package` >/dev/console
|
|
else
|
|
/etc/package -v >/dev/console
|
|
fi
|
|
case $? in
|
|
0)
|
|
echo "Package completed successfully" >/dev/console 2>&1
|
|
date >/dev/console 2>&1
|
|
;;
|
|
4)
|
|
echo "Rebooting to restart system" >/dev/console 2>&1
|
|
echo >/fastboot
|
|
shutdown
|
|
;;
|
|
*)
|
|
echo "Update failed, continuing anyway" >/dev/console 2>&1
|
|
;;
|
|
esac
|
|
fi
|
|
</PRE
|
|
></LI
|
|
></OL
|
|
></P
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="HDRWQ448"
|
|
>Running the package program</A
|
|
></H1
|
|
><P
|
|
>After you have created and compiled prototype files and modified client machines, you are ready to run the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program. It is probably most convenient to run the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
>
|
|
program automatically at reboot by invoking it in the machine's AFS initialization file, but you can also issue the command at
|
|
the command shell prompt.</P
|
|
><P
|
|
>The configuration file must be completely correct. If there are any syntax errors or incorrect values, the program exits
|
|
without executing any instruction. To check the configuration file, issue the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> command
|
|
with the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-noaction</B
|
|
></SPAN
|
|
> and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-debug</B
|
|
></SPAN
|
|
> flags at the command shell
|
|
prompt. They display a list of potential problems without actually executing instructions.</P
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program follows these general rules. Complete explanations are in <A
|
|
HREF="c23832.html#HDRWQ429"
|
|
>Package Configuration File Instruction Syntax</A
|
|
>. <UL
|
|
><LI
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program does not delete any files from the disk unless the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>R</B
|
|
></SPAN
|
|
> update code was specified in the prototype file. If the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>R</B
|
|
></SPAN
|
|
> update
|
|
code is associated with the parent directory, the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program removes anything from
|
|
the local disk directory that is not specified in the configuration file.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Local files are updated only if they are out of date. For each <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>F</B
|
|
></SPAN
|
|
> instruction in the
|
|
configuration file, the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program compares the time of the local file with the
|
|
indicated source file. If the source file is newer than the local, the file is updated.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>When the initialization file is modified as recommended in <A
|
|
HREF="c23832.html#HDRWQ447"
|
|
>Modifying Client
|
|
Machines</A
|
|
>, the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program reboots the workstation automatically if any files
|
|
marked with the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Q</B
|
|
></SPAN
|
|
> update code are updated, and if the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program has been invoked from the initialization file. When a file marked with the
|
|
<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Q</B
|
|
></SPAN
|
|
> update code is changed, the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program exits with
|
|
status code 4, causing a reboot (as directed in the initialization file). Files that require a reboot before changes are
|
|
recognized (such as the operating system kernel and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/usr/vice/etc/CellServDB</B
|
|
></SPAN
|
|
> files) must
|
|
be marked with a <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Q</B
|
|
></SPAN
|
|
> update code in the configuration file.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program copies the configuration file it has just used to <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/etc/package.</B
|
|
></SPAN
|
|
>sysname, where sysname reflects this machine's system type. The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> command interpreter consults this file if you do not provide a configuration file name. To
|
|
be sure that it configures the local disk as you wish, review its contents.</P
|
|
></LI
|
|
></UL
|
|
></P
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="Header_533"
|
|
>To invoke the package program by rebooting</A
|
|
></H2
|
|
><OL
|
|
TYPE="1"
|
|
><LI
|
|
><P
|
|
>Become the local superuser <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>root</B
|
|
></SPAN
|
|
> on the machine, if you are not already, by issuing
|
|
the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>su</B
|
|
></SPAN
|
|
> command. <PRE
|
|
CLASS="programlisting"
|
|
> % <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>su root</B
|
|
></SPAN
|
|
>
|
|
Password: <<VAR
|
|
CLASS="replaceable"
|
|
>root_password</VAR
|
|
>>
|
|
</PRE
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>(Recommended)</B
|
|
></SPAN
|
|
> Verify the following: <UL
|
|
><LI
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/.package</B
|
|
></SPAN
|
|
> file identifies the desired configuration file</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> binary is available as <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/etc/package</B
|
|
></SPAN
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>The initialization file is properly modified to invoke the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program
|
|
automatically</P
|
|
></LI
|
|
></UL
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Reboot the machine, using the appropriate command. <PRE
|
|
CLASS="programlisting"
|
|
> # <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>shutdown</B
|
|
></SPAN
|
|
>
|
|
</PRE
|
|
></P
|
|
></LI
|
|
></OL
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="Header_534"
|
|
>To invoke the package program directly (without rebooting)</A
|
|
></H2
|
|
><OL
|
|
TYPE="1"
|
|
><LI
|
|
><P
|
|
>Become the local superuser <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>root</B
|
|
></SPAN
|
|
> on the machine, if you are not already, by issuing
|
|
the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>su</B
|
|
></SPAN
|
|
> command. <PRE
|
|
CLASS="programlisting"
|
|
> % <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>su root</B
|
|
></SPAN
|
|
>
|
|
Password: <<VAR
|
|
CLASS="replaceable"
|
|
>root_password</VAR
|
|
>>
|
|
</PRE
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Verify the following: <UL
|
|
><LI
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/.package</B
|
|
></SPAN
|
|
> file identifies the desired configuration file</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> binary is available as <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/etc/package</B
|
|
></SPAN
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>The initialization file is properly modified to invoke the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program
|
|
automatically</P
|
|
></LI
|
|
></UL
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Issue the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> command. <PRE
|
|
CLASS="programlisting"
|
|
> # <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> [<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>initcmd</B
|
|
></SPAN
|
|
>] [<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-config</B
|
|
></SPAN
|
|
> <<VAR
|
|
CLASS="replaceable"
|
|
>base name of configuration file</VAR
|
|
>>] \
|
|
[<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-fullconfig</B
|
|
></SPAN
|
|
> <<VAR
|
|
CLASS="replaceable"
|
|
>full name of configuration file, or stdin for standard input</VAR
|
|
>>] \
|
|
[<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-overwrite</B
|
|
></SPAN
|
|
>] [<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-noaction</B
|
|
></SPAN
|
|
>] [<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-verbose</B
|
|
></SPAN
|
|
>] [<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-silent</B
|
|
></SPAN
|
|
>] [<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-rebootfiles</B
|
|
></SPAN
|
|
>]
|
|
</PRE
|
|
></P
|
|
><P
|
|
>where <DIV
|
|
CLASS="variablelist"
|
|
><DL
|
|
><DT
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-config</B
|
|
></SPAN
|
|
></DT
|
|
><DD
|
|
><P
|
|
>Specifies the full pathname of the configuration file to use, ending in the file's base name, which omits
|
|
the suffix that indicates the machine type. The <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program knows how to
|
|
determine a machine's type, and automatically selects the appropriate version of the base file name. An example of
|
|
the proper value for this argument is <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>staff</B
|
|
></SPAN
|
|
> rather than <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>staff.rs_aix42</B
|
|
></SPAN
|
|
>. You can also have the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program
|
|
refer to <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>/.package</B
|
|
></SPAN
|
|
> to learn the configuration file name by providing the
|
|
following value:</P
|
|
><P
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>`cat /.package`</B
|
|
></SPAN
|
|
></P
|
|
><P
|
|
>Use either this argument or the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-fullconfig</B
|
|
></SPAN
|
|
> argument.</P
|
|
></DD
|
|
><DT
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-fullconfig</B
|
|
></SPAN
|
|
></DT
|
|
><DD
|
|
><P
|
|
>Specifies the full name of the configuration file to use, complete with the machine-type extension. Examples
|
|
are <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>staff.rs_aix42</B
|
|
></SPAN
|
|
> and <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>minimal.hp_ux110</B
|
|
></SPAN
|
|
>
|
|
files.</P
|
|
><P
|
|
>Another possibility is the string <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>stdin</B
|
|
></SPAN
|
|
>, which indicates that the issuer is
|
|
providing configuration information via the standard input stream, either as a piped file or by typing the
|
|
configuration file at the keyboard. Press <<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Ctrl-d</B
|
|
></SPAN
|
|
>> to conclude the
|
|
input.</P
|
|
><P
|
|
>Use either this argument or the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-config</B
|
|
></SPAN
|
|
> argument.</P
|
|
></DD
|
|
><DT
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-overwrite</B
|
|
></SPAN
|
|
></DT
|
|
><DD
|
|
><P
|
|
>Overwrite elements on the local disk with the source version indicated in the configuration file, even if
|
|
the first (owner) <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>w</B
|
|
></SPAN
|
|
> (<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>write</B
|
|
></SPAN
|
|
>) mode bit is turned
|
|
off on the local disk copy of the file. Files protected by the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>I</B
|
|
></SPAN
|
|
> update code are
|
|
not overwritten; see the definition for the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>F</B
|
|
></SPAN
|
|
> instruction.</P
|
|
></DD
|
|
><DT
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-noaction</B
|
|
></SPAN
|
|
></DT
|
|
><DD
|
|
><P
|
|
>Displays on the standard output stream a trace of potential problems in running the command, rather than
|
|
actually running it. If the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-verbose</B
|
|
></SPAN
|
|
> flag is added, the trace also notes the
|
|
actions the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program attempts.</P
|
|
></DD
|
|
><DT
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-silent</B
|
|
></SPAN
|
|
></DT
|
|
><DD
|
|
><P
|
|
>Explicitly invokes the default level of tracing, which includes only a list of problems encountered while
|
|
executing the command.</P
|
|
></DD
|
|
><DT
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-verbose</B
|
|
></SPAN
|
|
></DT
|
|
><DD
|
|
><P
|
|
>Produces a detailed trace of the program's actions on the standard output stream. The trace records on the
|
|
transfer and ownership/mode bit setting of each element in the configuration file.</P
|
|
></DD
|
|
><DT
|
|
><SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>-rebootfiles</B
|
|
></SPAN
|
|
></DT
|
|
><DD
|
|
><P
|
|
>Prevents the overwrite of any element marked with the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Q</B
|
|
></SPAN
|
|
> update-mode code in
|
|
the configuration file. This effectively prevents the machine from rebooting automatically again when the
|
|
<SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>package</B
|
|
></SPAN
|
|
> program is invoked from an initialization file.</P
|
|
></DD
|
|
></DL
|
|
></DIV
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>If you think files marked with the <SPAN
|
|
CLASS="bold"
|
|
><B
|
|
CLASS="emphasis"
|
|
>Q</B
|
|
></SPAN
|
|
> update code were updated, reboot the machine.
|
|
This reboot does not occur automatically.</P
|
|
></LI
|
|
></OL
|
|
></DIV
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="NAVFOOTER"
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"><TABLE
|
|
SUMMARY="Footer navigation table"
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="c21473.html"
|
|
ACCESSKEY="P"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="book1.html"
|
|
ACCESSKEY="H"
|
|
>Home</A
|
|
></TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="p24911.html"
|
|
ACCESSKEY="N"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
>Administering Client Machines and the Cache Manager</TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="p21471.html"
|
|
ACCESSKEY="U"
|
|
>Up</A
|
|
></TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
>Managing Users and Groups</TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
></BODY
|
|
></HTML
|
|
> |