|
|
1.1 root 1: .TH ASD 8
2: .CT 1 sa_auto
3: .SH NAME
4: asd \- automatic software distribution
5: .SH SYNOPSIS
6: .B /usr/lib/asd/cdaemon
7: .br
8: .B /usr/lib/asd/dkinstall
9: .br
10: .B /usr/lib/asd/mkspool
11: .br
12: .B /usr/lib/asd/rmlocks
13: .br
14: .B /usr/lib/asd/udaemon
15: .SH DESCRIPTION
16: These programs constitute the innards of the
17: automatic software distribution system
18: invoked by
19: .IR ship (8).
20: .PP
21: .I Mkspool
22: creates an
23: .SM ASD
24: spool directory for its invoker (if necessary),
25: puts a file named
26: .F dummy
27: in the directory to prevent
28: .I cdaemon
29: from deleting it,
30: and prints the directory's name.
31: .PP
32: .I Udaemon
33: examines its invoker's
34: .SM ASD
35: spool directory in lexical order
36: for things to do.
37: To forestall multiple daemons, it first makes an empty file named
38: .BI L. pid
39: in the spool directory
40: and tries to link to it a file
41: .FR lock .
42: If the link fails,
43: .BI L. pid
44: is removed and
45: .I udaemon
46: exits.
47: .PP
48: Shipping instructions
49: appear in pairs of files with
50: .B .s
51: and
52: .B .d
53: suffixes.
54: .I Udaemon
55: examines each status
56: .RB ( .s )
57: file for destination names and
58: places a network call
59: to send the corresponding data
60: .RB ( .d )
61: file to
62: .I dkinstall
63: at each destination.
64: .I Dkinstall
65: verifies the data
66: and gives it to
67: .IR inspkg ,
68: see
69: .IR mkpkg (8).
70: .PP
71: A status file contains
72: zero or more entries,
73: each of which has one or more lines.
74: The first line of an entry is a
75: network address,
76: with default network
77: .B dk
78: and default service
79: .BR asd ,
80: possibly followed by a blank and a failure report.
81: An entry with destination
82: .L #
83: is a comment and is ignored.
84: Lines after the first begin with
85: a tab,
86: and contain output generated by the entry.
87: If an entry has output,
88: it is considered complete
89: and will be processed no further.
90: .PP
91: .I Udaemon
92: scans each status file once,
93: and attempts to send the corresponding data file to the destination
94: for each incomplete entry.
95: If the attempt fails,
96: a failure report is appended to the entry,
97: and it remains incomplete.
98: If the attempt succeeds,
99: or the failure is severe,
100: an error message
101: or output from
102: .I dkinstall
103: is appended to the entry,
104: which makes the entry complete.
105: If an entry is completed successfully
106: but there are no output lines,
107: the entry is deleted.
108: .PP
109: Each instance of
110: .I udaemon
111: remembers which network addresses failed with non-severe errors;
112: entries with the same address in later status files
113: are given failure status `deferred for sequence.'
114: .PP
115: If at least one additional entry was completed,
116: .I udaemon
117: sends the new status file to the owner by
118: .IR mail (1)
119: after the whole file has been scanned.
120: If no incomplete entries remain,
121: both status and data files are removed.
122: .PP
123: .I Cdaemon
124: examines every subdirectory of
125: .FR /usr/spool/asd ,
126: deletes empty directories and, impersonating the owner,
127: invokes
128: .I udaemon
129: for nonempty directories.
130: .I Cdaemon
131: should be run regularly by
132: .IR cron (8)
133: with super-user permissions.
134: .PP
135: .IR Rmlocks
136: removes all lock files in
137: subdirectories of
138: .FR /usr/spool/asd .
139: It should be called from
140: .IR rc (8).
141: .PP
142: Entries in an
143: .SM ASD
144: spool directory may be made without regard to locks
145: provided that everything is done in the right
146: sequence:
147: (1) call
148: .IR mkspool ;
149: (2) create the data file;
150: (3) create the status file under a temporary name;
151: (4) rename the status file to end with
152: .BR .s ;
153: (5) remove the
154: .F dummy
155: file, if present; and
156: (6) call
157: .IR udaemon .
158: .PP
159: Because
160: .I mail
161: will not send an empty file,
162: a status file must have a comment entry if
163: acknowledgment is desired after a
164: successful
165: .I udaemon
166: run.
167: .SH FILES
168: .BI /usr/spool/asd/ "userid "
169: user's
170: .SM ASD
171: spool directory
172: .SH SEE ALSO
173: .IR mkpkg (8),
174: .IR ship (8)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.