beta-0.89.2
[luatex.git] / source / doc / tlbuild-incl / tlmgr.texi
blob9c941d29bf9a1ccd1e739fd9c1872409540d29d3
1 @node tlmgr
2 @appendix tlmgr
4 @menu
5 * tlmgr NAME::
6 * tlmgr SYNOPSIS::
7 * tlmgr DESCRIPTION::
8 * tlmgr EXAMPLES::
9 * tlmgr OPTIONS::
10 * tlmgr ACTIONS::
11 * tlmgr USER MODE::
12 * tlmgr CONFIGURATION FILE FOR TLMGR::
13 * tlmgr TAXONOMIES::
14 * tlmgr MULTIPLE REPOSITORIES::
15 * tlmgr GUI FOR TLMGR::
16 * tlmgr MACHINE-READABLE OUTPUT::
17 * tlmgr AUTHORS AND COPYRIGHT::
18 @end menu
20 @node tlmgr NAME
21 @appendixsec NAME
23 tlmgr - the TeX Live Manager
25 @node tlmgr SYNOPSIS
26 @appendixsec SYNOPSIS
28 tlmgr [@emph{option}]... @emph{action} [@emph{option}]... [@emph{operand}]...
30 @node tlmgr DESCRIPTION
31 @appendixsec DESCRIPTION
33 @strong{tlmgr} manages an existing TeX Live installation, both packages and
34 configuration options.  For information on initially downloading and
35 installing TeX Live, see @url{http://tug.org/texlive/acquire.html}.
37 The most up-to-date version of this documentation (updated nightly from
38 the development sources) is available at
39 @url{http://tug.org/texlive/tlmgr.html}, along with procedures for updating
40 @code{tlmgr} itself and information about test versions.
42 TeX Live is organized into a few top-level @emph{schemes}, each of which is
43 specified as a different set of @emph{collections} and @emph{packages}, where a
44 collection is a set of packages, and a package is what contains actual
45 files.  Schemes typically contain a mix of collections and packages, but
46 each package is included in exactly one collection, no more and no less.
47 A TeX Live installation can be customized and managed at any level.
49 See @url{http://tug.org/texlive/doc} for all the TeX Live documentation
50 available.
52 @node tlmgr EXAMPLES
53 @appendixsec EXAMPLES
55 After successfully installing TeX Live, here are a few common operations
56 with @code{tlmgr}:
58 @table @asis
59 @item @code{tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet}
60 @anchor{tlmgr @code{tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet}}
62 Tell @code{tlmgr} to use a nearby CTAN mirror for future updates; useful if
63 you installed TeX Live from the DVD image and want continuing updates.
65 @item @code{tlmgr update --list}
66 @anchor{tlmgr @code{tlmgr update --list}}
68 Report what would be updated without actually updating anything.
70 @item @code{tlmgr update --all}
71 @anchor{tlmgr @code{tlmgr update --all}}
73 Make your local TeX installation correspond to what is in the package
74 repository (typically useful when updating from CTAN).
76 @item @code{tlmgr info} @emph{pkg}
77 @anchor{tlmgr @code{tlmgr info} @emph{pkg}}
79 Display detailed information about @emph{pkg}, such as the installation
80 status and description.
82 @end table
84 For all the capabilities and details of @code{tlmgr}, please read the
85 following voluminous information.
87 @node tlmgr OPTIONS
88 @appendixsec OPTIONS
90 The following options to @code{tlmgr} are global options, not specific to
91 any action.  All options, whether global or action-specific, can be
92 given anywhere on the command line, and in any order.  The first
93 non-option argument will be the main action.  In all cases,
94 @code{--}@emph{option} and @code{-}@emph{option} are equivalent, and an @code{=} is optional
95 between an option name and its value.
97 @table @asis
98 @item @strong{--repository} @emph{url|path}
99 @anchor{tlmgr @strong{--repository} @emph{url|path}}
101 Specifies the package repository from which packages should be installed
102 or updated, overriding the default package repository found in the
103 installation's TeX Live Package Database (a.k.a. the TLPDB, defined
104 entirely in the file @code{tlpkg/texlive.tlpdb}).  The documentation for
105 @code{install-tl} has more details about this
106 (@url{http://tug.org/texlive/doc/install-tl.html}).
108 @code{--repository} changes the repository location only for the current
109 run; to make a permanent change, use @code{option repository} (see the
110 @ref{tlmgr option,, option} action).
112 For backward compatibility and convenience, @code{--location} and @code{--repo}
113 are accepted as aliases for this option.
115 @item @strong{--gui} [@emph{action}]
116 @anchor{tlmgr @strong{--gui} [@emph{action}]}
118 @code{tlmgr} has a graphical interface as well as the command line
119 interface.  You can give this option, @code{--gui}, together with an action
120 to be brought directly into the respective screen of the GUI.  For
121 example, running
123 @verbatim
124   tlmgr --gui update
125 @end verbatim
127 starts you directly at the update screen.  If no action is given, the
128 GUI will be started at the main screen.
130 @item @strong{--gui-lang} @emph{llcode}
131 @anchor{tlmgr @strong{--gui-lang} @emph{llcode}}
133 By default, the GUI tries to deduce your language from the environment
134 (on Windows via the registry, on Unix via @code{LC_MESSAGES}). If that fails
135 you can select a different language by giving this option with a
136 language code (based on ISO 639-1).  Currently supported (but not
137 necessarily completely translated) are: English (en, default), Czech
138 (cs), German (de), French (fr), Italian (it), Japanese (ja), Dutch (nl),
139 Polish (pl), Brazilian Portuguese (pt_BR), Russian (ru), Slovak (sk),
140 Slovenian (sl), Serbian (sr), Ukrainian (uk), Vietnamese (vi),
141 simplified Chinese (zh_CN), and traditional Chinese (zh_TW).
143 @item @strong{--debug-translation}
144 @anchor{tlmgr @strong{--debug-translation}}
146 In GUI mode, this switch tells @code{tlmgr} to report any untranslated (or
147 missing) messages to standard error.  This can help translators to see
148 what remains to be done.
150 @item @strong{--machine-readable}
151 @anchor{tlmgr @strong{--machine-readable}}
153 Instead of the normal output intended for human consumption, write (to
154 standard output) a fixed format more suitable for machine parsing.  See
155 the @ref{tlmgr MACHINE-READABLE OUTPUT,, MACHINE-READABLE OUTPUT} section below.
157 @item @strong{--no-execute-actions}
158 @anchor{tlmgr @strong{--no-execute-actions}}
160 Suppress the execution of the execute actions as defined in the tlpsrc
161 files.  Documented only for completeness, as this is only useful in
162 debugging.
164 @item @strong{--package-logfile} @emph{file}
165 @anchor{tlmgr @strong{--package-logfile} @emph{file}}
167 @code{tlmgr} logs all package actions (install, remove, update, failed
168 updates, failed restores) to a separate log file, by default
169 @code{TEXMFSYSVAR/web2c/tlmgr.log}.  This option allows you to specific a
170 different file for the log.
172 @item @strong{--pause}
173 @anchor{tlmgr @strong{--pause}}
175 This option makes @code{tlmgr} wait for user input before exiting.  Useful on
176 Windows to avoid disappearing command windows.
178 @item @strong{--persistent-downloads}
179 @anchor{tlmgr @strong{--persistent-downloads}}
181 @item @strong{--no-persistent-downloads}
182 @anchor{tlmgr @strong{--no-persistent-downloads}}
184 For network-based installations, this option (on by default) makes
185 @code{tlmgr} try to set up a persistent connection (using the @code{LWP} Perl
186 module).  The idea is to open and reuse only one connection per session
187 between your computer and the server, instead of initiating a new
188 download for each package.
190 If this is not possible, @code{tlmgr} will fall back to using @code{wget}.  To
191 disable these persistent connections, use @code{--no-persistent-downloads}.
193 @item @strong{--pin-file}
194 @anchor{tlmgr @strong{--pin-file}}
196 Change the pinning file location from @code{TEXMFLOCAL/tlpkg/pinning.txt}
197 (see @ref{tlmgr Pinning,, Pinning} below).  Documented only for completeness, as this is
198 only useful in debugging.
200 @item @strong{--usermode}
201 @anchor{tlmgr @strong{--usermode}}
203 Activates user mode for this run of @code{tlmgr}; see @ref{tlmgr USER MODE,, USER MODE} below.
205 @item @strong{--usertree} @emph{dir}
206 @anchor{tlmgr @strong{--usertree} @emph{dir}}
208 Uses @emph{dir} for the tree in user mode; see @ref{tlmgr USER MODE,, USER MODE} below.
210 @end table
212 The standard options for TeX Live programs are also accepted:
213 @code{--help/-h/-?}, @code{--version}, @code{-q} (no informational messages), @code{-v}
214 (debugging messages, can be repeated).  For the details about these, see
215 the @code{TeXLive::TLUtils} documentation.
217 The @code{--version} option shows version information about the TeX Live
218 release and about the @code{tlmgr} script itself.  If @code{-v} is also given,
219 revision number for the loaded TeX Live Perl modules are shown, too.
221 @node tlmgr ACTIONS
222 @appendixsec ACTIONS
224 @menu
225 * tlmgr help::
226 * tlmgr version::
227 * tlmgr backup [--clean[=@emph{N}]] [--backupdir @emph{dir}] [--all | @emph{pkg}]...::
228 * tlmgr candidates @emph{pkg}::
229 * tlmgr check [@emph{option}]... [files|depends|executes|runfiles|all]::
230 * tlmgr conf [texmf|tlmgr|updmap [--conffile @emph{file}] [--delete] [@emph{key} [@emph{value}]]]::
231 * tlmgr dump-tlpdb [--local|--remote]::
232 * tlmgr generate [@emph{option}]... @emph{what}::
233 * tlmgr gui::
234 * tlmgr info [@emph{option}...] [collections|schemes|@emph{pkg}...]::
235 * tlmgr init-usertree::
236 * tlmgr install [@emph{option}]... @emph{pkg}...::
237 * tlmgr option::
238 * tlmgr paper::
239 * tlmgr path [--w32mode=user|admin] [add|remove]::
240 * tlmgr pinning::
241 * tlmgr platform list|add|remove @emph{platform}...::
242 * tlmgr platform set @emph{platform}::
243 * tlmgr platform set auto::
244 * tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [@emph{pkg}]...::
245 * tlmgr print-platform::
246 * tlmgr restore [--backupdir @emph{dir}] [--all | @emph{pkg} [@emph{rev}]]::
247 * tlmgr remove [@emph{option}]... @emph{pkg}...::
248 * tlmgr repository::
249 * tlmgr search [@emph{option}...] @emph{what}::
250 * tlmgr uninstall::
251 * tlmgr update [@emph{option}]... [@emph{pkg}]...::
252 @end menu
254 @node tlmgr help
255 @appendixsubsec help
257 Display this help information and exit (same as @code{--help}, and on the
258 web at @url{http://tug.org/texlive/doc/tlmgr.html}).  Sometimes the
259 @code{perldoc} and/or @code{PAGER} programs on the system have problems,
260 resulting in control characters being literally output.  This can't
261 always be detected, but you can set the @code{NOPERLDOC} environment
262 variable and @code{perldoc} will not be used.
264 @node tlmgr version
265 @appendixsubsec version
267 Gives version information (same as @code{--version}).
269 If @code{-v} has been given the revisions of the used modules are reported, too.
271 @node tlmgr backup [--clean[=@emph{N}]] [--backupdir @emph{dir}] [--all | @emph{pkg}]...
272 @appendixsubsec backup [--clean[=@emph{N}]] [--backupdir @emph{dir}] [--all | @emph{pkg}]...
274 If the @code{--clean} option is not specified, this action makes a backup of
275 the given packages, or all packages given @code{--all}. These backups are
276 saved to the value of the @code{--backupdir} option, if that is an existing and
277 writable directory. If @code{--backupdir} is not given, the @code{backupdir}
278 option setting in the TLPDB is used, if present.  If both are missing,
279 no backups are made.
281 If the @code{--clean} option is specified, backups are pruned (removed)
282 instead of saved. The optional integer value @emph{N} may be specified to
283 set the number of backups that will be retained when cleaning. If @code{N}
284 is not given, the value of the @code{autobackup} option is used. If both are
285 missing, an error is issued. For more details of backup pruning, see
286 the @code{option} action.
288 Options:
290 @table @asis
291 @item @strong{--backupdir} @emph{directory}
292 @anchor{tlmgr @strong{--backupdir} @emph{directory}}
294 Overrides the @code{backupdir} option setting in the TLPDB.
295 The @emph{directory} argument is required and must specify an existing,
296 writable directory where backups are to be placed.
298 @item @strong{--all}
299 @anchor{tlmgr @strong{--all}}
301 If @code{--clean} is not specified, make a backup of all packages in the TeX
302 Live installation; this will take quite a lot of space and time.  If
303 @code{--clean} is specified, all packages are pruned.
305 @item @strong{--clean}[=@emph{N}]
306 @anchor{tlmgr @strong{--clean}[=@emph{N}]}
308 Instead of making backups, prune the backup directory of old backups, as
309 explained above. The optional integer argument @emph{N} overrides the
310 @code{autobackup} option set in the TLPDB.  You must use @code{--all} or a list
311 of packages together with this option, as desired.
313 @item @strong{--dry-run}
314 @anchor{tlmgr @strong{--dry-run}}
316 Nothing is actually backed up or removed; instead, the actions to be
317 performed are written to the terminal.
319 @end table
321 @node tlmgr candidates @emph{pkg}
322 @appendixsubsec candidates @emph{pkg}
324 @table @asis
325 @item @strong{candidates @emph{pkg}}
326 @anchor{tlmgr @strong{candidates @emph{pkg}} 1}
328 Shows the available candidate repositories for package @emph{pkg}.
329 See @ref{tlmgr MULTIPLE REPOSITORIES,, MULTIPLE REPOSITORIES} below.
331 @end table
333 @node tlmgr check [@emph{option}]... [files|depends|executes|runfiles|all]
334 @appendixsubsec check [@emph{option}]... [files|depends|executes|runfiles|all]
336 Executes one (or all) check(s) on the consistency of the installation.
338 @table @asis
339 @item @strong{files}
340 @anchor{tlmgr @strong{files}}
342 Checks that all files listed in the local TLPDB (@code{texlive.tlpdb}) are
343 actually present, and lists those missing.
345 @item @strong{depends}
346 @anchor{tlmgr @strong{depends}}
348 Lists those packages which occur as dependencies in an installed collections,
349 but are themselves not installed, and those packages that are not
350 contained in any collection.
352 If you call @code{tlmgr check collections} this test will be carried out
353 instead since former versions for @code{tlmgr} called it that way.
355 @item @strong{executes}
356 @anchor{tlmgr @strong{executes}}
358 Check that the files referred to by @code{execute} directives in the TeX
359 Live Database are present.
361 @item @strong{runfiles}
362 @anchor{tlmgr @strong{runfiles}}
364 List those filenames that are occurring more than one time in the runfiles.
366 @end table
368 Options:
370 @table @asis
371 @item @strong{--use-svn}
372 @anchor{tlmgr @strong{--use-svn}}
374 Use the output of @code{svn status} instead of listing the files; for
375 checking the TL development repository.
377 @end table
379 @node tlmgr conf [texmf|tlmgr|updmap [--conffile @emph{file}] [--delete] [@emph{key} [@emph{value}]]]
380 @appendixsubsec conf [texmf|tlmgr|updmap [--conffile @emph{file}] [--delete] [@emph{key} [@emph{value}]]]
382 With only @code{conf}, show general configuration information for TeX Live,
383 including active configuration files, path settings, and more.  This is
384 like the @code{texconfig conf} call, but works on all supported platforms.
386 With either @code{conf texmf}, @code{conf tlmgr}, or @code{conf updmap} given in
387 addition, shows all key/value pairs (i.e., all settings) as saved in
388 @code{ROOT/texmf.cnf}, the tlmgr configuration file (see below), or the
389 first found (via kpsewhich) @code{updmap.cfg} file, respectively.
391 If @emph{key} is given in addition, shows the value of only that @emph{key} in
392 the respective file.  If option @emph{--delete} is also given, the
393 configuration file -- it is removed, not just commented out!
395 If @emph{value} is given in addition, @emph{key} is set to @emph{value} in the 
396 respective file.  @emph{No error checking is done!}
398 In all cases the file used can be explicitly specified via the option
399 @code{--conffile @emph{file}}, in case one wants to operate on a different file.
401 Practical application: if the execution of (some or all) system commands
402 via @code{\write18} was left enabled during installation, you can disable
403 it afterwards:
405 @verbatim
406   tlmgr conf texmf shell_escape 0
407 @end verbatim
409 A more complicated example: the @code{TEXMFHOME} tree (see the main TeX Live
410 guide, @url{http://tug.org/texlive/doc.html}) can be set to multiple
411 directories, but they must be enclosed in braces and separated by
412 commas, so quoting the value to the shell is a good idea.  Thus:
414 @verbatim
415   tlmgr conf texmf TEXMFHOME "{~/texmf,~/texmfbis}"
416 @end verbatim
418 Warning: The general facility is here, but tinkering with settings in
419 this way is very strongly discouraged.  Again, no error checking on
420 either keys or values is done, so any sort of breakage is possible.
422 @node tlmgr dump-tlpdb [--local|--remote]
423 @appendixsubsec dump-tlpdb [--local|--remote]
425 Dump complete local or remote TLPDB to standard output, as-is.  The
426 output is analogous to the @code{--machine-readable} output; see
427 @ref{tlmgr MACHINE-READABLE OUTPUT,, MACHINE-READABLE OUTPUT} section.
429 Options:
431 @table @asis
432 @item @strong{--local}
433 @anchor{tlmgr @strong{--local}}
435 Dump the local tlpdb.
437 @item @strong{--remote}
438 @anchor{tlmgr @strong{--remote}}
440 Dump the remote tlpdb.
442 @end table
444 Exactly one of @code{--local} and @code{--remote} must be given.
446 In either case, the first line of the output specifies the repository
447 location, in this format:
449 @verbatim
450   "location-url" "\t" location
451 @end verbatim
453 where @code{location-url} is the literal field name, followed by a tab, and
454 @emph{location} is the file or url to the repository.
456 Line endings may be either LF or CRLF depending on the current platform.
458 @node tlmgr generate [@emph{option}]... @emph{what}
459 @appendixsubsec generate [@emph{option}]... @emph{what}
461 @table @asis
462 @item @strong{generate language}
463 @anchor{tlmgr @strong{generate language}}
465 @item @strong{generate language.dat}
466 @anchor{tlmgr @strong{generate language.dat}}
468 @item @strong{generate language.def}
469 @anchor{tlmgr @strong{generate language.def}}
471 @item @strong{generate language.dat.lua}
472 @anchor{tlmgr @strong{generate language.dat.lua}}
474 @item @strong{generate fmtutil}
475 @anchor{tlmgr @strong{generate fmtutil}}
477 @end table
479 The @code{generate} action overwrites any manual changes made in the
480 respective files: it recreates them from scratch based on the
481 information of the installed packages, plus local adaptions.
482 The TeX Live installer and @code{tlmgr} routinely call @code{generate} for
483 all of these files.
485 For managing your own fonts, please read the @code{updmap --help}
486 information and/or @url{http://tug.org/fonts/fontinstall.html}.
488 In more detail: @code{generate} remakes any of the configuration files
489 @code{language.dat}, @code{language.def}, @code{language.dat.lua}, and
490 @code{fmtutil.cnf}, from the information present in the local TLPDB, plus
491 locally-maintained files.
493 The locally-maintained files are @code{language-local.dat},
494 @code{language-local.def}, @code{language-local.dat.lua}, or
495 @code{fmtutil-local.cnf}, searched for in @code{TEXMFLOCAL} in the respective
496 directories.  If local additions are present, the final file is made by
497 starting with the main file, omitting any entries that the local file
498 specifies to be disabled, and finally appending the local file.
500 (Historical note: The formerly supported @code{updmap-local.cfg} is no longer
501 read, since @code{updmap} now supports multiple @code{updmap.cfg} files.  Thus,
502 local additions can and should be put into an @code{updmap.cfg} file in
503 @code{TEXMFLOCAL}.  The @code{generate updmap} action no longer exists.)
505 Local files specify entries to be disabled with a comment line, namely
506 one of these:
508 @verbatim
509   #!NAME
510   %!NAME
511   --!NAME
512 @end verbatim
514 where @code{fmtutil.cnf} uses @code{#}, @code{language.dat} and @code{language.def} use
515 @code{%}, and @code{language.dat.lua} use @code{--}.  In all cases, the @emph{name} is
516 the respective format name or hyphenation pattern identifier.
517 Examples:
519 @verbatim
520   #!pdflatex
521   %!german
522   --!usenglishmax
523 @end verbatim
525 (Of course, you're not likely to actually want to disable those
526 particular items.  They're just examples.)
528 After such a disabling line, the local file can include another entry
529 for the same item, if a different definition is desired.  In general,
530 except for the special disabling lines, the local files follow the same
531 syntax as the master files.
533 The form @code{generate language} recreates all three files @code{language.dat},
534 @code{language.def}, and @code{language.dat.lua}, while the forms with an
535 extension recreates only that given language file.
537 Options:
539 @table @asis
540 @item @strong{--dest} @emph{output_file}
541 @anchor{tlmgr @strong{--dest} @emph{output_file}}
543 specifies the output file (defaults to the respective location in
544 @code{TEXMFSYSVAR}).  If @code{--dest} is given to @code{generate language}, it
545 serves as a basename onto which @code{.dat} will be appended for the name of
546 the @code{language.dat} output file, @code{.def} will be appended to the value
547 for the name of the @code{language.def} output file, and @code{.dat.lua} to the
548 name of the @code{language.dat.lua} file.  (This is just to avoid
549 overwriting; if you want a specific name for each output file, we
550 recommend invoking @code{tlmgr} twice.)
552 @item @strong{--localcfg} @emph{local_conf_file}
553 @anchor{tlmgr @strong{--localcfg} @emph{local_conf_file}}
555 specifies the (optional) local additions (defaults to the respective
556 location in @code{TEXMFLOCAL}).
558 @item @strong{--rebuild-sys}
559 @anchor{tlmgr @strong{--rebuild-sys}}
561 tells tlmgr to run necessary programs after config files have been
562 regenerated. These are:
563 @code{fmtutil-sys --all} after @code{generate fmtutil},
564 @code{fmtutil-sys --byhyphen .../language.dat} after @code{generate language.dat},
566 @code{fmtutil-sys --byhyphen .../language.def} after @code{generate language.def}.
568 These subsequent calls cause the newly-generated files to actually take
569 effect.  This is not done by default since those calls are lengthy
570 processes and one might want to made several related changes in
571 succession before invoking these programs.
573 @end table
575 The respective locations are as follows:
577 @verbatim
578   tex/generic/config/language.dat (and language-local.dat);
579   tex/generic/config/language.def (and language-local.def);
580   tex/generic/config/language.dat.lua (and language-local.dat.lua);
581   web2c/fmtutil.cnf (and fmtutil-local.cnf);
582 @end verbatim
584 @node tlmgr gui
585 @appendixsubsec gui
587 Start the graphical user interface. See @strong{GUI} below.
589 @node tlmgr info [@emph{option}...] [collections|schemes|@emph{pkg}...]
590 @appendixsubsec info [@emph{option}...] [collections|schemes|@emph{pkg}...]
592 With no argument, lists all packages available at the package
593 repository, prefixing those already installed with @code{i}.
595 With the single word @code{collections} or @code{schemes} as the argument, lists
596 the request type instead of all packages.
598 With any other arguments, display information about @emph{pkg}: the name,
599 category, short and long description, installation status, and TeX Live
600 revision number.  If @emph{pkg} is not locally installed, searches in the
601 remote installation source.
603 It also displays information taken from the TeX Catalogue, namely the
604 package version, date, and license.  Consider these, especially the
605 package version, as approximations only, due to timing skew of the
606 updates of the different pieces.  By contrast, the @code{revision} value
607 comes directly from TL and is reliable.
609 The former actions @code{show} and @code{list} are merged into this action,
610 but are still supported for backward compatibility.
612 Options:
614 @table @asis
615 @item @strong{--list}
616 @anchor{tlmgr @strong{--list}}
618 If the option @code{--list} is given with a package, the list of contained
619 files is also shown, including those for platform-specific dependencies.
620 When given with schemes and collections, @code{--list} outputs their
621 dependencies in a similar way.
623 @item @strong{--only-installed}
624 @anchor{tlmgr @strong{--only-installed}}
626 If this options is given,  the installation source will
627 not be used; only locally installed packages, collections, or schemes
628 are listed.
629 (Does not work for listing of packages for now)
631 @item @strong{--taxonomy}
632 @anchor{tlmgr @strong{--taxonomy}}
634 @item @strong{--keyword}
635 @anchor{tlmgr @strong{--keyword}}
637 @item @strong{--functionality}
638 @anchor{tlmgr @strong{--functionality}}
640 @item @strong{--characterization}
641 @anchor{tlmgr @strong{--characterization}}
643 In addition to the normal data displayed, also display information for
644 given packages from the corresponding taxonomy (or all of them).  See
645 @ref{tlmgr TAXONOMIES,, TAXONOMIES} below for details.
647 @end table
649 @node tlmgr init-usertree
650 @appendixsubsec init-usertree
652 Sets up a texmf tree for so-called user mode management, either the
653 default user tree (@code{TEXMFHOME}), or one specified on the command line
654 with @code{--usertree}.  See @ref{tlmgr USER MODE,, USER MODE} below.
656 @node tlmgr install [@emph{option}]... @emph{pkg}...
657 @appendixsubsec install [@emph{option}]... @emph{pkg}...
659 Install each @emph{pkg} given on the command line. By default this installs
660 all packages on which the given @emph{pkg}s are dependent, also.  Options:
662 @table @asis
663 @item @strong{--file}
664 @anchor{tlmgr @strong{--file}}
666 Instead of fetching a package from the installation repository, use
667 the package files given on the command line.  These files must
668 be standard TeX Live package files (with contained tlpobj file).
670 @item @strong{--reinstall}
671 @anchor{tlmgr @strong{--reinstall}}
673 Reinstall a package (including dependencies for collections) even if it
674 already seems to be installed (i.e, is present in the TLPDB).  This is
675 useful to recover from accidental removal of files in the hierarchy.
677 When re-installing, only dependencies on normal packages are followed
678 (i.e., not those of category Scheme or Collection).
680 @item @strong{--no-depends}
681 @anchor{tlmgr @strong{--no-depends}}
683 Do not install dependencies.  (By default, installing a package ensures
684 that all dependencies of this package are fulfilled.)
686 @item @strong{--no-depends-at-all}
687 @anchor{tlmgr @strong{--no-depends-at-all}}
689 Normally, when you install a package which ships binary files the
690 respective binary package will also be installed.  That is, for a
691 package @code{foo}, the package @code{foo.i386-linux} will also be installed on
692 an @code{i386-linux} system.  This option suppresses this behavior, and also
693 implies @code{--no-depends}.  Don't use it unless you are sure of what you
694 are doing.
696 @item @strong{--dry-run}
697 @anchor{tlmgr @strong{--dry-run} 1}
699 Nothing is actually installed; instead, the actions to be performed are
700 written to the terminal.
702 @item @strong{--force}
703 @anchor{tlmgr @strong{--force}}
705 If updates to @code{tlmgr} itself (or other parts of the basic
706 infrastructure) are present, @code{tlmgr} will bail out and not perform the
707 installation unless this option is given.  Not recommended.
709 @end table
711 @node tlmgr option
712 @appendixsubsec option
714 @table @asis
715 @item @strong{option [show]}
716 @anchor{tlmgr @strong{option [show]}}
718 @item @strong{option showall}
719 @anchor{tlmgr @strong{option showall}}
721 @item @strong{option @emph{key} [@emph{value}]}
722 @anchor{tlmgr @strong{option @emph{key} [@emph{value}]}}
724 @end table
726 The first form shows the global TeX Live settings currently saved in the
727 TLPDB with a short description and the @code{key} used for changing it in
728 parentheses.
730 The second form is similar, but also shows options which can be defined
731 but are not currently set to any value.
733 In the third form, if @emph{value} is not given, the setting for @emph{key} is
734 displayed.  If @emph{value} is present, @emph{key} is set to @emph{value}.
736 Possible values for @emph{key} are (run @code{tlmgr option showall} for
737 the definitive list):
739 @verbatim
740  repository (default package repository),
741  formats    (create formats at installation time),
742  postcode   (run postinst code blobs)
743  docfiles   (install documentation files),
744  srcfiles   (install source files),
745  backupdir  (default directory for backups),
746  autobackup (number of backups to keep).
747  sys_bin    (directory to which executables are linked by the path action)
748  sys_man    (directory to which man pages are linked by the path action)
749  sys_info   (directory to which Info files are linked by the path action)
750  desktop_integration (Windows-only: create Start menu shortcuts)
751  fileassocs (Windows-only: change file associations)
752  multiuser  (Windows-only: install for all users)
753 @end verbatim
755 One common use of @code{option} is to permanently change the installation to
756 get further updates from the Internet, after originally installing from
757 DVD.  To do this, you can run
759 @verbatim
760  tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet
761 @end verbatim
763 The @code{install-tl} documentation has more information about the possible
764 values for @code{repository}.  (For backward compatibility, @code{location} can
765 be used as alternative name for @code{repository}.)
767 If @code{formats} is set (this is the default), then formats are regenerated
768 when either the engine or the format files have changed.  Disable this
769 only when you know what you are doing.
771 The @code{postcode} option controls execution of per-package
772 postinstallation action code.  It is set by default, and again disabling
773 is not likely to be of interest except perhaps to developers.
775 The @code{docfiles} and @code{srcfiles} options control the installation of
776 their respective files of a package. By default both are enabled (1).
777 This can be disabled (set to 0) if disk space is (very) limited.
779 The options @code{autobackup} and @code{backupdir} determine the defaults for
780 the actions @code{update}, @code{backup} and @code{restore}.  These three actions
781 need a directory in which to read or write the backups.  If
782 @code{--backupdir} is not specified on the command line, the @code{backupdir}
783 option value is used (if set).
785 The @code{autobackup} option (de)activates automatic generation of backups.
786 Its value is an integer.  If the @code{autobackup} value is @code{-1}, no
787 backups are removed.  If @code{autobackup} is 0 or more, it specifies the
788 number of backups to keep.  Thus, backups are disabled if the value is
789 0.  In the @code{--clean} mode of the @code{backup} action this option also
790 specifies the number to be kept.
792 To setup @code{autobackup} to @code{-1} on the command line, use:
794 @verbatim
795   tlmgr option -- autobackup -1
796 @end verbatim
798 The @code{--} avoids having the @code{-1} treated as an option.  (@code{--} stops
799 parsing for options at the point where it appears; this is a general
800 feature across most Unix programs.)
802 The @code{sys_bin}, @code{sys_man}, and @code{sys_info} options are used on
803 Unix-like systems to control the generation of links for executables,
804 info files and man pages. See the @code{path} action for details.
806 The last three options control behaviour on Windows installations.  If
807 @code{desktop_integration} is set, then some packages will install items in
808 a sub-folder of the Start menu for @code{tlmgr gui}, documentation, etc.  If
809 @code{fileassocs} is set, Windows file associations are made (see also the
810 @code{postaction} action).  Finally, if @code{multiuser} is set, then adaptions
811 to the registry and the menus are done for all users on the system
812 instead of only the current user.  All three options are on by default.
814 @node tlmgr paper
815 @appendixsubsec paper
817 @table @asis
818 @item @strong{paper [a4|letter]}
819 @anchor{tlmgr @strong{paper [a4|letter]}}
821 @item @strong{@w{[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [@emph{papersize}|--list]}}
822 @anchor{tlmgr @strong{@w{[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [@emph{papersize}|--list]}}}
824 @end table
826 With no arguments (@code{tlmgr paper}), shows the default paper size setting
827 for all known programs.
829 With one argument (e.g., @code{tlmgr paper a4}), sets the default for all
830 known programs to that paper size.
832 With a program given as the first argument and no paper size specified
833 (e.g., @code{tlmgr dvips paper}), shows the default paper size for that
834 program.
836 With a program given as the first argument and a paper size as the last
837 argument (e.g., @code{tlmgr dvips paper a4}), set the default for that
838 program to that paper size.
840 With a program given as the first argument and @code{--list} given as the
841 last argument (e.g., @code{tlmgr dvips paper --list}), shows all valid paper
842 sizes for that program.  The first size shown is the default.
844 Incidentally, this syntax of having a specific program name before the
845 @code{paper} keyword is unusual.  It is inherited from the longstanding
846 @code{texconfig} script, which supports other configuration settings for
847 some programs, notably @code{dvips}.  @code{tlmgr} does not support those extra
848 settings.
850 @node tlmgr path [--w32mode=user|admin] [add|remove]
851 @appendixsubsec path [--w32mode=user|admin] [add|remove]
853 On Unix, merely adds or removes symlinks for binaries, man pages, and
854 info pages in the system directories specified by the respective options
855 (see the @ref{tlmgr option,, option} description above).  Does not change any
856 initialization files, either system or personal.
858 On Windows, the registry part where the binary directory is added or
859 removed is determined in the following way:
861 If the user has admin rights, and the option @code{--w32mode} is not given,
862 the setting @emph{w32_multi_user} determines the location (i.e., if it is
863 on then the system path, otherwise the user path is changed).
865 If the user has admin rights, and the option @code{--w32mode} is given, this
866 option determines the path to be adjusted.
868 If the user does not have admin rights, and the option @code{--w32mode}
869 is not given, and the setting @emph{w32_multi_user} is off, the user path
870 is changed, while if the setting @emph{w32_multi_user} is on, a warning is
871 issued that the caller does not have enough privileges.
873 If the user does not have admin rights, and the option @code{--w32mode}
874 is given, it must be @strong{user} and the user path will be adjusted. If a
875 user without admin rights uses the option @code{--w32mode admin} a warning
876 is issued that the caller does not have enough privileges.
878 @node tlmgr pinning
879 @appendixsubsec pinning
881 The @code{pinning} action manages the pinning file, see @ref{tlmgr Pinning,, Pinning} below.
883 @table @asis
884 @item @code{pinning show}
885 @anchor{tlmgr @code{pinning show}}
887 Shows the current pinning data.
889 @item @code{pinning add} @emph{repo} @emph{pkgglob}...
890 @anchor{tlmgr @code{pinning add} @emph{repo} @emph{pkgglob}...}
892 Pins the packages matching the @emph{pkgglob}(s) to the repository
893 @emph{repo}.
895 @item @code{pinning remove} @emph{repo} @emph{pkgglob}...
896 @anchor{tlmgr @code{pinning remove} @emph{repo} @emph{pkgglob}...}
898 Any packages recorded in the pinning file matching the <pkgglob>s for
899 the given repository @emph{repo} are removed.
901 @item @code{pinning remove @emph{repo} --all}
902 @anchor{tlmgr @code{pinning remove @emph{repo} --all}}
904 Remove all pinning data for repository @emph{repo}.
906 @end table
908 @node tlmgr platform list|add|remove @emph{platform}...
909 @appendixsubsec platform list|add|remove @emph{platform}...
911 @node tlmgr platform set @emph{platform}
912 @appendixsubsec platform set @emph{platform}
914 @node tlmgr platform set auto
915 @appendixsubsec platform set auto
917 @code{platform list} lists the TeX Live names of all the platforms
918 (a.k.a. architectures), (@code{i386-linux}, ...) available at the package
919 repository.
921 @code{platform add} @emph{platform}... adds the executables for each given platform
922 @emph{platform} to the installation from the repository.
924 @code{platform remove} @emph{platform}... removes the executables for each given 
925 platform @emph{platform} from the installation, but keeps the currently 
926 running platform in any case.
928 @code{platform set} @emph{platform} switches TeX Live to always use the given
929 platform instead of auto detection.
931 @code{platform set auto} switches TeX Live to auto detection mode for platform.
933 Platform detection is needed to select the proper @code{xz}, @code{xzdec} and 
934 @code{wget} binaries that are shipped with TeX Live.
936 @code{arch} is a synonym for @code{platform}.
938 Options:
940 @table @asis
941 @item @strong{--dry-run}
942 @anchor{tlmgr @strong{--dry-run} 2}
944 Nothing is actually installed; instead, the actions to be performed are
945 written to the terminal.
947 @end table
949 @node tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [@emph{pkg}]...
950 @appendixsubsec postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [@emph{pkg}]...
952 Carry out the postaction @code{shortcut}, @code{fileassoc}, or @code{script} given
953 as the second required argument in install or remove mode (which is the
954 first required argument), for either the packages given on the command
955 line, or for all if @code{--all} is given.
957 If the option @code{--w32mode} is given the value @code{user}, all actions will
958 only be carried out in the user-accessible parts of the
959 registry/filesystem, while the value @code{admin} selects the system-wide
960 parts of the registry for the file associations.  If you do not have
961 enough permissions, using @code{--w32mode=admin} will not succeed.
963 @code{--fileassocmode} specifies the action for file associations.  If it is
964 set to 1 (the default), only new associations are added; if it is set to
965 2, all associations are set to the TeX Live programs.  (See also
966 @code{option fileassocs}.)
968 @node tlmgr print-platform
969 @appendixsubsec print-platform
971 Print the TeX Live identifier for the detected platform
972 (hardware/operating system) combination to standard output, and exit.
973 @code{--print-arch} is a synonym.
975 @node tlmgr restore [--backupdir @emph{dir}] [--all | @emph{pkg} [@emph{rev}]]
976 @appendixsubsec restore [--backupdir @emph{dir}] [--all | @emph{pkg} [@emph{rev}]]
978 Restore a package from a previously-made backup.
980 If @code{--all} is given, try to restore the latest revision of all 
981 package backups found in the backup directory.
983 Otherwise, if neither @emph{pkg} nor @emph{rev} are given, list the available backup
984 revisions for all packages.
986 With @emph{pkg} given but no @emph{rev}, list all available backup revisions of
987 @emph{pkg}.
989 When listing available packages tlmgr shows the revision and in 
990 parenthesis the creation time if available (in format yyyy-mm-dd hh:mm).
992 With both @emph{pkg} and @emph{rev}, tries to restore the package from the
993 specified backup.
995 Options:
997 @table @asis
998 @item @strong{--all}
999 @anchor{tlmgr @strong{--all} 1}
1001 Try to restore the latest revision of all package backups found in the
1002 backup directory. Additional non-option arguments (like @emph{pkg}) are not
1003 allowed.
1005 @item @strong{--backupdir} @emph{directory}
1006 @anchor{tlmgr @strong{--backupdir} @emph{directory} 1}
1008 Specify the directory where the backups are to be found. If not given it
1009 will be taken from the configuration setting in the TLPDB.
1011 @item @strong{--dry-run}
1012 @anchor{tlmgr @strong{--dry-run} 3}
1014 Nothing is actually restored; instead, the actions to be performed are
1015 written to the terminal.
1017 @item @strong{--force}
1018 @anchor{tlmgr @strong{--force} 1}
1020 Don't ask questions.
1022 @end table
1024 @node tlmgr remove [@emph{option}]... @emph{pkg}...
1025 @appendixsubsec remove [@emph{option}]... @emph{pkg}...
1027 Remove each @emph{pkg} specified.  Removing a collection removes all package
1028 dependencies (unless @code{--no-depends} is specified), but not any
1029 collection dependencies of that collection.  However, when removing a
1030 package, dependencies are never removed.  Options:
1032 @table @asis
1033 @item @strong{--no-depends}
1034 @anchor{tlmgr @strong{--no-depends} 1}
1036 Do not remove dependent packages.
1038 @item @strong{--no-depends-at-all}
1039 @anchor{tlmgr @strong{--no-depends-at-all} 1}
1041 See above under @strong{install} (and beware).
1043 @item @strong{--force}
1044 @anchor{tlmgr @strong{--force} 2}
1046 By default, removal of a package or collection that is a dependency of
1047 another collection or scheme is not allowed.  With this option, the
1048 package will be removed unconditionally.  Use with care.
1050 A package that has been removed using the @code{--force} option because it
1051 is still listed in an installed collection or scheme will not be
1052 updated, and will be mentioned as @strong{forcibly removed} in the output of
1053 @strong{tlmgr update --list}.
1055 @item @strong{--dry-run}
1056 @anchor{tlmgr @strong{--dry-run} 4}
1058 Nothing is actually removed; instead, the actions to be performed are
1059 written to the terminal.
1061 @end table
1063 @node tlmgr repository
1064 @appendixsubsec repository
1066 @table @asis
1067 @item @strong{repository list}
1068 @anchor{tlmgr @strong{repository list}}
1070 @item @strong{repository list @emph{path|tag}}
1071 @anchor{tlmgr @strong{repository list @emph{path|tag}}}
1073 @item @strong{repository add @emph{path} [@emph{tag}]}
1074 @anchor{tlmgr @strong{repository add @emph{path} [@emph{tag}]}}
1076 @item @strong{repository remove @emph{path|tag}}
1077 @anchor{tlmgr @strong{repository remove @emph{path|tag}}}
1079 @item @strong{repository set @emph{path}[#@emph{tag}] [@emph{path}[#@emph{tag}] ...]}
1080 @anchor{tlmgr @strong{repository set @emph{path}[#@emph{tag}] [@emph{path}[#@emph{tag}] ...]}}
1082 This action manages the list of repositories.  See @ref{tlmgr MULTIPLE
1083 REPOSITORIES,, MULTIPLE
1084 REPOSITORIES} below for detailed explanations.
1086 The first form (@code{list}) lists all configured repositories and the
1087 respective tags if set. If a path, url, or tag is given after the
1088 @code{list} keyword, it is interpreted as source from where to 
1089 initialize a TeX Live Database and lists the contained packages.
1090 This can also be an up-to-now not used repository, both locally
1091 and remote. If one pass in addition @code{--with-platforms}, for each
1092 package the available platforms (if any) are listed, too.
1094 The third form (@code{add}) adds a repository
1095 (optionally attaching a tag) to the list of repositories.  The forth
1096 form (@code{remove}) removes a repository, either by full path/url, or by
1097 tag.  The last form (@code{set}) sets the list of repositories to the items
1098 given on the command line, not keeping previous settings
1100 In all cases, one of the repositories must be tagged as @code{main};
1101 otherwise, all operations will fail!
1103 @end table
1105 @node tlmgr search [@emph{option}...] @emph{what}
1106 @appendixsubsec search [@emph{option}...] @emph{what}
1108 @menu
1109 * tlmgr search [@emph{option}...] --file @emph{what}::
1110 * tlmgr search [@emph{option}...] --taxonomy @emph{what}::
1111 * tlmgr search [@emph{option}...] --keyword @emph{what}::
1112 * tlmgr search [@emph{option}...] --functionality @emph{what}::
1113 * tlmgr search [@emph{option}...] --characterization @emph{what}::
1114 * tlmgr search [@emph{option}...] --all @emph{what}::
1115 @end menu
1117 @node tlmgr search [@emph{option}...] --file @emph{what}
1118 @appendixsubsubsec search [@emph{option}...] --file @emph{what}
1120 @node tlmgr search [@emph{option}...] --taxonomy @emph{what}
1121 @appendixsubsubsec search [@emph{option}...] --taxonomy @emph{what}
1123 @node tlmgr search [@emph{option}...] --keyword @emph{what}
1124 @appendixsubsubsec search [@emph{option}...] --keyword @emph{what}
1126 @node tlmgr search [@emph{option}...] --functionality @emph{what}
1127 @appendixsubsubsec search [@emph{option}...] --functionality @emph{what}
1129 @node tlmgr search [@emph{option}...] --characterization @emph{what}
1130 @appendixsubsubsec search [@emph{option}...] --characterization @emph{what}
1132 @node tlmgr search [@emph{option}...] --all @emph{what}
1133 @appendixsubsubsec search [@emph{option}...] --all @emph{what}
1135 By default, search the names, short descriptions, and long descriptions
1136 of all locally installed packages for the argument @emph{what}, interpreted
1137 as a regular expression.
1139 Options:
1141 @table @asis
1142 @item @strong{--global}
1143 @anchor{tlmgr @strong{--global}}
1145 Search the TeX Live Database of the installation medium, instead of the
1146 local installation.
1148 @item @strong{--word}
1149 @anchor{tlmgr @strong{--word}}
1151 Restrict the search to match only full words. For example, searching for
1152 @code{table} with this option will not output packages containing the
1153 word @code{tables} (unless they also contain the word @code{table} on its own).
1155 @item @strong{--list}
1156 @anchor{tlmgr @strong{--list} 1}
1158 If a search for any (or all) taxonomies is done, by specifying one of
1159 the taxonomy options below, then instead of searching for packages, list
1160 the entire corresponding taxonomy (or all of them).  See
1161 @ref{tlmgr TAXONOMIES,, TAXONOMIES} below.
1163 @end table
1165 Other search options are selected by specifying one of the following:
1167 @table @asis
1168 @item @strong{--file}
1169 @anchor{tlmgr @strong{--file} 1}
1171 List all filenames containing @emph{what}.
1173 @item @strong{--taxonomy}
1174 @anchor{tlmgr @strong{--taxonomy} 1}
1176 @item @strong{--keyword}
1177 @anchor{tlmgr @strong{--keyword} 1}
1179 @item @strong{--functionality}
1180 @anchor{tlmgr @strong{--functionality} 1}
1182 @item @strong{--characterization}
1183 @anchor{tlmgr @strong{--characterization} 1}
1185 Search in the corresponding taxonomy (or all) instead of the package
1186 descriptions.  See @ref{tlmgr TAXONOMIES,, TAXONOMIES} below.
1188 @item @strong{--all}
1189 @anchor{tlmgr @strong{--all} 2}
1191 Search for package names, descriptions, and taxonomies, but not files.
1193 @end table
1195 @node tlmgr uninstall
1196 @appendixsubsec uninstall
1198 Uninstalls the entire TeX Live installation.  Options:
1200 @table @asis
1201 @item @strong{--force}
1202 @anchor{tlmgr @strong{--force} 3}
1204 Do not ask for confirmation, remove immediately.
1206 @end table
1208 @node tlmgr update [@emph{option}]... [@emph{pkg}]...
1209 @appendixsubsec update [@emph{option}]... [@emph{pkg}]...
1211 Updates the packages given as arguments to the latest version available
1212 at the installation source.  Either @code{--all} or at least one @emph{pkg} name
1213 must be specified.  Options:
1215 @table @asis
1216 @item @strong{--all}
1217 @anchor{tlmgr @strong{--all} 3}
1219 Update all installed packages except for @code{tlmgr} itself.  Thus, if
1220 updates to @code{tlmgr} itself are present, this will simply give an error,
1221 unless also the option @code{--force} or @code{--self} is given.  (See below.)
1223 In addition to updating the installed packages, during the update of a
1224 collection the local installation is (by default) synchronized to the
1225 status of the collection on the server, for both additions and removals.
1227 This means that if a package has been removed on the server (and thus
1228 has also been removed from the respective collection), @code{tlmgr} will
1229 remove the package in the local installation.  This is called
1230 ``auto-remove'' and is announced as such when using the option
1231 @code{--list}.  This auto-removal can be suppressed using the option
1232 @code{--no-auto-remove} (not recommended, see option description).
1234 Analogously, if a package has been added to a collection on the server
1235 that is also installed locally, it will be added to the local
1236 installation.  This is called ``auto-install'' and is announced as such
1237 when using the option @code{--list}.  This auto-installation can be
1238 suppressed using the option @code{--no-auto-install}.
1240 An exception to the collection dependency checks (including the
1241 auto-installation of packages just mentioned) are those that have been
1242 ``forcibly removed'' by you, that is, you called @code{tlmgr remove --force}
1243 on them.  (See the @code{remove} action documentation.)  To reinstall any
1244 such forcibly removed packages use @code{--reinstall-forcibly-removed}.
1246 If you want to exclude some packages from the current update run (e.g.,
1247 due to a slow link), see the @code{--exclude} option below.
1249 @item @strong{--self}
1250 @anchor{tlmgr @strong{--self}}
1252 Update @code{tlmgr} itself (that is, the infrastructure packages) if updates
1253 to it are present. On Windows this includes updates to the private Perl
1254 interpreter shipped inside TeX Live.
1256 If this option is given together with either @code{--all} or a list of
1257 packages, then @code{tlmgr} will be updated first and, if this update
1258 succeeds, the new version will be restarted to complete the rest of the
1259 updates.
1261 In short:
1263 @verbatim
1264   tlmgr update --self        # update infrastructure only
1265   tlmgr update --self --all  # update infrastructure and all packages
1266   tlmgr update --force --all # update all packages but *not* infrastructure
1267                              # ... this last at your own risk, not recommended!
1268 @end verbatim
1270 @item @strong{--dry-run}
1271 @anchor{tlmgr @strong{--dry-run} 5}
1273 Nothing is actually installed; instead, the actions to be performed are
1274 written to the terminal.  This is a more detailed report than @code{--list}.
1276 @item @strong{--list} [@emph{pkg}]
1277 @anchor{tlmgr @strong{--list} [@emph{pkg}]}
1279 Concisely list the packages which would be updated, newly installed, or
1280 removed, without actually changing anything. 
1281 If @code{--all} is also given, all available updates are listed.
1282 If @code{--self} is given, but not @code{--all}, only updates to the
1283 critical packages (tlmgr, texlive infrastructure, perl on Windows, etc.)
1284 are listed.
1285 If neither @code{--all} nor @code{--self} is given, and in addition no @emph{pkg} is
1286 given, then @code{--all} is assumed (thus, @code{tlmgr update --list} is the
1287 same as @code{tlmgr update --list --all}).
1288 If neither @code{--all} nor @code{--self} is given, but specific package names are
1289 given, those packages are checked for updates.
1291 @item @strong{--exclude} @emph{pkg}
1292 @anchor{tlmgr @strong{--exclude} @emph{pkg}}
1294 Exclude @emph{pkg} from the update process.  If this option is given more
1295 than once, its arguments accumulate.
1297 An argument @emph{pkg} excludes both the package @emph{pkg} itself and all
1298 its related platform-specific packages @emph{pkg.ARCH}.  For example,
1300 @verbatim
1301   tlmgr update --all --exclude a2ping
1302 @end verbatim
1304 will not update @code{a2ping}, @code{a2ping.i386-linux}, or
1305 any other @code{a2ping.}@emph{ARCH} package.
1307 If this option specifies a package that would otherwise be a candidate
1308 for auto-installation, auto-removal, or reinstallation of a forcibly
1309 removed package, @code{tlmgr} quits with an error message.  Excludes are not
1310 supported in these circumstances.
1312 @item @strong{--no-auto-remove} [@emph{pkg}]...
1313 @anchor{tlmgr @strong{--no-auto-remove} [@emph{pkg}]...}
1315 By default, @code{tlmgr} tries to remove packages which have disappeared on
1316 the server, as described above under @code{--all}.  This option prevents
1317 such removals, either for all packages (with @code{--all}), or for just the
1318 given @emph{pkg} names.  This can lead to an inconsistent TeX installation,
1319 since packages are not infrequently renamed or replaced by their
1320 authors.  Therefore this is not recommend.
1322 @item @strong{--no-auto-install} [@emph{pkg}]...
1323 @anchor{tlmgr @strong{--no-auto-install} [@emph{pkg}]...}
1325 Under normal circumstances @code{tlmgr} will install packages which are new
1326 on the server, as described above under @code{--all}.  This option prevents
1327 any such automatic installation, either for all packages (with
1328 @code{--all}), or the given @emph{pkg} names.
1330 Furthermore, after the @code{tlmgr} run using this has finished, the
1331 packages that would have been auto-installed @emph{will be considered as
1332 forcibly removed}.  So, if @code{foobar} is the only new package on the
1333 server, then
1335 @verbatim
1336   tlmgr update --all --no-auto-install
1337 @end verbatim
1339 is equivalent to
1341 @verbatim
1342   tlmgr update --all
1343   tlmgr remove --force foobar
1344 @end verbatim
1346 @item @strong{--reinstall-forcibly-removed}
1347 @anchor{tlmgr @strong{--reinstall-forcibly-removed}}
1349 Under normal circumstances @code{tlmgr} will not install packages that have
1350 been forcibly removed by the user; that is, removed with @code{remove
1351 --force}, or whose installation was prohibited by @code{--no-auto-install}
1352 during an earlier update.
1354 This option makes @code{tlmgr} ignore the forcible removals and re-install
1355 all such packages. This can be used to completely synchronize an
1356 installation with the server's idea of what is available:
1358 @verbatim
1359   tlmgr update --reinstall-forcibly-removed --all
1360 @end verbatim
1362 @item @strong{--backup} and @strong{--backupdir} @emph{directory}
1363 @anchor{tlmgr @strong{--backup} and @strong{--backupdir} @emph{directory}}
1365 These two options control the creation of backups of packages @emph{before}
1366 updating; that is, backup of packages as currently installed.  If
1367 neither of these options are given, no backup package will be saved. If
1368 @code{--backupdir} is given and specifies a writable directory then a backup
1369 will be made in that location. If only @code{--backup} is given, then a
1370 backup will be made to the directory previously set via the @code{option}
1371 action (see below). If both are given then a backup will be made to the
1372 specified @emph{directory}.
1374 You can set options via the @code{option} action to automatically create
1375 backups for all packages, and/or keep only a certain number of
1376 backups.  Please see the @code{option} action for details.
1378 @code{tlmgr} always makes a temporary backup when updating packages, in case
1379 of download or other failure during an update.  In contrast, the purpose
1380 of this @code{--backup} option is to allow you to save a persistent backup
1381 in case the actual @emph{content} of the update causes problems, e.g.,
1382 introduces an incompatibility.
1384 The @code{restore} action explains how to restore from a backup.
1386 @item @strong{--no-depends}
1387 @anchor{tlmgr @strong{--no-depends} 2}
1389 If you call for updating a package normally all depending packages
1390 will also be checked for updates and updated if necessary. This switch
1391 suppresses this behavior.
1393 @item @strong{--no-depends-at-all}
1394 @anchor{tlmgr @strong{--no-depends-at-all} 2}
1396 See above under @strong{install} (and beware).
1398 @item @strong{--force}
1399 @anchor{tlmgr @strong{--force} 4}
1401 Force update of normal packages, without updating @code{tlmgr} itself 
1402 (unless the @code{--self} option is also given).  Not recommended.
1404 Also, @code{update --list} is still performed regardless of this option.
1406 @end table
1408 If the package on the server is older than the package already installed
1409 (e.g., if the selected mirror is out of date), @code{tlmgr} does not
1410 downgrade.  Also, packages for uninstalled platforms are not installed.
1412 @node tlmgr USER MODE
1413 @appendixsec USER MODE
1415 @code{tlmgr} provides a restricted way, called ``user mode'', to manage
1416 arbitrary texmf trees in the same way as the main installation.  For
1417 example, this allows people without write permissions on the
1418 installation location to update/install packages into a tree of their
1419 own.
1421 @code{tlmgr} is switched into user mode with the command line option
1422 @code{--usermode}.  It does not switch automatically, nor is there any
1423 configuration file setting for it.  Thus, this option has to be
1424 explicitly given every time user mode is to be activated.
1426 This mode of @code{tlmgr} works on a user tree, by default the value of the
1427 @code{TEXMFHOME} variable.  This can be overridden with the command line
1428 option @code{--usertree}.  In the following when we speak of the user tree
1429 we mean either @code{TEXMFHOME} or the one given on the command line.
1431 Not all actions are allowed in user mode; @code{tlmgr} will warn you and not
1432 carry out any problematic actions.  Currently not supported (and
1433 probably will never be) is the @code{platform} action.  The @code{gui} action is
1434 currently not supported, but may be in a future release.
1436 Some @code{tlmgr} actions don't need any write permissions and thus work the
1437 same in user mode and normal mode.  Currently these are: @code{check},
1438 @code{help}, @code{list}, @code{print-platform}, @code{search}, @code{show}, @code{version}.
1440 On the other hand, most of the actions dealing with package management
1441 do need write permissions, and thus behave differently in user mode, as
1442 described below: @code{install}, @code{update}, @code{remove}, @code{option}, @code{paper},
1443 @code{generate}, @code{backup}, @code{restore}, @code{uninstall}, @code{symlinks}.
1445 Before using @code{tlmgr} in user mode, you have to set up the user tree
1446 with the @code{init-usertree} action.  This creates @emph{usertree}@code{/web2c} and
1447 @emph{usertree}@code{/tlpkg/tlpobj}, and a minimal
1448 @emph{usertree}@code{/tlpkg/texlive.tlpdb}.  At that point, you can tell
1449 @code{tlmgr} to do the (supported) actions by adding the @code{--usermode}
1450 command line option.
1452 In user mode the file @emph{usertree}@code{/tlpkg/texlive.tlpdb} contains only
1453 the packages that have been installed into the user tree using @code{tlmgr},
1454 plus additional options from the ``virtual'' package
1455 @code{00texlive.installation} (similar to the main installation's
1456 @code{texlive.tlpdb}).
1458 All actions on packages in user mode can only be carried out on packages
1459 that are known as @code{relocatable}.  This excludes all packages containing
1460 executables and a few other core packages.  Of the 2500 or so packages
1461 currently in TeX Live the vast majority are relocatable and can be
1462 installed into a user tree.
1464 Description of changes of actions in user mode:
1466 @menu
1467 * tlmgr user mode install::
1468 * tlmgr user mode backup; restore; remove; update::
1469 * tlmgr user mode generate; option; paper::
1470 @end menu
1472 @node tlmgr user mode install
1473 @appendixsubsec user mode install
1475 In user mode, the @code{install} action checks that the package and all
1476 dependencies are all either relocated or already installed in the system
1477 installation.  If this is the case, it unpacks all containers to be
1478 installed into the user tree (to repeat, that's either @code{TEXMFHOME} or
1479 the value of @code{--usertree}) and add the respective packages to the user
1480 tree's @code{texlive.tlpdb} (creating it if need be).
1482 Currently installing a collection in user mode installs all dependent
1483 packages, but in contrast to normal mode, does @emph{not} install dependent
1484 collections.  For example, in normal mode @code{tlmgr install
1485 collection-context} would install @code{collection-basic} and other
1486 collections, while in user mode, @emph{only} the packages mentioned in
1487 @code{collection-context} are installed.
1489 @node tlmgr user mode backup; restore; remove; update
1490 @appendixsubsec user mode backup; restore; remove; update
1492 In user mode, these actions check that all packages to be acted on are
1493 installed in the user tree before proceeding; otherwise, they behave
1494 just as in normal mode.
1496 @node tlmgr user mode generate; option; paper
1497 @appendixsubsec user mode generate; option; paper
1499 In user mode, these actions operate only on the user tree's
1500 configuration files and/or @code{texlive.tlpdb}.
1501 creates configuration files in user tree
1503 @node tlmgr CONFIGURATION FILE FOR TLMGR
1504 @appendixsec CONFIGURATION FILE FOR TLMGR
1506 A small subset of the command line options can be set in a config file
1507 for @code{tlmgr} which resides in @code{TEXMFCONFIG/tlmgr/config}.  By default, the
1508 config file is in @code{~/.texliveYYYY/texmf-config/tlmgr/config} (replacing
1509 @code{YYYY} with the year of your TeX Live installation). This is @emph{not}
1510 @code{TEXMFSYSVAR}, so that the file is specific to a single user.
1512 In this file, empty lines and lines starting with # are ignored.  All
1513 other lines must look like
1515 @verbatim
1516   key = value
1517 @end verbatim
1519 where the allowed keys are @code{gui-expertmode} (value 0 or 1),
1520 @code{persistent-downloads} (value 0 or 1), @code{auto-remove} (value 0 or 1),
1521 and @code{gui-lang} (value like in the command line option).
1523 @code{persistent-downloads}, @code{gui-lang}, and @code{auto-remove} correspond to
1524 the respective command line options of the same name.  @code{gui-expertmode}
1525 switches between the full GUI and a simplified GUI with only the
1526 important and mostly used settings.
1528 @node tlmgr TAXONOMIES
1529 @appendixsec TAXONOMIES
1531 tlmgr allows searching and listing of various categorizations, which we
1532 call @emph{taxonomies}, as provided by an enhanced TeX Catalogue (available
1533 for testing at @url{http://az.ctan.org}).  This is useful when, for
1534 example, you don't know a specific package name but have an idea of the
1535 functionality you need; or when you want to see all packages relating to
1536 a given area.
1538 There are three different taxonomies, specified by the following
1539 options:
1541 @table @asis
1542 @item @code{--keyword}
1543 @anchor{tlmgr @code{--keyword} 2}
1545 The keywords, as specified at @url{http://az.ctan.org/keyword}.
1547 @item @code{--functionality}
1548 @anchor{tlmgr @code{--functionality} 2}
1550 The ``by-topic'' categorization created by J\"urgen Fenn, as specified
1551 at @url{http://az.ctan.org/characterization/by-function}.
1553 @item @code{--characterization}
1554 @anchor{tlmgr @code{--characterization} 2}
1556 Both the primary and secondary functionalities, as specified at
1557 @url{http://az.ctan.org/characterization/choose_dimen}.
1559 @item @code{--taxonomy}
1560 @anchor{tlmgr @code{--taxonomy} 2}
1562 Operate on all the taxonomies.
1564 @end table
1566 The taxonomies are updated nightly and stored within TeX Live, so
1567 Internet access is not required to search them.
1569 Examples:
1571 @verbatim
1572   tlmgr search --taxonomy exercise      # check all taxonomies for "exercise"
1573   tlmgr search --taxonomy --word table  # check for "table" on its own
1574   tlmgr search --list --keyword         # dump entire keyword taxonomy
1575   tlmgr show --taxonomy pdftex          # show pdftex package information,
1576                                         #   including all taxonomy entries
1577 @end verbatim
1579 @node tlmgr MULTIPLE REPOSITORIES
1580 @appendixsec MULTIPLE REPOSITORIES
1582 The main TeX Live repository contains a vast array of packages.
1583 Nevertheless, additional local repositories can be useful to provide
1584 locally-installed resources, such as proprietary fonts and house styles.
1585 Also, alternative package repositories distribute packages that cannot
1586 or should not be included in TeX Live, for whatever reason.
1588 The simplest and most reliable method is to temporarily set the
1589 installation source to any repository (with the @code{-repository} or
1590 @code{option repository} command line options), and perform your operations.
1592 When you are using multiple repositories over a sustained time, however,
1593 explicitly switching between them becomes inconvenient.  Thus, it's
1594 possible to tell @code{tlmgr} about additional repositories you want to use.
1595 The basic command is @code{tlmgr repository add}.  The rest of this section
1596 explains further.
1598 When using multiple repositories, one of them has to be set as the main
1599 repository, which distributes most of the installed packages.  When you
1600 switch from a single repository installation to a multiple repository
1601 installation, the previous sole repository will be set as the main
1602 repository.
1604 By default, even if multiple repositories are configured, packages are
1605 @emph{still} @emph{only} installed from the main repository.  Thus, simply
1606 adding a second repository does not actually enable installation of
1607 anything from there.  You also have to specify which packages should be
1608 taken from the new repository, by specifying so-called ``pinning''
1609 rules, described next.
1611 @menu
1612 * tlmgr Pinning::
1613 @end menu
1615 @node tlmgr Pinning
1616 @appendixsubsec Pinning
1618 When a package @code{foo} is pinned to a repository, a package @code{foo} in any
1619 other repository, even if it has a higher revision number, will not be
1620 considered an installable candidate.
1622 As mentioned above, by default everything is pinned to the main
1623 repository.  Let's now go through an example of setting up a second
1624 repository and enabling updates of a package from it.
1626 First, check that we have support for multiple repositories, and have
1627 only one enabled (as is the case by default):
1629 @verbatim
1630  $ tlmgr repository list
1631  List of repositories (with tags if set):
1632    /var/www/norbert/tlnet
1633 @end verbatim
1635 Ok.  Let's add the @code{tlcontrib} repository (this is a real
1636 repository, hosted at @url{http://tlcontrib.metatex.org}, maintained by
1637 Taco Hoekwater et al.), with the tag @code{tlcontrib}:
1639 @verbatim
1640  $ tlmgr repository add http://tlcontrib.metatex.org/2012 tlcontrib
1641 @end verbatim
1643 Check the repository list again:
1645 @verbatim
1646  $ tlmgr repository list
1647  List of repositories (with tags if set):
1648     http://tlcontrib.metatex.org/2012 (tlcontrib)
1649     /var/www/norbert/tlnet (main)
1650 @end verbatim
1652 Now we specify a pinning entry to get the package @code{context} from
1653 @code{tlcontrib}:
1655 @verbatim
1656  $ tlmgr pinning add tlcontrib context
1657 @end verbatim
1659 Check that we can find @code{context}:
1661 @verbatim
1662  $ tlmgr show context
1663  tlmgr: package repositories:
1664  ...
1665  package:     context
1666  repository:  tlcontrib/26867
1667  ...
1668 @end verbatim
1670 - install @code{context}:
1672 @verbatim
1673  $ tlmgr install context
1674  tlmgr: package repositories:
1675  ...
1676  [1/1,  ??:??/??:??] install: context @tlcontrib [
1677 @end verbatim
1679 In the output here you can see that the @code{context} package has been
1680 installed from the @code{tlcontrib} repository (@code{@@tlcontrib}).
1682 Finally, @code{tlmgr pinning} also supports removing certain or all packages
1683 from a given repository:
1685 @verbatim
1686   $ tlmgr pinning remove tlcontrib context  # remove just context
1687   $ tlmgr pinning remove tlcontrib --all    # take nothing from tlcontrib
1688 @end verbatim
1690 A summary of the @code{tlmgr pinning} actions is given above.
1692 @node tlmgr GUI FOR TLMGR
1693 @appendixsec GUI FOR TLMGR
1695 The graphical user interface for @code{tlmgr} needs Perl/Tk to be installed.
1696 For Windows the necessary modules are shipped within TeX Live, for all
1697 other (i.e., Unix-based) systems Perl/Tk (as well as Perl of course) has
1698 to be installed.  @url{http://tug.org/texlive/distro.html#perltk} has a
1699 list of invocations for some distros.
1701 When started with @code{tlmgr gui} the graphical user interface will be
1702 shown.  The main window contains a menu bar, the main display, and a
1703 status area where messages normally shown on the console are displayed.
1705 Within the main display there are three main parts: the @code{Display
1706 configuration} area, the list of packages, and the action buttons.
1708 Also, at the top right the currently loaded repository is shown; this
1709 also acts as a button and when clicked will try to load the default
1710 repository.  To load a different repository, see the @code{tlmgr} menu item.
1712 Finally, the status area at the bottom of the window gives additional
1713 information about what is going on.
1715 @menu
1716 * tlmgr Main display::
1717 * tlmgr Menu bar::
1718 @end menu
1720 @node tlmgr Main display
1721 @appendixsubsec Main display
1723 @menu
1724 * tlmgr Display configuration area::
1725 * tlmgr Package list area::
1726 * tlmgr Main display action buttons::
1727 @end menu
1729 @node tlmgr Display configuration area
1730 @appendixsubsubsec Display configuration area
1732 The first part of the main display allows you to specify (filter) which
1733 packages are shown.  By default, all are shown.  Changes here are
1734 reflected right away.
1736 @table @asis
1737 @item Status
1738 @anchor{tlmgr Status}
1740 Select whether to show all packages (the default), only those installed,
1741 only those @emph{not} installed, or only those with update available.
1743 @item Category
1744 @anchor{tlmgr Category}
1746 Select which categories are shown: packages, collections, and/or
1747 schemes.  These are briefly explained in the @ref{tlmgr DESCRIPTION,, DESCRIPTION} section
1748 above.
1750 @item Match
1751 @anchor{tlmgr Match}
1753 Select packages matching for a specific pattern.  By default, this uses
1754 the same algorithm as @code{tlmgr search}, i.e., searches everything:
1755 descriptions, taxonomies, and/or filenames.  You can also select any
1756 subset for searching.
1758 @item Selection
1759 @anchor{tlmgr Selection}
1761 Select packages to those selected, those not selected, or all.  Here,
1762 ``selected'' means that the checkbox in the beginning of the line of a
1763 package is ticked.
1765 @item Display configuration buttons
1766 @anchor{tlmgr Display configuration buttons}
1768 To the right there are three buttons: select all packages, select none
1769 (a.k.a. deselect all), and reset all these filters to the defaults,
1770 i.e., show all available.
1772 @end table
1774 @node tlmgr Package list area
1775 @appendixsubsubsec Package list area
1777 The second are of the main display lists all installed packages.  If a
1778 repository is loaded, those that are available but not installed are
1779 also listed.
1781 Double clicking on a package line pops up an informational window with
1782 further details: the long description, included files, etc.
1784 Each line of the package list consists of the following items:
1786 @table @asis
1787 @item a checkbox
1788 @anchor{tlmgr a checkbox}
1790 Used to select particular packages; some of the action buttons (see
1791 below) work only on the selected packages.
1793 @item package name
1794 @anchor{tlmgr package name}
1796 The name (identifier) of the package as given in the database.
1798 @item local revision (and version)
1799 @anchor{tlmgr local revision (and version)}
1801 If the package is installed the TeX Live revision number for the
1802 installed package will be shown.  If there is a catalogue version given
1803 in the database for this package, it will be shown in parentheses.
1804 However, the catalogue version, unlike the TL revision, is not
1805 guaranteed to reflect what is actually installed.
1807 @item remote revision (and version)
1808 @anchor{tlmgr remote revision (and version)}
1810 If a repository has been loaded the revision of the package in the
1811 repository (if present) is shown.  As with the local column, if a
1812 catalogue version is provided it will be displayed.  And also as with
1813 the local column, the catalogue version may be stale.
1815 @item short description
1816 @anchor{tlmgr short description}
1818 The short description of the package.
1820 @end table
1822 @node tlmgr Main display action buttons
1823 @appendixsubsubsec Main display action buttons
1825 Below the list of packages are several buttons:
1827 @table @asis
1828 @item Update all installed
1829 @anchor{tlmgr Update all installed}
1831 This calls @code{tlmgr update --all}, i.e., tries to update all available
1832 packages.  Below this button is a toggle to allow reinstallation of
1833 previously removed packages as part of this action.
1835 The other four buttons only work on the selected packages, i.e., those
1836 where the checkbox at the beginning of the package line is ticked.
1838 @item Update
1839 @anchor{tlmgr Update}
1841 Update only the selected packages.
1843 @item Install
1844 @anchor{tlmgr Install}
1846 Install the selected packages; acts like @code{tlmgr install}, i.e., also
1847 installs dependencies.  Thus, installing a collection installs all its
1848 constituent packages.
1850 @item Remove
1851 @anchor{tlmgr Remove}
1853 Removes the selected packages; acts like @code{tlmgr remove}, i.e., it will
1854 also remove dependencies of collections (but not dependencies of normal
1855 packages).
1857 @item Backup
1858 @anchor{tlmgr Backup}
1860 Makes a backup of the selected packages; acts like @code{tlmgr backup}. This
1861 action needs the option @code{backupdir} set (see @code{Options -} General>).
1863 @end table
1865 @node tlmgr Menu bar
1866 @appendixsubsec Menu bar
1868 The following entries can be found in the menu bar:
1870 @table @asis
1871 @item @code{tlmgr} menu
1872 @anchor{tlmgr @code{tlmgr} menu}
1874 The items here load various repositories: the default as specified in
1875 the TeX Live database, the default network repository, the repository
1876 specified on the command line (if any), and an arbitrarily
1877 manually-entered one.  Also has the so-necessary @code{quit} operation.
1879 @item @code{Options menu}
1880 @anchor{tlmgr @code{Options menu}}
1882 Provides access to several groups of options: @code{Paper} (configuration of
1883 default paper sizes), @code{Platforms} (only on Unix, configuration of the
1884 supported/installed platforms), @code{GUI Language} (select language used in
1885 the GUI interface), and @code{General} (everything else).
1887 Several toggles are also here.  The first is @code{Expert options}, which is
1888 set by default.  If you turn this off, the next time you start the GUI a
1889 simplified screen will be shown that display only the most important
1890 functionality.  This setting is saved in the configuration file of
1891 @code{tlmgr}; see @ref{tlmgr CONFIGURATION FILE FOR TLMGR,, CONFIGURATION FILE FOR TLMGR} for details.
1893 The other toggles are all off by default: for debugging output, to
1894 disable the automatic installation of new packages, and to disable the
1895 automatic removal of packages deleted from the server.  Playing with the
1896 choices of what is or isn't installed may lead to an inconsistent TeX Live
1897 installation; e.g., when a package is renamed.
1899 @item @code{Actions menu}
1900 @anchor{tlmgr @code{Actions menu}}
1902 Provides access to several actions: update the filename database (aka
1903 @code{ls-R}, @code{mktexlsr}, @code{texhash}), rebuild all formats (@code{fmtutil-sys
1904 --all}), update the font map database (@code{updmap-sys}), restore from a backup
1905 of a package, and use of symbolic links in system directories (not on
1906 Windows).
1908 The final action is to remove the entire TeX Live installation (also not
1909 on Windows).
1911 @item @code{Help menu}
1912 @anchor{tlmgr @code{Help menu}}
1914 Provides access to the TeX Live manual (also on the web at
1915 @url{http://tug.org/texlive/doc.html}) and the usual ``About'' box.
1917 @end table
1919 @node tlmgr MACHINE-READABLE OUTPUT
1920 @appendixsec MACHINE-READABLE OUTPUT
1922 With the @code{--machine-readable} option, @code{tlmgr} writes to stdout in the
1923 fixed line-oriented format described here, and the usual informational
1924 messages for human consumption are written to stderr (normally they are
1925 written to stdout).  The idea is that a program can get all the
1926 information it needs by reading stdout.
1928 Currently this option only applies to the 
1929 @ref{tlmgr update [@emph{option}]... [@emph{pkg}]..., update, update},
1930 @ref{tlmgr install [@emph{option}]... @emph{pkg}..., install, install}, and
1931 @ref{tlmgr option,, option} actions.  
1933 @menu
1934 * tlmgr Machine-readable @code{update} and @code{install} output::
1935 * tlmgr Machine-readable @code{option} output::
1936 @end menu
1938 @node tlmgr Machine-readable @code{update} and @code{install} output
1939 @appendixsubsec Machine-readable @code{update} and @code{install} output
1941 The output format is as follows:
1943 @verbatim
1944   fieldname "\t" value
1945   ...
1946   "end-of-header"
1947   pkgname status localrev serverrev size runtime esttot
1948   ...
1949   "end-of-updates"
1950   other output from post actions, not in machine readable form
1951 @end verbatim
1953 The header section currently has two fields: @code{location-url} (the
1954 repository source from which updates are being drawn), and
1955 @code{total-bytes} (the total number of bytes to be downloaded).
1957 The @emph{localrev} and @emph{serverrev} fields for each package are the
1958 revision numbers in the local installation and server repository,
1959 respectively.  The @emph{size} field is the number of bytes to be
1960 downloaded, i.e., the size of the compressed tar file for a network
1961 installation, not the unpacked size. The runtime and esttot fields 
1962 are only present for updated and auto-install packages, and contain
1963 the currently passed time since start of installation/updates
1964 and the estimated total time.
1966 Line endings may be either LF or CRLF depending on the current platform.
1968 @table @asis
1969 @item @code{location-url} @emph{location}
1970 @anchor{tlmgr @code{location-url} @emph{location}}
1972 The @emph{location} may be a url (including @code{file:///foo/bar/...}), or a
1973 directory name (@code{/foo/bar}).  It is the package repository from which
1974 the new package information was drawn.
1976 @item @code{total-bytes} @emph{count}
1977 @anchor{tlmgr @code{total-bytes} @emph{count}}
1979 The @emph{count} is simply a decimal number, the sum of the sizes of all the
1980 packages that need updating or installing (which are listed subsequently).
1982 @end table
1984 Then comes a line with only the literal string @code{end-of-header}.
1986 Each following line until a line with literal string @code{end-of-updates}
1987 reports on one package.  The fields on
1988 each line are separated by a tab.  Here are the fields.
1990 @table @asis
1991 @item @emph{pkgname}
1992 @anchor{tlmgr @emph{pkgname}}
1994 The TeX Live package identifier, with a possible platform suffix for
1995 executables.  For instance, @code{pdftex} and @code{pdftex.i386-linux} are given
1996 as two separate packages, one on each line.
1998 @item @emph{status}
1999 @anchor{tlmgr @emph{status}}
2001 The status of the package update.  One character, as follows:
2003 @table @asis
2004 @item @code{d}
2005 @anchor{tlmgr @code{d}}
2007 The package was removed on the server.
2009 @item @code{f}
2010 @anchor{tlmgr @code{f}}
2012 The package was removed in the local installation, even though a
2013 collection depended on it.  (E.g., the user ran @code{tlmgr remove
2014 --force}.)
2016 @item @code{u}
2017 @anchor{tlmgr @code{u}}
2019 Normal update is needed.
2021 @item @code{r}
2022 @anchor{tlmgr @code{r}}
2024 Reversed non-update: the locally-installed version is newer than the
2025 version on the server.
2027 @item @code{a}
2028 @anchor{tlmgr @code{a}}
2030 Automatically-determined need for installation, the package is new on
2031 the server and is (most probably) part of an installed collection.
2033 @item @code{i}
2034 @anchor{tlmgr @code{i}}
2036 Package will be installed and isn't present in the local installation
2037 (action install).
2039 @item @code{I}
2040 @anchor{tlmgr @code{I}}
2042 Package is already present but will be reinstalled (action install).
2044 @end table
2046 @item @emph{localrev}
2047 @anchor{tlmgr @emph{localrev}}
2049 The revision number of the installed package, or @code{-} if it is not
2050 present locally.
2052 @item @emph{serverrev}
2053 @anchor{tlmgr @emph{serverrev}}
2055 The revision number of the package on the server, or @code{-} if it is not
2056 present on the server.
2058 @item @emph{size}
2059 @anchor{tlmgr @emph{size}}
2061 The size in bytes of the package on the server.  The sum of all the
2062 package sizes is given in the @code{total-bytes} header field mentioned above.
2064 @item @emph{runtime}
2065 @anchor{tlmgr @emph{runtime}}
2067 The run time since start of installations or updates.
2069 @item @emph{esttot}
2070 @anchor{tlmgr @emph{esttot}}
2072 The estimated total time.
2074 @end table
2076 @node tlmgr Machine-readable @code{option} output
2077 @appendixsubsec Machine-readable @code{option} output
2079 The output format is as follows:
2081 @verbatim
2082   key "\t" value
2083 @end verbatim
2085 If a value is not saved in the database the string @code{(not set)} is shown.
2087 If you are developing a program that uses this output, and find that
2088 changes would be helpful, do not hesitate to write the mailing list.
2090 @node tlmgr AUTHORS AND COPYRIGHT
2091 @appendixsec AUTHORS AND COPYRIGHT
2093 This script and its documentation were written for the TeX Live
2094 distribution (@url{http://tug.org/texlive}) and both are licensed under the
2095 GNU General Public License Version 2 or later.