update NEWS
[manpages-zh.git] / raw / mann / package.n
blob5feb1f4c07a0a4b2233a185e988104761b049618
1 '\"
2 '\" Copyright (c) 1996 Sun Microsystems, Inc.
3 '\"
4 '\" See the file "license.terms" for information on usage and redistribution
5 '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
6 '\"
7 '\" RCS: @(#) $Id: package.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
8 '\"
9 '\" The definitions below are for supplemental macros used in Tcl/Tk
10 '\" manual entries.
11 '\"
12 '\" .AP type name in/out ?indent?
13 '\" Start paragraph describing an argument to a library procedure.
14 '\" type is type of argument (int, etc.), in/out is either "in", "out",
15 '\" or "in/out" to describe whether procedure reads or modifies arg,
16 '\" and indent is equivalent to second arg of .IP (shouldn't ever be
17 '\" needed; use .AS below instead)
18 '\"
19 '\" .AS ?type? ?name?
20 '\" Give maximum sizes of arguments for setting tab stops. Type and
21 '\" name are examples of largest possible arguments that will be passed
22 '\" to .AP later. If args are omitted, default tab stops are used.
23 '\"
24 '\" .BS
25 '\" Start box enclosure. From here until next .BE, everything will be
26 '\" enclosed in one large box.
27 '\"
28 '\" .BE
29 '\" End of box enclosure.
30 '\"
31 '\" .CS
32 '\" Begin code excerpt.
33 '\"
34 '\" .CE
35 '\" End code excerpt.
36 '\"
37 '\" .VS ?version? ?br?
38 '\" Begin vertical sidebar, for use in marking newly-changed parts
39 '\" of man pages. The first argument is ignored and used for recording
40 '\" the version when the .VS was added, so that the sidebars can be
41 '\" found and removed when they reach a certain age. If another argument
42 '\" is present, then a line break is forced before starting the sidebar.
43 '\"
44 '\" .VE
45 '\" End of vertical sidebar.
46 '\"
47 '\" .DS
48 '\" Begin an indented unfilled display.
49 '\"
50 '\" .DE
51 '\" End of indented unfilled display.
52 '\"
53 '\" .SO
54 '\" Start of list of standard options for a Tk widget. The
55 '\" options follow on successive lines, in four columns separated
56 '\" by tabs.
57 '\"
58 '\" .SE
59 '\" End of list of standard options for a Tk widget.
60 '\"
61 '\" .OP cmdName dbName dbClass
62 '\" Start of description of a specific option. cmdName gives the
63 '\" option's name as specified in the class command, dbName gives
64 '\" the option's name in the option database, and dbClass gives
65 '\" the option's class in the option database.
66 '\"
67 '\" .UL arg1 arg2
68 '\" Print arg1 underlined, then print arg2 normally.
69 '\"
70 '\" RCS: @(#) $Id: package.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
71 '\"
72 '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
73 .if t .wh -1.3i ^B
74 .nr ^l \n(.l
75 .ad b
76 '\" # Start an argument description
77 .de AP
78 .ie !"\\$4"" .TP \\$4
79 .el \{\
80 . ie !"\\$2"" .TP \\n()Cu
81 . el .TP 15
82 .\}
83 .ta \\n()Au \\n()Bu
84 .ie !"\\$3"" \{\
85 \&\\$1 \\fI\\$2\\fP (\\$3)
86 .\".b
87 .\}
88 .el \{\
89 .br
90 .ie !"\\$2"" \{\
91 \&\\$1 \\fI\\$2\\fP
92 .\}
93 .el \{\
94 \&\\fI\\$1\\fP
95 .\}
96 .\}
98 '\" # define tabbing values for .AP
99 .de AS
100 .nr )A 10n
101 .if !"\\$1"" .nr )A \\w'\\$1'u+3n
102 .nr )B \\n()Au+15n
104 .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
105 .nr )C \\n()Bu+\\w'(in/out)'u+2n
107 .AS Tcl_Interp Tcl_CreateInterp in/out
108 '\" # BS - start boxed text
109 '\" # ^y = starting y location
110 '\" # ^b = 1
111 .de BS
113 .mk ^y
114 .nr ^b 1u
115 .if n .nf
116 .if n .ti 0
117 .if n \l'\\n(.lu\(ul'
118 .if n .fi
120 '\" # BE - end boxed text (draw box now)
121 .de BE
123 .ti 0
124 .mk ^t
125 .ie n \l'\\n(^lu\(ul'
126 .el \{\
127 .\" Draw four-sided box normally, but don't draw top of
128 .\" box if the box started on an earlier page.
129 .ie !\\n(^b-1 \{\
130 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
132 .el \}\
133 \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
138 .nr ^b 0
140 '\" # VS - start vertical sidebar
141 '\" # ^Y = starting y location
142 '\" # ^v = 1 (for troff; for nroff this doesn't matter)
143 .de VS
144 .if !"\\$2"" .br
145 .mk ^Y
146 .ie n 'mc \s12\(br\s0
147 .el .nr ^v 1u
149 '\" # VE - end of vertical sidebar
150 .de VE
151 .ie n 'mc
152 .el \{\
153 .ev 2
155 .ti 0
156 .mk ^t
157 \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
158 .sp -1
162 .nr ^v 0
164 '\" # Special macro to handle page bottom: finish off current
165 '\" # box/sidebar if in box/sidebar mode, then invoked standard
166 '\" # page bottom macro.
167 .de ^B
168 .ev 2
169 'ti 0
171 .mk ^t
172 .if \\n(^b \{\
173 .\" Draw three-sided box if this is the box's first page,
174 .\" draw two sides but no top otherwise.
175 .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
176 .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
178 .if \\n(^v \{\
179 .nr ^x \\n(^tu+1v-\\n(^Yu
180 \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
185 .if \\n(^b \{\
186 .mk ^y
187 .nr ^b 2
189 .if \\n(^v \{\
190 .mk ^Y
193 '\" # DS - begin display
194 .de DS
199 '\" # DE - end display
200 .de DE
205 '\" # SO - start of list of standard options
206 .de SO
207 .SH "STANDARD OPTIONS"
210 .ta 5.5c 11c
211 .ft B
213 '\" # SE - end of list of standard options
214 .de SE
216 .ft R
218 See the \\fBoptions\\fR manual entry for details on the standard options.
220 '\" # OP - start of full description for a single option
221 .de OP
224 .ta 4c
225 Command-Line Name: \\fB\\$1\\fR
226 Database Name: \\fB\\$2\\fR
227 Database Class: \\fB\\$3\\fR
231 '\" # CS - begin code excerpt
232 .de CS
235 .ta .25i .5i .75i 1i
237 '\" # CE - end code excerpt
238 .de CE
242 .de UL
243 \\$1\l'|0\(ul'\\$2
245 .TH package n 7.5 Tcl "Tcl Built-In Commands"
247 '\" Note: do not modify the .SH NAME line immediately below!
248 .SH NAME
249 package \- Facilities for package loading and version control
250 .SH SYNOPSIS
252 \fBpackage forget ?\fIpackage package ...\fR?
253 \fBpackage ifneeded \fIpackage version\fR ?\fIscript\fR?
254 \fBpackage names\fR
255 \fBpackage present \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR?
256 \fBpackage provide \fIpackage \fR?\fIversion\fR?
257 \fBpackage require \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR?
258 \fBpackage unknown \fR?\fIcommand\fR?
259 \fBpackage vcompare \fIversion1 version2\fR
260 \fBpackage versions \fIpackage\fR
261 \fBpackage vsatisfies \fIversion1 version2\fR
265 .SH DESCRIPTION
267 This command keeps a simple database of the packages available for
268 use by the current interpreter and how to load them into the
269 interpreter.
270 It supports multiple versions of each package and arranges
271 for the correct version of a package to be loaded based on what
272 is needed by the application.
273 This command also detects and reports version clashes.
274 Typically, only the \fBpackage require\fR and \fBpackage provide\fR
275 commands are invoked in normal Tcl scripts; the other commands are used
276 primarily by system scripts that maintain the package database.
278 The behavior of the \fBpackage\fR command is determined by its first argument.
279 The following forms are permitted:
281 \fBpackage forget ?\fIpackage package ...\fR?
282 Removes all information about each specified package from this interpreter,
283 including information provided by both \fBpackage ifneeded\fR and
284 \fBpackage provide\fR.
286 \fBpackage ifneeded \fIpackage version\fR ?\fIscript\fR?
287 This command typically appears only in system configuration
288 scripts to set up the package database.
289 It indicates that a particular version of
290 a particular package is available if needed, and that the package
291 can be added to the interpreter by executing \fIscript\fR.
292 The script is saved in a database for use by subsequent
293 \fBpackage require\fR commands; typically, \fIscript\fR
294 sets up auto-loading for the commands in the package (or calls
295 \fBload\fR and/or \fBsource\fR directly), then invokes
296 \fBpackage provide\fR to indicate that the package is present.
297 There may be information in the database for several different
298 versions of a single package.
299 If the database already contains information for \fIpackage\fR
300 and \fIversion\fR, the new \fIscript\fR replaces the existing
301 one.
302 If the \fIscript\fR argument is omitted, the current script for
303 version \fIversion\fR of package \fIpackage\fR is returned,
304 or an empty string if no \fBpackage ifneeded\fR command has
305 been invoked for this \fIpackage\fR and \fIversion\fR.
307 \fBpackage names\fR
308 Returns a list of the names of all packages in the
309 interpreter for which a version has been provided (via
310 \fBpackage provide\fR) or for which a \fBpackage ifneeded\fR
311 script is available.
312 The order of elements in the list is arbitrary.
314 \fBpackage present \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR?
315 This command is equivalent to \fBpackage require\fR except that it
316 does not try and load the package if it is not already loaded.
318 \fBpackage provide \fIpackage \fR?\fIversion\fR?
319 This command is invoked to indicate that version \fIversion\fR
320 of package \fIpackage\fR is now present in the interpreter.
321 It is typically invoked once as part of an \fBifneeded\fR script,
322 and again by the package itself when it is finally loaded.
323 An error occurs if a different version of \fIpackage\fR has been
324 provided by a previous \fBpackage provide\fR command.
325 If the \fIversion\fR argument is omitted, then the command
326 returns the version number that is currently provided, or an
327 empty string if no \fBpackage provide\fR command has been
328 invoked for \fIpackage\fR in this interpreter.
330 \fBpackage require \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR?
331 This command is typically invoked by Tcl code that wishes to use
332 a particular version of a particular package. The arguments
333 indicate which package is wanted, and the command ensures that
334 a suitable version of the package is loaded into the interpreter.
335 If the command succeeds, it returns the version number that is
336 loaded; otherwise it generates an error.
337 If both the \fB\-exact\fR
338 switch and the \fIversion\fR argument are specified then only the
339 given version is acceptable. If \fB\-exact\fR is omitted but
340 \fIversion\fR is specified, then versions later than \fIversion\fR
341 are also acceptable as long as they have the same major version
342 number as \fIversion\fR.
343 If both \fB\-exact\fR and \fIversion\fR are omitted then any
344 version whatsoever is acceptable.
345 If a version of \fIpackage\fR has already been provided (by invoking
346 the \fBpackage provide\fR command), then its version number must
347 satisfy the criteria given by \fB\-exact\fR and \fIversion\fR and
348 the command returns immediately.
349 Otherwise, the command searches the database of information provided by
350 previous \fBpackage ifneeded\fR commands to see if an acceptable
351 version of the package is available.
352 If so, the script for the highest acceptable version number is invoked;
353 it must do whatever is necessary to load the package,
354 including calling \fBpackage provide\fR for the package.
355 If the \fBpackage ifneeded\fR database does not contain an acceptable
356 version of the package and a \fBpackage unknown\fR command has been
357 specified for the interpreter then that command is invoked; when
358 it completes, Tcl checks again to see if the package is now provided
359 or if there is a \fBpackage ifneeded\fR script for it.
360 If all of these steps fail to provide an acceptable version of the
361 package, then the command returns an error.
363 \fBpackage unknown \fR?\fIcommand\fR?
364 This command supplies a ``last resort'' command to invoke during
365 \fBpackage require\fR if no suitable version of a package can be found
366 in the \fBpackage ifneeded\fR database.
367 If the \fIcommand\fR argument is supplied, it contains the first part
368 of a command; when the command is invoked during a \fBpackage require\fR
369 command, Tcl appends two additional arguments giving the desired package
370 name and version.
371 For example, if \fIcommand\fR is \fBfoo bar\fR and later the command
372 \fBpackage require test 2.4\fR is invoked, then Tcl will execute
373 the command \fBfoo bar test 2.4\fR to load the package.
374 If no version number is supplied to the \fBpackage require\fR command,
375 then the version argument for the invoked command will be an empty string.
376 If the \fBpackage unknown\fR command is invoked without a \fIcommand\fR
377 argument, then the current \fBpackage unknown\fR script is returned,
378 or an empty string if there is none.
379 If \fIcommand\fR is specified as an empty string, then the current
380 \fBpackage unknown\fR script is removed, if there is one.
382 \fBpackage vcompare \fIversion1 version2\fR
383 Compares the two version numbers given by \fIversion1\fR and \fIversion2\fR.
384 Returns -1 if \fIversion1\fR is an earlier version than \fIversion2\fR,
385 0 if they are equal, and 1 if \fIversion1\fR is later than \fBversion2\fR.
387 \fBpackage versions \fIpackage\fR
388 Returns a list of all the version numbers of \fIpackage\fR
389 for which information has been provided by \fBpackage ifneeded\fR
390 commands.
392 \fBpackage vsatisfies \fIversion1 version2\fR
393 Returns 1 if scripts written for \fIversion2\fR will work unchanged
394 with \fIversion1\fR (i.e. \fIversion1\fR is equal to or greater
395 than \fIversion2\fR and they both have the same major version
396 number), 0 otherwise.
398 .SH "VERSION NUMBERS"
400 Version numbers consist of one or more decimal numbers separated
401 by dots, such as 2 or 1.162 or 3.1.13.1.
402 The first number is called the major version number.
403 Larger numbers correspond to later versions of a package, with
404 leftmost numbers having greater significance.
405 For example, version 2.1 is later than 1.3 and version
406 3.4.6 is later than 3.3.5.
407 Missing fields are equivalent to zeroes: version 1.3 is the
408 same as version 1.3.0 and 1.3.0.0, so it is earlier than 1.3.1 or 1.3.0.2.
409 A later version number is assumed to be upwards compatible with
410 an earlier version number as long as both versions have the same
411 major version number.
412 For example, Tcl scripts written for version 2.3 of a package should
413 work unchanged under versions 2.3.2, 2.4, and 2.5.1.
414 Changes in the major version number signify incompatible changes:
415 if code is written to use version 2.1 of a package, it is not guaranteed
416 to work unmodified with either version 1.7.3 or version 3.1.
418 .SH "PACKAGE INDICES"
420 The recommended way to use packages in Tcl is to invoke \fBpackage require\fR
421 and \fBpackage provide\fR commands in scripts, and use the procedure
422 \fBpkg_mkIndex\fR to create package index files.
423 Once you've done this, packages will be loaded automatically
424 in response to \fBpackage require\fR commands.
425 See the documentation for \fBpkg_mkIndex\fR for details.
427 .SH "SEE ALSO"
428 msgcat(n), packagens(n), pkgMkIndex(n)
430 .SH KEYWORDS
431 package, version