diff options
author | Karl Berry <karl@freefriends.org> | 2018-04-10 17:01:25 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-04-10 17:01:25 +0000 |
commit | 03ceb06427ff4019680b054f9f08ce5c3923d063 (patch) | |
tree | d79d4a429493a50afe9977d247222d7426cdc40a /Build | |
parent | 584f1a0700fa73a35b7ad9bdcc84eb4792cd9278 (diff) |
tlbuild remake for 2018
git-svn-id: svn://tug.org/texlive/trunk@47432 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build')
-rw-r--r-- | Build/source/ChangeLog | 4 | ||||
-rw-r--r-- | Build/source/README | 3 | ||||
-rw-r--r-- | Build/source/README.2building | 104 | ||||
-rw-r--r-- | Build/source/README.4layout | 62 | ||||
-rw-r--r-- | Build/source/README.6coding (renamed from Build/source/README.7coding) | 6 | ||||
-rw-r--r-- | Build/source/README.6cross | 108 | ||||
-rw-r--r-- | Build/source/README.7continuous | 79 | ||||
-rw-r--r-- | Build/source/doc/ChangeLog | 9 | ||||
-rw-r--r-- | Build/source/doc/Makefile.am | 29 | ||||
-rw-r--r-- | Build/source/doc/Makefile.in | 28 | ||||
-rw-r--r-- | Build/source/doc/tlbuild-incl/install-tl.texi | 288 | ||||
-rw-r--r-- | Build/source/doc/tlbuild-incl/tlmgr.texi | 1188 | ||||
-rw-r--r-- | Build/source/doc/tlbuild.info | 2613 | ||||
-rw-r--r-- | Build/source/doc/tlbuild.texi | 317 |
14 files changed, 3022 insertions, 1816 deletions
diff --git a/Build/source/ChangeLog b/Build/source/ChangeLog index 075528bd65f..a4cd4fbf7ba 100644 --- a/Build/source/ChangeLog +++ b/Build/source/ChangeLog @@ -1,3 +1,7 @@ +2018-04-10 Karl Berry <karl@tug.org> + + * README.*: update from new tlbuild. + 2017-11-15 Karl Berry <karl@tug.org> * *.test: use #!/bin/sh -vx. Add diff --git a/Build/source/README b/Build/source/README index 16532727ae0..e7341f9ef60 100644 --- a/Build/source/README +++ b/Build/source/README @@ -31,6 +31,8 @@ aarch64-linux: gcc (Debian 6.3.0-18) 6.3.0 20170516 ./Build --enable-arm-neon=check +armhf-linux: + i386-netbsd, amd64-netbsd: gcc version 4.5.3 (NetBSD nb2 20110806) NetBSD/amd64 6.1.3 @@ -68,4 +70,3 @@ x86_64-linuxmusl: Alpine 3.1 Docker image with musl libc 1.1.5 Binaries are taken from the CI testing on travis-ci, see the source/.travis.yaml file for details on how to build. - diff --git a/Build/source/README.2building b/Build/source/README.2building index 12ddd9a9391..d19b92c2a8a 100644 --- a/Build/source/README.2building +++ b/Build/source/README.2building @@ -149,3 +149,107 @@ individual packages may use something different. You can explicitly specify the compilers to be used with the environment variables 'CC', 'CXX', and 'OBJCXX'. +4.6 Cross compilation +===================== + +In a cross compilation a "build" system is used to create binaries to be +executed on a "host" system with different hardware and/or operating +system. + + In simple cases, the build system can execute binaries for the host +system. This typically occurs for bi-arch systems where, e.g., +'i386-linux' binaries can run on 'x86_64-linux' systems and 'win32' +binaries can run on 'win64' systems. Although sometimes called "native +cross", technically this is not cross compilation at all. In most such +cases it suffices to specify suitable compiler flags. It might be +useful to add the configure option '--build=HOST' to get the correct +canonical host name, but note that this should _not_ be '--host=HOST' +(*note (autoconf)Hosts and Cross-Compilation::). + + In order to build, e.g., 32-bit binaries with 'clang' on a 64-bit +MacOSX system one could use: + + TL_BUILD_ENV="CC='clang -arch i386' \ + CXX='clang++ -arch i386' \ + OBJCXX='clang++ -arch i386'" \ + ./Build --build=i386-apple-darwin + +4.6.1 Cross configuring +----------------------- + +In a standard cross compilation, binaries for the host system cannot +execute on the build system and it is necessary to specify the configure +options '--host=HOST' and '--build=BUILD' with two different values. + + Building binaries requires suitable "cross" tools, e.g., compiler, +linker, and archiver, and perhaps a "cross" version of 'pkg-config' and +similar to locate host system libraries. Autoconf expects that these +cross tools are given by their usual variables or found under their +usual name prefixed with 'HOST-'. Here a list of such tools and +corresponding variables: + + ar AR + freetype-config FT2_CONFIG + g++ CXX + gcc CC + icu-config ICU_CONFIG + objdump OBJDUMP + pkg-config PKG_CONFIG + ranlib RANLIB + strip STRIP + +In order to, e.g., build 'mingw32' binaries on 'x86_64-linux' with a +cross compiler found as 'i386-pc-mingw32-gcc' one would specify + + --host=i386-pc-mingw32 --build=x86_64-linux-gnu + +or perhaps + + --host=mingw32 --build=x86_64-linux CC=i386-pc-mingw32-gcc + +but this latter, especially, might require adding 'CXX' and others. + + Configure arguments such as 'CFLAGS=...' refer to the cross compiler. +If necessary, you can specify compilers and flags for the few auxiliary +C and C++ programs required for the build process as configure arguments + + BUILDCC=... + BUILDCPPFLAGS=... + BUILDCFLAGS=... + BUILDCXX=... + BUILDCXXFLAGS=... + BUILDLDFLAGS=... + +4.6.2 Cross problems +-------------------- + +The fact that binaries for the host system cannot be executed on the +build system causes some problems. + + One problem is that configure tests using 'AC_RUN_IFELSE' can compile +and link the test program but cannot execute it. Such tests should be +avoided if possible and otherwise must supply a pessimistic test result. + + Another problem arises if the build process must execute some +(auxiliary or installable) programs. Auxiliary programs can be placed +into a subdirectory that is configured natively as is done for +'texk/web2c/web2c', 'texk/dvipsk/squeeze', and 'texk/xdvik/squeeze'. +The module 'libs/freetype2' uses the value of 'CC_BUILD', 'BUILD-gcc', +'gcc', or 'cc' as the compiler for the auxiliary program. + + The situation for installable programs needed by the build process is +somewhat different. A rather expensive possibility, chosen for the ICU +libraries in module 'libs/icu', is to first compile natively for the +build system and in a second step to use these (uninstalled) programs +during the cross compilation. + + This approach would also be possible for the tools such as 'tangle' +used in the module 'texk/web2c' to build the WEB programs, but that +would require first building a native 'kpathsea' library. To avoid this +complication, cross compilation of the WEB or CWEB programs requires +sufficiently recent installed versions of 'tangle', 'ctangle', +'otangle', and 'tie'. + + Building 'xindy' requires running the host system 'clisp' binary, +thus cross compilation is not possible. + diff --git a/Build/source/README.4layout b/Build/source/README.4layout index aa691532f51..11430677868 100644 --- a/Build/source/README.4layout +++ b/Build/source/README.4layout @@ -28,12 +28,12 @@ many extra hassles, so don't do that, tempting as it may be. Currently the versions we use are: autoconf (GNU Autoconf) 2.69 - automake (GNU automake) 1.15 + automake (GNU automake) 1.15.1 bison (GNU Bison) 3.0.4 flex 2.6.0 ltmain.sh (GNU libtool) 2.4.6 m4 (GNU M4) 1.4.18 - makeinfo (GNU texinfo) 6.1 + makeinfo (GNU texinfo) 6.5 These versions should be used to update the generated files (e.g., 'configure' or 'Makefile.in') in all or parts of the TL tree after their @@ -468,11 +468,10 @@ M4 list 'kpse_texk_pkgs' defined in 'm4/kpse-pkgs.m4'. the TeX-specific libraries and is included by adding its name 'PROG' to the M4 list 'kpse_utils_pkgs' in 'm4/kpse-pkgs.m4'. - In either case, apart from the program sources and build system -('configure.ac' and 'Makefile.am'), the subdirectory 'texk/PROG' or -'utils/PROG' must provide a fragment 'ac/withenable.ac' that contains -the M4 macro 'KPSE_ENABLE_PROG' defined in 'm4/kpse-setup.m4' with -'PROG' as the mandatory first argument and three optional arguments: + In either case, the subdirectory 'texk/PROG' or 'utils/PROG' must +provide a fragment 'ac/withenable.ac' that contains the M4 macro +'KPSE_ENABLE_PROG' defined in 'm4/kpse-setup.m4' with 'PROG' as the +mandatory first argument and three optional arguments: 1. a list of required libraries from the TL tree; @@ -481,13 +480,58 @@ the M4 macro 'KPSE_ENABLE_PROG' defined in 'm4/kpse-setup.m4' with compilation is not possible, 'x' if the program requires X11 libraries); - 3. and a comment added to the help text for the 'configure' option + 3. a comment added to the help text for the 'configure' option '--enable-PROG' or '--disable-PROG'. If the module requires specific configure options to be seen at the -top-level, they should be defined in an additional fragment 'ac/PROG.ac' +top level, they should be defined in an additional fragment 'ac/PROG.ac' included from 'ac/withenable.ac' and 'configure.ac'. + Usually, the new program is maintained somewhere outside of TeX Live. +In that case, we put the upstream sources into a subdirectory 'PROG-src' +(e.g., 'utils/newprog/newprog-src'). We do not run 'configure' in this +original '...-src' directory, only in our own directory, but we do +compile using the source files in '...-src'. + + So, these are the files that we must generally create: + +'ac/withenable.ac' + The 'KPSE_ENABLE_PROG' call just explained. + +'configure.ac' +'Makefile.am' + By merging the contents of the original 'configure.ac' (if + provided) and a comparable program already in TL. There is no magic + recipe, it's necessary to think about needs to be done in the + original vs. in TeX Live. + +'TLpatches/TL-Changes' + Actions taken after getting the original source tree; typically + removal of derived or unused common files. + +'TLpatches/patch-...' + If any changes are needed to the original sources, record the + patches here so they can be applied next time. And send them + upstream so that perhaps they won't have to be. + +'ChangeLog' + Record all TL-specific changes, now and in the future. + + Then, run GNU 'autoreconf' in the new directory (*note Build system +tools::). After that works, 'svn add' the necessary files, notably +'Makefile.in aclocal.m4 configure', and 'svn:ignore' the Automake cache +'autom4te.cache'. (This is so people checking out the TL source tree do +not have to run any autotools, but can simply run 'configure'.) + + Then, run the TL tool 'reautoconf' in the top-level TL 'source/' +directory, to incorporate the new program into the build tree. + + Then, run (and rerun) a build until the program compiles and tests +successfully, probably involving rerunning autoreconf in the source +directory, 'make' in the build directory, etc. + + After final success, don't forget to commit. + 6.6.2 Adding a new generic library module ----------------------------------------- diff --git a/Build/source/README.7coding b/Build/source/README.6coding index 8fd3ed0d2a4..a8abaa9c2d7 100644 --- a/Build/source/README.7coding +++ b/Build/source/README.6coding @@ -2,7 +2,7 @@ (Released under the old-style GNU documentation license; see sources or other output files for full text.) -9 Coding conventions +8 Coding conventions ******************** Ideally, building all of TeX Live with '--enable-compiler-warnings=max' @@ -14,7 +14,7 @@ rules about declarations of functions or variables and the use of the exception being code that is maintained independently and whose maintainers don't want to accept patches. -9.1 Declarations and definitions +8.1 Declarations and definitions ================================ C standards @@ -69,7 +69,7 @@ The declaration of global variables follows analogous rules: they are either declared 'static' if used in only one file or declared 'extern' in exactly one header and instantiated in exactly one file. -9.2 Const +8.2 Const ========= The 'const' feature of C is valuable, but easy to mis-use. diff --git a/Build/source/README.6cross b/Build/source/README.6cross deleted file mode 100644 index 51c37d04a1c..00000000000 --- a/Build/source/README.6cross +++ /dev/null @@ -1,108 +0,0 @@ -(This file was generated by makeinfo and splitinfo.gawk.) -(Released under the old-style GNU documentation license; - see sources or other output files for full text.) - -8 Cross compilation -******************* - -In a cross compilation a "build" system is used to create binaries to be -executed on a "host" system with different hardware and/or operating -system. - - In simple cases, the build system can execute binaries for the host -system. This typically occurs for bi-arch systems where, e.g., -'i386-linux' binaries can run on 'x86_64-linux' systems and 'win32' -binaries can run on 'win64' systems. Although sometimes called "native -cross", technically this is not cross compilation at all. In most such -cases it suffices to specify suitable compiler flags. It might be -useful to add the configure option '--build=HOST' to get the correct -canonical host name, but note that this should _not_ be '--host=HOST' -(*note (autoconf)Hosts and Cross-Compilation::). - - In order to build, e.g., 32-bit binaries with 'clang' on a 64-bit -MacOSX system one could use: - - TL_BUILD_ENV="CC='clang -arch i386' \ - CXX='clang++ -arch i386' \ - OBJCXX='clang++ -arch i386'" \ - ./Build --build=i386-apple-darwin - -8.1 Cross configuring -===================== - -In a standard cross compilation, binaries for the host system cannot -execute on the build system and it is necessary to specify the configure -options '--host=HOST' and '--build=BUILD' with two different values. - - Building binaries requires suitable "cross" tools, e.g., compiler, -linker, and archiver, and perhaps a "cross" version of 'pkg-config' and -similar to locate host system libraries. Autoconf expects that these -cross tools are given by their usual variables or found under their -usual name prefixed with 'HOST-'. Here a list of such tools and -corresponding variables: - - ar AR - freetype-config FT2_CONFIG - g++ CXX - gcc CC - icu-config ICU_CONFIG - objdump OBJDUMP - pkg-config PKG_CONFIG - ranlib RANLIB - strip STRIP - -In order to, e.g., build 'mingw32' binaries on 'x86_64-linux' with a -cross compiler found as 'i386-pc-mingw32-gcc' one would specify - - --host=i386-pc-mingw32 --build=x86_64-linux-gnu - -or perhaps - - --host=mingw32 --build=x86_64-linux CC=i386-pc-mingw32-gcc - -but this latter, especially, might require adding 'CXX' and others. - - Configure arguments such as 'CFLAGS=...' refer to the cross compiler. -If necessary, you can specify compilers and flags for the few auxiliary -C and C++ programs required for the build process as configure arguments - - BUILDCC=... - BUILDCPPFLAGS=... - BUILDCFLAGS=... - BUILDCXX=... - BUILDCXXFLAGS=... - BUILDLDFLAGS=... - -8.2 Cross problems -================== - -The fact that binaries for the host system cannot be executed on the -build system causes some problems. - - One problem is that configure tests using 'AC_RUN_IFELSE' can compile -and link the test program but cannot execute it. Such tests should be -avoided if possible and otherwise must supply a pessimistic test result. - - Another problem arises if the build process must execute some -(auxiliary or installable) programs. Auxiliary programs can be placed -into a subdirectory that is configured natively as is done for -'texk/web2c/web2c', 'texk/dvipsk/squeeze', and 'texk/xdvik/squeeze'. -The module 'libs/freetype2' uses the value of 'CC_BUILD', 'BUILD-gcc', -'gcc', or 'cc' as the compiler for the auxiliary program. - - The situation for installable programs needed by the build process is -somewhat different. A rather expensive possibility, chosen for the ICU -libraries in module 'libs/icu', is to first compile natively for the -build system and in a second step to use these (uninstalled) programs -during the cross compilation. - - This approach would also be possible for the tools such as 'tangle' -used in the module 'texk/web2c' to build the WEB programs, but that -would require first building a native 'kpathsea' library. To avoid this -complication, cross compilation of the WEB or CWEB programs requires -sufficiently recent installed versions of 'tangle', 'ctangle', -'otangle', and 'tie'. - - Building 'xindy' requires running the host system 'clisp' binary, -thus cross compilation is not possible. - diff --git a/Build/source/README.7continuous b/Build/source/README.7continuous new file mode 100644 index 00000000000..2558b814f35 --- /dev/null +++ b/Build/source/README.7continuous @@ -0,0 +1,79 @@ +(This file was generated by makeinfo and splitinfo.gawk.) +(Released under the old-style GNU documentation license; + see sources or other output files for full text.) + +9 Continuous integration +************************ + +Overview: the sources of TeX Live are subjected to continuous +integration testing on Travis-CI +(<https://travis-ci.org/TeX-Live/texlive-source>) via a git-svn mirror +of the sources that is pushed to Github +(<https://github.com/TeX-Live/texlive-source>). The git-svn mirror is +updated (currently) at 30 minute intervals, and only the last commit +pushed is tested on Travis-CI. + +9.1 Transfer from Subversion to Github +====================================== + +git-svn (<https://git-scm.com/docs/git-svn>) is used to check out the +subtree 'Build/source' of the Subversion repository. The author index +file used is not maintained in either Git or Subversion but can be +provided on request. + + The initial checkout was done by invoking + git svn --authors-file usermap clone svn://USER@tug.org/texlive/trunk/Build/source + +where the 'usermap' file maps Subversion user names to name and emails +of the authors. If no user account at <tug.org> is available, anonymous +checkout is possible, too: + git svn --authors-file usermap clone svn://tug.org/texlive/trunk/Build/source + + In the following, we will use _admin_ to refer to a user who has +read/write access to the TeX Live subversion repository, and is also an +administrator of the 'TeX-Live' Team on Github. The above initial +checkout has been carried out by _admin_ on the server 'texlive.info'. + + On Github (<https://github.com>), a new git repository named +'texlive-source' was created by _admin_ within the 'TeX-Live' +"organization" (<https://github.com/TeX-Live>). The remote was added to +the checkout with 'git remote add origin +git@github.com:TeX-Live/texlive-source.git'. + + To automate the update on Github, a new ssh key was generated and +added to the 'texlive-source' repository on Github as deployment key. +This way pushes using this key can only go to the 'texlive-source' +repository and not anywhere else. + + The usage of 'git-svn' requires a strict discipline to keep a linear +history in the master branch. Since we are aiming at a pure mirror +facility, we have decided to further restrict the 'master' branch of the +'texlive-source' repository on Github to changes by _admin_. + + This setup allows other developers to branch off 'master' and push +their branches to the Github repository, but all updates need to come +from the local 'master' (not the one on Github) to Subversion, back to +'master' on 'texlive.info', and from there to Github. + +9.2 Automatic update of the Git mirror +====================================== + +_admin_ has installed a cron job on 'texlive.info' running every 30 +minute which essentially runs 'git svn rebase' and 'git push' in the +'master' branch of the checkout. The first command fetches the changes +from the Subversion repository and updates the 'master' branch with +them, the second one pushes changes (if available) to Github. + +9.3 CI testing on Travis-CI +=========================== + +The 'source' tree of TeX Live contains a top-level file '.travis.yml' +which controls the automatic testing on Travis-CI. _admin_ has +registered to Travis-CI and allowed access to the Github's 'TeX-Live' +organization's 'texlive-source' repository. The default settings are to +build the last commit of each push. No further action is necessary on +Travis-CI. + + If changes have been pushed via the cron job above, Travis-CI will +automatically checkout the last pushed commit and try building it. + diff --git a/Build/source/doc/ChangeLog b/Build/source/doc/ChangeLog index e02191522e6..1f529124814 100644 --- a/Build/source/doc/ChangeLog +++ b/Build/source/doc/ChangeLog @@ -1,3 +1,12 @@ +2018-04-10 Karl Berry <karl@tug.org> + + * tlbuild.texi (Cross compilation): move to under Building. + (Continuous integration): restrucuture. + + * Makefile.am (*_node_{good,bad}): update for current pod doc. + ($(mydoc)-incl.texi): hint to symlink scripts for pod2texi. + + 2018-02-20 Karl Berry <karl@freefriends.org> * tlbuild.texi (Continuous integration): Texinfo syntax, wording. diff --git a/Build/source/doc/Makefile.am b/Build/source/doc/Makefile.am index a9caaf8b59b..d968fb66dcf 100644 --- a/Build/source/doc/Makefile.am +++ b/Build/source/doc/Makefile.am @@ -1,5 +1,6 @@ ## Makefile.am for the TeX Live subdirectory ./doc/ ## +## Copyright 2015-2018 Karl Berry <tex-live@tug.org> ## Copyright 2013-2015 Peter Breitenlohner <tex-live@tug.org> ## You may freely use, modify and/or distribute this file. ## @@ -53,27 +54,35 @@ pod2texi_args = \ # The \@... in the replacements are escaping the @ in a Perl # double-quote context, i.e., not an array. # -update_node_bad = ref{tlmgr update [option]... [pkg]..., -update_node_bad2 = ref{tlmgr update, -update_node_good = ref{tlmgr update [\@emph{option}]... [\@emph{pkg}]..., +update_node_bad = ref{tlmgr update [option...] [pkg...], +update_node_good = ref{tlmgr update [\@emph{option}...] [\@emph{pkg}...], # -restore_node_bad = ref{tlmgr restore, -restore_node_good = ref{tlmgr restore [--backupdir \@emph{dir}] [--all | \@emph{pkg} [\@emph{rev}]], +update_node_bad2 = [option...] [pkg...], update +update_node_good2 = [\@emph{option}...] [@emph{pkg}...], update # -install_node_bad = ref{tlmgr install [option]... pkg..., -install_node_good = ref{tlmgr install [\@emph{option}]... \@emph{pkg}..., +remove_node_bad = ref{tlmgr remove [option...] pkg..., +remove_node_good = ref{tlmgr remove [\@emph{option}...] \@emph{pkg}..., +# +install_node_bad = ref{tlmgr install [option...] pkg..., +install_node_good = ref{tlmgr install [\@emph{option}...] \@emph{pkg}..., # we don't actually use the (autogenerated) -incl.texi file, -# but it makes for a convenient target. Copy the scripts into the build dir. +# but it makes for a convenient target. +# +# First make symlinks in build dir: +# ln -s .../tlmgr.pl .../Build/source/Work/doc +# ln -s .../install-tl .../Build/source/Work/doc $(mydoc)-incl.texi: install-tl tlmgr.pl $(pod2texi) -o $@ --subdir=$(mydoc)-incl $(pod2texi_args) $^ cp $(mydoc)-incl/tlmgr.texi $(mydoc)-incl/tlmgr.texi.orig perl -pi \ -e 's/\Q$(update_node_bad)\E/$(update_node_good)/' \ - -e ';s/\Q$(update_node_bad2)\E/$(update_node_good),/' \ + -e ';s/\Q$(update_node_bad2)\E/$(update_node_good2),/' \ -e ';' \ - -e 's/\Q$(restore_node_bad)\E/$(restore_node_good)/' \ + -e 's/\Q$(remove_node_bad)\E/$(remove_node_good)/' \ -e ';' \ -e 's/\Q$(install_node_bad)\E/$(install_node_good)/' \ $(mydoc)-incl/tlmgr.texi + cp $(mydoc)-incl/tlmgr.texi $(srcdir)/$(mydoc)-incl/ + cp $(mydoc)-incl/install-tl.texi $(srcdir)/$(mydoc)-incl/ .PHONY: $(mydoc)-incl.texi diff --git a/Build/source/doc/Makefile.in b/Build/source/doc/Makefile.in index 5ebf66f3804..ea694a763db 100644 --- a/Build/source/doc/Makefile.in +++ b/Build/source/doc/Makefile.in @@ -485,15 +485,17 @@ pod2texi_args = \ # The \@... in the replacements are escaping the @ in a Perl # double-quote context, i.e., not an array. # -update_node_bad = ref{tlmgr update [option]... [pkg]..., -update_node_bad2 = ref{tlmgr update, -update_node_good = ref{tlmgr update [\@emph{option}]... [\@emph{pkg}]..., +update_node_bad = ref{tlmgr update [option...] [pkg...], +update_node_good = ref{tlmgr update [\@emph{option}...] [\@emph{pkg}...], # -restore_node_bad = ref{tlmgr restore, -restore_node_good = ref{tlmgr restore [--backupdir \@emph{dir}] [--all | \@emph{pkg} [\@emph{rev}]], +update_node_bad2 = [option...] [pkg...], update +update_node_good2 = [\@emph{option}...] [@emph{pkg}...], update # -install_node_bad = ref{tlmgr install [option]... pkg..., -install_node_good = ref{tlmgr install [\@emph{option}]... \@emph{pkg}..., +remove_node_bad = ref{tlmgr remove [option...] pkg..., +remove_node_good = ref{tlmgr remove [\@emph{option}...] \@emph{pkg}..., +# +install_node_bad = ref{tlmgr install [option...] pkg..., +install_node_good = ref{tlmgr install [\@emph{option}...] \@emph{pkg}..., all: all-am .SUFFIXES: @@ -947,18 +949,24 @@ readme-install: readme-files .PHONY: readme-files readme-install # we don't actually use the (autogenerated) -incl.texi file, -# but it makes for a convenient target. Copy the scripts into the build dir. +# but it makes for a convenient target. +# +# First make symlinks in build dir: +# ln -s .../tlmgr.pl .../Build/source/Work/doc +# ln -s .../install-tl .../Build/source/Work/doc $(mydoc)-incl.texi: install-tl tlmgr.pl $(pod2texi) -o $@ --subdir=$(mydoc)-incl $(pod2texi_args) $^ cp $(mydoc)-incl/tlmgr.texi $(mydoc)-incl/tlmgr.texi.orig perl -pi \ -e 's/\Q$(update_node_bad)\E/$(update_node_good)/' \ - -e ';s/\Q$(update_node_bad2)\E/$(update_node_good),/' \ + -e ';s/\Q$(update_node_bad2)\E/$(update_node_good2),/' \ -e ';' \ - -e 's/\Q$(restore_node_bad)\E/$(restore_node_good)/' \ + -e 's/\Q$(remove_node_bad)\E/$(remove_node_good)/' \ -e ';' \ -e 's/\Q$(install_node_bad)\E/$(install_node_good)/' \ $(mydoc)-incl/tlmgr.texi + cp $(mydoc)-incl/tlmgr.texi $(srcdir)/$(mydoc)-incl/ + cp $(mydoc)-incl/install-tl.texi $(srcdir)/$(mydoc)-incl/ .PHONY: $(mydoc)-incl.texi # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/Build/source/doc/tlbuild-incl/install-tl.texi b/Build/source/doc/tlbuild-incl/install-tl.texi index 339359faee7..87e52552a29 100644 --- a/Build/source/doc/tlbuild-incl/install-tl.texi +++ b/Build/source/doc/tlbuild-incl/install-tl.texi @@ -7,6 +7,7 @@ * install-tl DESCRIPTION:: * install-tl REFERENCES:: * install-tl OPTIONS:: +* install-tl PROFILES:: * install-tl ENVIRONMENT VARIABLES:: * install-tl AUTHORS AND COPYRIGHT:: @end menu @@ -21,28 +22,31 @@ install-tl - TeX Live cross-platform installer install-tl [@emph{option}]... -install-tl.bat [@emph{option}]... +install-tl-windows.bat [@emph{option}]... + +install-tl-advanced.bat [@emph{option}]... @node install-tl DESCRIPTION @appendixsec DESCRIPTION This installer creates a runnable TeX Live installation from various -media, including over the network. The installer works across all -platforms supported by TeX Live. For information on initially -downloading the TeX Live, see @url{http://tug.org/texlive/acquire.html}. +media, including over the network, from local hard disk, a DVD, etc. +The installer works across all platforms supported by TeX Live. For +information on initially downloading the TeX Live, see +@url{http://tug.org/texlive/acquire.html}. -The basic idea of TeX Live installation is to choose one of the +The basic idea of TeX Live installation is for you to choose one of the top-level @emph{schemes}, each of which is defined as a different set of @emph{collections} and @emph{packages}, where a collection is a set of packages, and a package is what contains actual files. Within the installer, you can choose a scheme, and further customize the -set of collections to install, but not the set of the packages. To do -that, use @code{tlmgr} (reference below) after the initial installation is -completely. +set of collections to install, but not the set of the packages. To work +at the package level, use @code{tlmgr} (reference just below) after the +initial installation is complete. -The default is @code{scheme-full}, to install everything, and this is highly -recommended. +The default is @code{scheme-full}, which installs everything, and this is +highly recommended. @node install-tl REFERENCES @appendixsec REFERENCES @@ -51,8 +55,8 @@ Post-installation configuration, package updates, and much more, are handled through @strong{tlmgr}(1), the TeX Live Manager (@url{http://tug.org/texlive/tlmgr.html}). -The most up-to-date version of this documentation is on the Internet at -@url{http://tug.org/texlive/doc/install-tl.html}. +The most up-to-date version of this installer documentation is on the +Internet at @url{http://tug.org/texlive/doc/install-tl.html}. For the full documentation of TeX Live, see @url{http://tug.org/texlive/doc}. @@ -68,7 +72,7 @@ option by either a space or @code{=}. @item @strong{-gui} [[=]@emph{module}] @anchor{install-tl @strong{-gui} [[=]@emph{module}]} -If no @emph{module} is given starts the @code{perltk} (see below) GUI installer. +If no @emph{module} is given, starts the @code{perltk} (see below) GUI installer. If @emph{module} is given loads the given installer module. Currently the following modules are supported: @@ -94,8 +98,8 @@ Can also be invoked on Windows by running @code{install-tl-advanced.bat}. @end table -The @code{perltk} and @code{wizard} modules, and thus also when calling with a -bare @code{-gui} (without @emph{module}), requires the Perl/Tk module +The @code{perltk} and @code{wizard} modules, and thus also when calling with +bare @code{-gui} (with no @emph{module}), require the Perl/Tk module (@url{http://tug.org/texlive/distro.html#perltk}); if Perl/Tk is not available, installation continues in text mode. @@ -122,8 +126,9 @@ simplified Chinese (zh_CN), and traditional Chinese (zh_TW). Specify the package repository to be used as the source of the installation, either a local directory via @code{/path/to/directory} or a -@code{file:/} url, or a network location via a @code{http://} or @code{ftp://} url. -(No other protocols are supported.) +@code{file:/} url, or a network location via a @code{http://}, @code{https://}, or +@code{ftp://} url. (No other protocols are supported, and @code{https://} may +not work on all platforms.) The default is to pick a mirror automatically, using @url{http://mirror.ctan.org/systems/texlive/tlnet}; the chosen mirror is @@ -139,7 +144,7 @@ you could choose a particular CTAN mirror with something like this: -repository http://ctan.example.org/its/ctan/dir/systems/texlive/tlnet @end verbatim -Of course a real hostname and its particular top-level CTAN path +Of course a real hostname and its particular top-level CTAN directory have to be specified. The list of CTAN mirrors is available at @url{http://ctan.org/mirrors}. @@ -175,9 +180,9 @@ choose a good host for you. @anchor{install-tl @strong{-all-options}} Normally options not relevant to the current platform are not shown -(i.e., when running on Unix, Windows-specific options are omitted). -Giving this command line option allows configuring settings in the -final @code{texlive.tlpdb} that do not have any immediate effect. +(e.g., when running on Unix, Windows-specific options are omitted). +Giving this command line option allows configuring such "foreign" +settings. @item @strong{-custom-bin} @emph{path} @anchor{install-tl @strong{-custom-bin} @emph{path}} @@ -189,8 +194,12 @@ the current system are present. The installation will continue as usual, but at the end all files from @emph{path} are copied over to @code{bin/custom/} under your installation directory and this @code{bin/custom/} directory is what will be added to the path for the post-install -actions. (By the way, for information on building TeX Live, see -@url{http://tug.org/texlive/build.html}). +actions. To install multiple custom binary sets, manully rename +@code{custom} before doing each. + +For more information on custom binaries, see +@url{http://tug.org/texlive/custom-bin.html}. For general information on +building TeX Live, see @url{http://tug.org/texlive/build.html}. @item @strong{-debug-translation} @anchor{install-tl @strong{-debug-translation}} @@ -209,7 +218,7 @@ runnable, or installation will fail. @code{-force-arch} is a synonym. @item @strong{-help}, @strong{--help}, @strong{-?} @anchor{install-tl @strong{-help}@comma{} @strong{--help}@comma{} @strong{-?}} -Display this help and exit (on the web via +Display this help and exit. (This help is on the web at @url{http://tug.org/texlive/doc/install-tl.html}). Sometimes the @code{perldoc} and/or @code{PAGER} programs on the system have problems, possibly resulting in control characters being literally output. This @@ -227,6 +236,13 @@ manually, and that the only realistic way to maintain this installation is to redo it from time to time. This option is not available via the installer interfaces. USE AT YOUR OWN RISK. +@item @strong{-init-from-profile} @emph{profile_file} +@anchor{install-tl @strong{-init-from-profile} @emph{profile_file}} + +Similar to @strong{-profile} (see @ref{install-tl PROFILES,, PROFILES} below), but only initializes the +installation configuration from @emph{profile_file} and then starts the +interactive session. + @item @strong{-logfile} @emph{file} @anchor{install-tl @strong{-logfile} @emph{file}} @@ -241,7 +257,7 @@ release. @item @strong{-no-cls} @anchor{install-tl @strong{-no-cls}} -(only for text mode installer) do not clear the screen when entering +For the text mode installer only: do not clear the screen when entering a new menu (for debugging purposes). @item @strong{-non-admin} @@ -249,11 +265,11 @@ a new menu (for debugging purposes). For Windows only: configure for the current user, not for all users. -@item @strong{--persistent-downloads} -@anchor{install-tl @strong{--persistent-downloads}} +@item @strong{-persistent-downloads} +@anchor{install-tl @strong{-persistent-downloads}} -@item @strong{--no-persistent-downloads} -@anchor{install-tl @strong{--no-persistent-downloads}} +@item @strong{-no-persistent-downloads} +@anchor{install-tl @strong{-no-persistent-downloads}} For network installs, activating this option makes the installer try to set up a persistent connection using the @code{Net::LWP} Perl module. This @@ -263,7 +279,16 @@ package, which typically yields a significant speed-up. This option is turned on by default, and the installation program will fall back to using @code{wget} if this is not possible. To disable usage of -LWP and persistent connections, use @code{--no-persistent-downloads}. +LWP and persistent connections, use @code{-no-persistent-downloads}. + +@item @strong{-no-verify-downloads} +@anchor{install-tl @strong{-no-verify-downloads}} + +By default, if a GnuPG @code{gpg} binary is found in PATH, downloads are +verified against a cryptographic signature. This option disables such +verification. The full description is in the Crytographic Verification +section of the @code{tlmgr} documentation, e.g., +@url{http://tug.org/texlive/doc/tlmgr.html#CRYPTOGRAPHIC-VERIFICATION} @item @strong{-portable} @anchor{install-tl @strong{-portable}} @@ -278,34 +303,11 @@ Print the TeX Live identifier for the detected platform (hardware/operating system) combination to standard output, and exit. @code{-print-arch} is a synonym. -@item @strong{-profile} @emph{profile} -@anchor{install-tl @strong{-profile} @emph{profile}} - -Load the file @emph{profile} and do the installation with no user -interaction, that is, a batch (unattended) install. +@item @strong{-profile} @emph{profile_file} +@anchor{install-tl @strong{-profile} @emph{profile_file}} -A @emph{profile} file contains all the values needed to perform an -installation. After a normal installation has finished, a profile for -that exact installation is written to the file -DEST/tlpkg/texlive.profile. That file can be given as the argument to -@code{-profile} to redo the exact same installation on a different system, -for example. Alternatively, you can use a custom profile, most easily -created by starting from a generated one and changing values, or an -empty file, which will take all the defaults. - -Normally a profile has to specify the value @code{1} for each collection to -be installed, even if the scheme is specified. This follows from the -logic of the installer in that you can first select a scheme and then -change the collections being installed. But for convenience there is an -exception to this within profiles: If the profile contains a variable -for @code{selected_scheme} and @emph{no} collection variables at all are defined -in the profile, then the collections which the specified scheme requires -are installed. - -Thus, a line @code{selected_scheme scheme-medium} together with the -definitions of the installation directories (@code{TEXDIR}, @code{TEXMFHOME}, -@code{TEXMFLOCAL}, @code{TEXMFSYSCONFIG}, @code{TEXMFSYSVAR}) suffices to install -the medium scheme with all default options. +Load @emph{profile_file} and do the installation with no user interaction, +that is, a batch (unattended) install. See @ref{install-tl PROFILES,, PROFILES} below. @item @strong{-q} @anchor{install-tl @strong{-q}} @@ -326,8 +328,8 @@ menu list. @item @strong{-v} @anchor{install-tl @strong{-v}} -Include verbose debugging messages; repeat for maximum debugging, as in -@code{-v -v}. (Further repeats are accepted but ignored.) +Include verbose debugging messages; repeat for maximum debugging: @code{-v +-v}. (Further repeats are accepted but ignored.) @item @strong{-version}, @strong{--version} @anchor{install-tl @strong{-version}@comma{} @strong{--version}} @@ -337,11 +339,154 @@ revisions of the used modules are reported, too. @end table +@node install-tl PROFILES +@appendixsec PROFILES + +A @emph{profile} file contains all the values needed to perform an +installation. After a normal installation has finished, a profile for +that exact installation is written to the file @code{tlpkg/texlive.profile}. +In addition, from the text menu one can select @code{P} to save the current +setup as a profile at any time. Such a profile file can be given as the +argument to @code{-profile}, for example to redo the exact same installation +on a different system. Alternatively, you can use a custom profile, +most easily created by starting from a generated one and changing +values, or an empty file, which will take all the defaults. + +Within a profile file, each line consists of + +@emph{variable} [@emph{value}] + +except for comment lines starting with @code{#}. The possible variable +names are listed below. Values, when present, are either @code{0} or @code{1} +for booleans, or strings (which must be specified without any quote +characters). Leading whitespace is ignored. + +If the variable @code{selected_scheme} is defined and @emph{no} collection +variables at all are defined, then the collections required by the +specified scheme (which might change over time) are installed, without +explicitly listing them. This eases maintenance of profile files. If +any collections are specified in a profile, though, then all desired +collections must be given explicitly. + +For example, a line + +@verbatim + selected_scheme scheme-small +@end verbatim + +along with definitions for the installation directories (given below +under "path options") suffices to install the "small" scheme with all +default options. The schemes are described in the @code{S} menu in the +text installer, or equivalent. + +Besides @code{selected_scheme}, here is the list of variable names supported +in a profile: + +@strong{collection options} (prefix @code{collection-}) + +Collections are specified with a variable name with the prefix +@code{collection-} followed by a collection name; there is no value. For +instance, @code{collection-basic}. The collections are described in the +@code{C} menu. + +Schemes and collections (and packages) are ultimately defined by the +files in the @code{tlpkg/tlpsrc/} source directory. + +@strong{path options} + +It is best to define all of these, even though they may not be used in +the installation, so as to avoid unintentionally getting a default value +that could cause problems later. + +@verbatim + TEXDIR + TEXMFCONFIG + TEXMFVAR + TEXMFHOME + TEXMFLOCAL + TEXMFSYSCONFIG + TEXMFSYSVAR +@end verbatim + +@strong{installer options} (prefix @code{instopt_}) + +@table @asis +@item @code{instopt_adjustpath} (default 0 on Unix, 1 on Windows) +@anchor{install-tl @code{instopt_adjustpath} (default 0 on Unix@comma{} 1 on Windows)} + +Adjust @code{PATH} environment variable. + +@item @code{instopt_adjustrepo} (default 1) +@anchor{install-tl @code{instopt_adjustrepo} (default 1)} + +Set remote repository to a multiplexed CTAN mirror after installation; +see @code{-repository} above. + +@item @code{instopt_letter} (default 0) +@anchor{install-tl @code{instopt_letter} (default 0)} + +Set letter size paper as the default, instead of a4. + +@item @code{instopt_portable} (default 0) +@anchor{install-tl @code{instopt_portable} (default 0)} + +Install for portable use, e.g., on a USB stick. + +@item @code{instopt_write18_restricted} (default 1) +@anchor{install-tl @code{instopt_write18_restricted} (default 1)} + +Enable @code{\write18} for a restricted set of programs. + +@end table + +@strong{tlpdb options} (prefix @code{tlpdbopt_}) + +The definitive list is given in @code{tlpkg/TeXLive/TLConfig.pm}, in +@code{%TeXLive::TLConfig::TLPDBOptions}, together with explanations. All +items given there @emph{except} for @code{tlpdbopt_location} can be specified. +Here is the current list: + +@verbatim + tlpdbopt_autobackup + tlpdbopt_backupdir + tlpdbopt_create_formats + tlpdbopt_desktop_integration + tlpdbopt_file_assocs + tlpdbopt_generate_updmap + tlpdbopt_install_docfiles + tlpdbopt_install_srcfiles + tlpdbopt_post_code + tlpdbopt_sys_bin + tlpdbopt_sys_info + tlpdbopt_sys_man + tlpdbopt_w32_multi_user +@end verbatim + +@strong{platform options} (prefix @code{binary_}) + +For each supported platform in TeX Live (directories under @code{bin/}), the +variable @code{binary_}@emph{PLATFORM} can be set. For example: + +@verbatim + binary_x86_64-linux +@end verbatim + +If no @code{binary_} variable is specified, the default is whatever the +current machine is running. + +In releases before 2017, many profile variables had different +names (not documented here; see the @code{install-tl} source). They are +accepted and transformed to the names given above. When a profile is +written, the names above are always used. + +For more details on all of the above options, consult the TeX Live +installation manual, linked from @url{http://tug.org/texlive/doc}. + @node install-tl ENVIRONMENT VARIABLES @appendixsec ENVIRONMENT VARIABLES For ease in scripting and debugging, @code{install-tl} will look for the -following environment variables. They are not of interest in normal +following environment variables. They are not of interest for normal user installations. @table @asis @@ -357,12 +502,24 @@ variables. Omit creating the ConTeXt cache. This is useful for redistributors. +@item @code{TEXLIVE_INSTALL_NO_WELCOME} +@anchor{install-tl @code{TEXLIVE_INSTALL_NO_WELCOME}} + +Omit printing the welcome message after successful installation, e.g., +for testing. + @item @code{TEXLIVE_INSTALL_PREFIX} @anchor{install-tl @code{TEXLIVE_INSTALL_PREFIX}} +@item @code{TEXLIVE_INSTALL_TEXDIR} +@anchor{install-tl @code{TEXLIVE_INSTALL_TEXDIR}} + @item @code{TEXLIVE_INSTALL_TEXMFCONFIG} @anchor{install-tl @code{TEXLIVE_INSTALL_TEXMFCONFIG}} +@item @code{TEXLIVE_INSTALL_TEXMFVAR} +@anchor{install-tl @code{TEXLIVE_INSTALL_TEXMFVAR}} + @item @code{TEXLIVE_INSTALL_TEXMFHOME} @anchor{install-tl @code{TEXLIVE_INSTALL_TEXMFHOME}} @@ -375,10 +532,11 @@ Omit creating the ConTeXt cache. This is useful for redistributors. @item @code{TEXLIVE_INSTALL_TEXMFSYSVAR} @anchor{install-tl @code{TEXLIVE_INSTALL_TEXMFSYSVAR}} -@item @code{TEXLIVE_INSTALL_TEXMFVAR} -@anchor{install-tl @code{TEXLIVE_INSTALL_TEXMFVAR}} - -Specify the respective directories. +Specify the respective directories. @code{TEXLIVE_INSTALL_PREFIX} defaults +to @code{/usr/local/texlive}, while @code{TEXLIVE_INSTALL_TEXDIR} defaults to +the release directory within that prefix, e.g., +@code{/usr/local/texlive/2016}. All the defaults can be seen by running the +installer interactively and then typing @code{D} for the directory menu. @item @code{NOPERLDOC} @anchor{install-tl @code{NOPERLDOC}} @@ -394,3 +552,5 @@ This script and its documentation were written for the TeX Live distribution (@url{http://tug.org/texlive}) and both are licensed under the GNU General Public License Version 2 or later. +$Id: install-tl 46908 2018-03-10 00:46:28Z preining $ + diff --git a/Build/source/doc/tlbuild-incl/tlmgr.texi b/Build/source/doc/tlbuild-incl/tlmgr.texi index 9c941d29bf9..e4e704a1619 100644 --- a/Build/source/doc/tlbuild-incl/tlmgr.texi +++ b/Build/source/doc/tlbuild-incl/tlmgr.texi @@ -8,9 +8,9 @@ * tlmgr EXAMPLES:: * tlmgr OPTIONS:: * tlmgr ACTIONS:: -* tlmgr USER MODE:: * tlmgr CONFIGURATION FILE FOR TLMGR:: -* tlmgr TAXONOMIES:: +* tlmgr CRYPTOGRAPHIC VERIFICATION:: +* tlmgr USER MODE:: * tlmgr MULTIPLE REPOSITORIES:: * tlmgr GUI FOR TLMGR:: * tlmgr MACHINE-READABLE OUTPUT:: @@ -20,12 +20,12 @@ @node tlmgr NAME @appendixsec NAME -tlmgr - the TeX Live Manager +tlmgr - the native TeX Live Manager @node tlmgr SYNOPSIS @appendixsec SYNOPSIS -tlmgr [@emph{option}]... @emph{action} [@emph{option}]... [@emph{operand}]... +tlmgr [@emph{option}...] @emph{action} [@emph{option}...] [@emph{operand}...] @node tlmgr DESCRIPTION @appendixsec DESCRIPTION @@ -56,11 +56,18 @@ After successfully installing TeX Live, here are a few common operations with @code{tlmgr}: @table @asis +@item @code{tlmgr option repository ctan} +@anchor{tlmgr @code{tlmgr option repository ctan}} + @item @code{tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet} @anchor{tlmgr @code{tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet}} Tell @code{tlmgr} to use a nearby CTAN mirror for future updates; useful if -you installed TeX Live from the DVD image and want continuing updates. +you installed TeX Live from the DVD image and want to have continuing +updates. The two commands are equivalent; @code{ctan} is just an alias for +the given url. Caveat: @code{mirror.ctan.org} resolves to many different +hosts, and they are not perfectly synchronized; we recommend updating +only daily (at most), and not more often. @item @code{tlmgr update --list} @anchor{tlmgr @code{tlmgr update --list}} @@ -73,11 +80,11 @@ Report what would be updated without actually updating anything. Make your local TeX installation correspond to what is in the package repository (typically useful when updating from CTAN). -@item @code{tlmgr info} @emph{pkg} -@anchor{tlmgr @code{tlmgr info} @emph{pkg}} +@item @code{tlmgr info} @emph{what} +@anchor{tlmgr @code{tlmgr info} @emph{what}} -Display detailed information about @emph{pkg}, such as the installation -status and description. +Display detailed information about a package @emph{what}, such as the installation +status and description, of searches for @emph{what} in all packages. @end table @@ -166,7 +173,7 @@ debugging. @code{tlmgr} logs all package actions (install, remove, update, failed updates, failed restores) to a separate log file, by default -@code{TEXMFSYSVAR/web2c/tlmgr.log}. This option allows you to specific a +@code{TEXMFSYSVAR/web2c/tlmgr.log}. This option allows you to specify a different file for the log. @item @strong{--pause} @@ -207,6 +214,16 @@ Activates user mode for this run of @code{tlmgr}; see @ref{tlmgr USER MODE,, USE Uses @emph{dir} for the tree in user mode; see @ref{tlmgr USER MODE,, USER MODE} below. +@item @strong{--verify-repo=[none|main|all]} +@anchor{tlmgr @strong{--verify-repo=[none|main|all]}} + +Defines the level of verification done: If @code{none} is specified, no +verification whatsoever is done. If @code{main} is given and a working GnuPG +(@code{gpg}) binary is available, all repositories are checked, but only the +main repository is required to be signed. If @code{all} is given, then all +repositories need to be signed. See @ref{tlmgr CRYPTOGRAPHIC VERIFICATION,, CRYPTOGRAPHIC VERIFICATION} below +for details. + @end table The standard options for TeX Live programs are also accepted: @@ -224,31 +241,34 @@ revision number for the loaded TeX Live Perl modules are shown, too. @menu * tlmgr help:: * tlmgr version:: -* tlmgr backup [--clean[=@emph{N}]] [--backupdir @emph{dir}] [--all | @emph{pkg}]...:: +* tlmgr backup:: * tlmgr candidates @emph{pkg}:: -* tlmgr check [@emph{option}]... [files|depends|executes|runfiles|all]:: -* tlmgr conf [texmf|tlmgr|updmap [--conffile @emph{file}] [--delete] [@emph{key} [@emph{value}]]]:: -* tlmgr dump-tlpdb [--local|--remote]:: -* tlmgr generate [@emph{option}]... @emph{what}:: +* tlmgr check [@emph{option}...] [files|depends|executes|runfiles|all]:: +* tlmgr conf:: +* tlmgr dump-tlpdb [@emph{option}...] [--json]:: +* tlmgr generate:: * tlmgr gui:: -* tlmgr info [@emph{option}...] [collections|schemes|@emph{pkg}...]:: +* tlmgr info:: * tlmgr init-usertree:: -* tlmgr install [@emph{option}]... @emph{pkg}...:: +* tlmgr install [@emph{option}...] @emph{pkg}...:: +* tlmgr key:: +* tlmgr list:: * tlmgr option:: * tlmgr paper:: -* tlmgr path [--w32mode=user|admin] [add|remove]:: +* tlmgr path:: * tlmgr pinning:: -* tlmgr platform list|add|remove @emph{platform}...:: -* tlmgr platform set @emph{platform}:: -* tlmgr platform set auto:: -* tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [@emph{pkg}]...:: +* tlmgr platform:: +* tlmgr postaction:: * tlmgr print-platform:: -* tlmgr restore [--backupdir @emph{dir}] [--all | @emph{pkg} [@emph{rev}]]:: -* tlmgr remove [@emph{option}]... @emph{pkg}...:: +* tlmgr print-platform-info:: +* tlmgr remove [@emph{option}...] @emph{pkg}...:: * tlmgr repository:: -* tlmgr search [@emph{option}...] @emph{what}:: +* tlmgr restore:: +* tlmgr search:: +* tlmgr shell:: +* tlmgr show:: * tlmgr uninstall:: -* tlmgr update [@emph{option}]... [@emph{pkg}]...:: +* tlmgr update [@emph{option}...] [@emph{pkg}...]:: @end menu @node tlmgr help @@ -268,8 +288,15 @@ Gives version information (same as @code{--version}). If @code{-v} has been given the revisions of the used modules are reported, too. -@node tlmgr backup [--clean[=@emph{N}]] [--backupdir @emph{dir}] [--all | @emph{pkg}]... -@appendixsubsec backup [--clean[=@emph{N}]] [--backupdir @emph{dir}] [--all | @emph{pkg}]... +@node tlmgr backup +@appendixsubsec backup + +@table @asis +@item @strong{backup [@emph{option}...] --all} +@anchor{tlmgr @strong{backup [@emph{option}...] --all}} + +@item @strong{backup [@emph{option}...] @emph{pkg}...} +@anchor{tlmgr @strong{backup [@emph{option}...] @emph{pkg}...}} If the @code{--clean} option is not specified, this action makes a backup of the given packages, or all packages given @code{--all}. These backups are @@ -318,20 +345,16 @@ performed are written to the terminal. @end table +@end table + @node tlmgr candidates @emph{pkg} @appendixsubsec candidates @emph{pkg} -@table @asis -@item @strong{candidates @emph{pkg}} -@anchor{tlmgr @strong{candidates @emph{pkg}} 1} - Shows the available candidate repositories for package @emph{pkg}. See @ref{tlmgr MULTIPLE REPOSITORIES,, MULTIPLE REPOSITORIES} below. -@end table - -@node tlmgr check [@emph{option}]... [files|depends|executes|runfiles|all] -@appendixsubsec check [@emph{option}]... [files|depends|executes|runfiles|all] +@node tlmgr check [@emph{option}...] [files|depends|executes|runfiles|all] +@appendixsubsec check [@emph{option}...] [files|depends|executes|runfiles|all] Executes one (or all) check(s) on the consistency of the installation. @@ -345,8 +368,8 @@ actually present, and lists those missing. @item @strong{depends} @anchor{tlmgr @strong{depends}} -Lists those packages which occur as dependencies in an installed collections, -but are themselves not installed, and those packages that are not +Lists those packages which occur as dependencies in an installed collection, +but are themselves not installed, and those packages which are not contained in any collection. If you call @code{tlmgr check collections} this test will be carried out @@ -361,7 +384,8 @@ Live Database are present. @item @strong{runfiles} @anchor{tlmgr @strong{runfiles}} -List those filenames that are occurring more than one time in the runfiles. +List those filenames that are occurring more than one time in the +runfiles sections. @end table @@ -376,51 +400,71 @@ checking the TL development repository. @end table -@node tlmgr conf [texmf|tlmgr|updmap [--conffile @emph{file}] [--delete] [@emph{key} [@emph{value}]]] -@appendixsubsec conf [texmf|tlmgr|updmap [--conffile @emph{file}] [--delete] [@emph{key} [@emph{value}]]] +@node tlmgr conf +@appendixsubsec conf + +@table @asis +@item @strong{conf [texmf|tlmgr|updmap [--conffile @emph{file}] [--delete] [@emph{key} [@emph{value}]]]} +@anchor{tlmgr @strong{conf [texmf|tlmgr|updmap [--conffile @emph{file}] [--delete] [@emph{key} [@emph{value}]]]}} + +@item @strong{conf auxtrees [--conffile @emph{file}] [show|add|delete] [@emph{value}]} +@anchor{tlmgr @strong{conf auxtrees [--conffile @emph{file}] [show|add|delete] [@emph{value}]}} With only @code{conf}, show general configuration information for TeX Live, including active configuration files, path settings, and more. This is -like the @code{texconfig conf} call, but works on all supported platforms. +like running @code{texconfig conf}, but works on all supported platforms. -With either @code{conf texmf}, @code{conf tlmgr}, or @code{conf updmap} given in -addition, shows all key/value pairs (i.e., all settings) as saved in -@code{ROOT/texmf.cnf}, the tlmgr configuration file (see below), or the -first found (via kpsewhich) @code{updmap.cfg} file, respectively. +With one of @code{conf texmf}, @code{conf tlmgr}, or @code{conf updmap}, shows all +key/value pairs (i.e., all settings) as saved in @code{ROOT/texmf.cnf}, the +user-specific @code{tlmgr} configuration file (see below), or the first +found (via @code{kpsewhich}) @code{updmap.cfg} file, respectively. If @emph{key} is given in addition, shows the value of only that @emph{key} in -the respective file. If option @emph{--delete} is also given, the -configuration file -- it is removed, not just commented out! +the respective file. If option @emph{--delete} is also given, the value in +the given configuration file is entirely removed (not just commented +out). If @emph{value} is given in addition, @emph{key} is set to @emph{value} in the respective file. @emph{No error checking is done!} -In all cases the file used can be explicitly specified via the option -@code{--conffile @emph{file}}, in case one wants to operate on a different file. +The @code{PATH} value shown by @code{conf} is as used by @code{tlmgr}. The +directory in which the @code{tlmgr} executable is found is automatically +prepended to the PATH value inherited from the environment. -Practical application: if the execution of (some or all) system commands -via @code{\write18} was left enabled during installation, you can disable -it afterwards: +Here is a practical example of changing configuration values. If the +execution of (some or all) system commands via @code{\write18} was left +enabled during installation, you can disable it afterwards: @verbatim tlmgr conf texmf shell_escape 0 @end verbatim -A more complicated example: the @code{TEXMFHOME} tree (see the main TeX Live -guide, @url{http://tug.org/texlive/doc.html}) can be set to multiple -directories, but they must be enclosed in braces and separated by -commas, so quoting the value to the shell is a good idea. Thus: +The subcommand @code{auxtrees} allows adding and removing arbitrary +additional texmf trees, completely under user control. @code{auxtrees show} +shows the list of additional trees, @code{auxtrees add} @emph{tree} adds a tree +to the list, and @code{auxtrees remove} @emph{tree} removes a tree from the list +(if present). The trees should not contain an @code{ls-R} file (or files +might not be found if the @code{ls-R} becomes stale). This works by +manipulating the Kpathsea variable @code{TEXMFAUXTREES}, in +@code{ROOT/texmf.cnf}. Example: @verbatim - tlmgr conf texmf TEXMFHOME "{~/texmf,~/texmfbis}" + tlmgr conf auxtrees add /quick/test/tree + tlmgr conf auxtrees remove /quick/test/tree @end verbatim -Warning: The general facility is here, but tinkering with settings in -this way is very strongly discouraged. Again, no error checking on -either keys or values is done, so any sort of breakage is possible. +In all cases the configuration file can be explicitly specified via the +option @code{--conffile} @emph{file}, if desired. + +Warning: The general facility for changing configuration values is here, +but tinkering with settings in this way is strongly discouraged. Again, +no error checking on either keys or values is done, so any sort of +breakage is possible. -@node tlmgr dump-tlpdb [--local|--remote] -@appendixsubsec dump-tlpdb [--local|--remote] +@end table + +@node tlmgr dump-tlpdb [@emph{option}...] [--json] +@appendixsubsec dump-tlpdb [@emph{option}...] [--json] Dump complete local or remote TLPDB to standard output, as-is. The output is analogous to the @code{--machine-readable} output; see @@ -432,12 +476,19 @@ Options: @item @strong{--local} @anchor{tlmgr @strong{--local}} -Dump the local tlpdb. +Dump the local TLPDB. @item @strong{--remote} @anchor{tlmgr @strong{--remote}} -Dump the remote tlpdb. +Dump the remote TLPDB. + +@item @strong{--json} +@anchor{tlmgr @strong{--json}} + +Instead of dumping the actual content, the database is dumped as +JSON. For the format of JSON output see @code{tlpkg/doc/JSON-formats.txt}, +format definition @code{TLPDB}. @end table @@ -455,24 +506,21 @@ where @code{location-url} is the literal field name, followed by a tab, and Line endings may be either LF or CRLF depending on the current platform. -@node tlmgr generate [@emph{option}]... @emph{what} -@appendixsubsec generate [@emph{option}]... @emph{what} +@node tlmgr generate +@appendixsubsec generate @table @asis -@item @strong{generate language} -@anchor{tlmgr @strong{generate language}} - -@item @strong{generate language.dat} -@anchor{tlmgr @strong{generate language.dat}} +@item @strong{generate [@emph{option}...] language} +@anchor{tlmgr @strong{generate [@emph{option}...] language}} -@item @strong{generate language.def} -@anchor{tlmgr @strong{generate language.def}} +@item @strong{generate [@emph{option}...] language.dat} +@anchor{tlmgr @strong{generate [@emph{option}...] language.dat}} -@item @strong{generate language.dat.lua} -@anchor{tlmgr @strong{generate language.dat.lua}} +@item @strong{generate [@emph{option}...] language.def} +@anchor{tlmgr @strong{generate [@emph{option}...] language.def}} -@item @strong{generate fmtutil} -@anchor{tlmgr @strong{generate fmtutil}} +@item @strong{generate [@emph{option}...] language.dat.lua} +@anchor{tlmgr @strong{generate [@emph{option}...] language.dat.lua}} @end table @@ -485,39 +533,42 @@ all of these files. For managing your own fonts, please read the @code{updmap --help} information and/or @url{http://tug.org/fonts/fontinstall.html}. +For managing your own formats, please read the @code{fmtutil --help} +information. + In more detail: @code{generate} remakes any of the configuration files -@code{language.dat}, @code{language.def}, @code{language.dat.lua}, and -@code{fmtutil.cnf}, from the information present in the local TLPDB, plus +@code{language.dat}, @code{language.def}, and @code{language.dat.lua} +from the information present in the local TLPDB, plus locally-maintained files. The locally-maintained files are @code{language-local.dat}, -@code{language-local.def}, @code{language-local.dat.lua}, or -@code{fmtutil-local.cnf}, searched for in @code{TEXMFLOCAL} in the respective +@code{language-local.def}, or @code{language-local.dat.lua}, +searched for in @code{TEXMFLOCAL} in the respective directories. If local additions are present, the final file is made by starting with the main file, omitting any entries that the local file specifies to be disabled, and finally appending the local file. -(Historical note: The formerly supported @code{updmap-local.cfg} is no longer -read, since @code{updmap} now supports multiple @code{updmap.cfg} files. Thus, -local additions can and should be put into an @code{updmap.cfg} file in -@code{TEXMFLOCAL}. The @code{generate updmap} action no longer exists.) +(Historical note: The formerly supported @code{updmap-local.cfg} and +@code{fmtutil-local.cnf} are no longer read, since @code{updmap} and @code{fmtutil} +now reads and supports multiple configuration files. Thus, +local additions can and should be put into an @code{updmap.cfg} of @code{fmtutil.cnf} +file in @code{TEXMFLOCAL}. The @code{generate updmap} and @code{generate fmtutil} actions +no longer exist.) Local files specify entries to be disabled with a comment line, namely one of these: @verbatim - #!NAME %!NAME --!NAME @end verbatim -where @code{fmtutil.cnf} uses @code{#}, @code{language.dat} and @code{language.def} use -@code{%}, and @code{language.dat.lua} use @code{--}. In all cases, the @emph{name} is +where @code{language.dat} and @code{language.def} use @code{%}, +and @code{language.dat.lua} use @code{--}. In all cases, the @emph{name} is the respective format name or hyphenation pattern identifier. Examples: @verbatim - #!pdflatex %!german --!usenglishmax @end verbatim @@ -558,7 +609,7 @@ location in @code{TEXMFLOCAL}). @item @strong{--rebuild-sys} @anchor{tlmgr @strong{--rebuild-sys}} -tells tlmgr to run necessary programs after config files have been +tells @code{tlmgr} to run necessary programs after config files have been regenerated. These are: @code{fmtutil-sys --all} after @code{generate fmtutil}, @code{fmtutil-sys --byhyphen .../language.dat} after @code{generate language.dat}, @@ -575,10 +626,9 @@ succession before invoking these programs. The respective locations are as follows: @verbatim - tex/generic/config/language.dat (and language-local.dat); - tex/generic/config/language.def (and language-local.def); - tex/generic/config/language.dat.lua (and language-local.dat.lua); - web2c/fmtutil.cnf (and fmtutil-local.cnf); + tex/generic/config/language.dat (and language-local.dat) + tex/generic/config/language.def (and language-local.def) + tex/generic/config/language.dat.lua (and language-local.dat.lua) @end verbatim @node tlmgr gui @@ -586,8 +636,18 @@ The respective locations are as follows: Start the graphical user interface. See @strong{GUI} below. -@node tlmgr info [@emph{option}...] [collections|schemes|@emph{pkg}...] -@appendixsubsec info [@emph{option}...] [collections|schemes|@emph{pkg}...] +@node tlmgr info +@appendixsubsec info + +@table @asis +@item @strong{info [@emph{option}...] @emph{pkg}...} +@anchor{tlmgr @strong{info [@emph{option}...] @emph{pkg}...}} + +@item @strong{info [@emph{option}...] collections} +@anchor{tlmgr @strong{info [@emph{option}...] collections}} + +@item @strong{info [@emph{option}...] schemes} +@anchor{tlmgr @strong{info [@emph{option}...] schemes}} With no argument, lists all packages available at the package repository, prefixing those already installed with @code{i}. @@ -596,10 +656,20 @@ With the single word @code{collections} or @code{schemes} as the argument, lists the request type instead of all packages. With any other arguments, display information about @emph{pkg}: the name, -category, short and long description, installation status, and TeX Live +category, short and long description, sizes, installation status, and TeX Live revision number. If @emph{pkg} is not locally installed, searches in the remote installation source. +For normal packages (not collections or schemes), the sizes of the four +groups of files (run/src/doc/bin files) are shown separately. For +collections, the cumulative size is shown, including all +directly-dependent packages (but not dependent collections). For +schemes, the cumulative size is also shown, including all +directly-dependent collections and packages. + +If @emph{pkg} is not found locally or remotely, the search action is used +and lists matching packages and files. + It also displays information taken from the TeX Catalogue, namely the package version, date, and license. Consider these, especially the package version, as approximations only, due to timing skew of the @@ -623,26 +693,30 @@ dependencies in a similar way. @item @strong{--only-installed} @anchor{tlmgr @strong{--only-installed}} -If this options is given, the installation source will -not be used; only locally installed packages, collections, or schemes -are listed. -(Does not work for listing of packages for now) +If this option is given, the installation source will not be used; only +locally installed packages, collections, or schemes are listed. -@item @strong{--taxonomy} -@anchor{tlmgr @strong{--taxonomy}} +@item @strong{--data @code{item1,item2,...}} +@anchor{tlmgr @strong{--data @code{item1@comma{}item2@comma{}...}}} -@item @strong{--keyword} -@anchor{tlmgr @strong{--keyword}} +If the option @code{--data} is given, its argument must be a comma separated +list of field names from: @code{name}, @code{category}, @code{localrev}, @code{remoterev}, +@code{shortdesc}, @code{longdesc}, @code{installed}, @code{size}, @code{relocatable}, @code{depends}, +@code{cat-version}, @code{cat-date}, or @code{cat-license}. In this case the requested +packages' information is listed in CSV format one package per line, and the +column information is given by the @code{itemN}. The @code{depends} column contains +the name of all dependencies separated by @code{:}. -@item @strong{--functionality} -@anchor{tlmgr @strong{--functionality}} +@item @strong{--json} +@anchor{tlmgr @strong{--json} 1} -@item @strong{--characterization} -@anchor{tlmgr @strong{--characterization}} +In case @code{--json} is specified, the output is a +JSON encoded array where each array element is the JSON representation of +a single @code{TLPOBJ} but with additional information. For details see +@code{tlpkg/doc/JSON-formats.txt}, format definition: @code{TLPOBJINFO}. +If both @code{--json} and @code{--data} are given, @code{--json} takes precedence. -In addition to the normal data displayed, also display information for -given packages from the corresponding taxonomy (or all of them). See -@ref{tlmgr TAXONOMIES,, TAXONOMIES} below for details. +@end table @end table @@ -653,13 +727,23 @@ Sets up a texmf tree for so-called user mode management, either the default user tree (@code{TEXMFHOME}), or one specified on the command line with @code{--usertree}. See @ref{tlmgr USER MODE,, USER MODE} below. -@node tlmgr install [@emph{option}]... @emph{pkg}... -@appendixsubsec install [@emph{option}]... @emph{pkg}... +@node tlmgr install [@emph{option}...] @emph{pkg}... +@appendixsubsec install [@emph{option}...] @emph{pkg}... + +Install each @emph{pkg} given on the command line, if it is not already +installed. (It does not touch existing packages; see the @code{update} +action for how to get the latest version of a package.) -Install each @emph{pkg} given on the command line. By default this installs -all packages on which the given @emph{pkg}s are dependent, also. Options: +By default this also installs all packages on which the given @emph{pkg}s are +dependent. Options: @table @asis +@item @strong{--dry-run} +@anchor{tlmgr @strong{--dry-run} 1} + +Nothing is actually installed; instead, the actions to be performed are +written to the terminal. + @item @strong{--file} @anchor{tlmgr @strong{--file}} @@ -667,15 +751,12 @@ Instead of fetching a package from the installation repository, use the package files given on the command line. These files must be standard TeX Live package files (with contained tlpobj file). -@item @strong{--reinstall} -@anchor{tlmgr @strong{--reinstall}} - -Reinstall a package (including dependencies for collections) even if it -already seems to be installed (i.e, is present in the TLPDB). This is -useful to recover from accidental removal of files in the hierarchy. +@item @strong{--force} +@anchor{tlmgr @strong{--force}} -When re-installing, only dependencies on normal packages are followed -(i.e., not those of category Scheme or Collection). +If updates to @code{tlmgr} itself (or other parts of the basic +infrastructure) are present, @code{tlmgr} will bail out and not perform the +installation unless this option is given. Not recommended. @item @strong{--no-depends} @anchor{tlmgr @strong{--no-depends}} @@ -693,45 +774,99 @@ an @code{i386-linux} system. This option suppresses this behavior, and also implies @code{--no-depends}. Don't use it unless you are sure of what you are doing. -@item @strong{--dry-run} -@anchor{tlmgr @strong{--dry-run} 1} +@item @strong{--reinstall} +@anchor{tlmgr @strong{--reinstall}} -Nothing is actually installed; instead, the actions to be performed are -written to the terminal. +Reinstall a package (including dependencies for collections) even if it +already seems to be installed (i.e, is present in the TLPDB). This is +useful to recover from accidental removal of files in the hierarchy. -@item @strong{--force} -@anchor{tlmgr @strong{--force}} +When re-installing, only dependencies on normal packages are followed +(i.e., not those of category Scheme or Collection). -If updates to @code{tlmgr} itself (or other parts of the basic -infrastructure) are present, @code{tlmgr} will bail out and not perform the -installation unless this option is given. Not recommended. +@item @strong{--with-doc} +@anchor{tlmgr @strong{--with-doc}} + +@item @strong{--with-src} +@anchor{tlmgr @strong{--with-src}} + +While not recommended, the @code{install-tl} program provides an option to +omit installation of all documentation and/or source files. (By +default, everything is installed.) After such an installation, you may +find that you want the documentation or source files for a given package +after all. You can get them by using these options in conjunction with +@code{--reinstall}, as in (using the @code{fontspec} package as the example): + +@verbatim + tlmgr install --reinstall --with-doc --with-src fontspec +@end verbatim + +@end table + +@node tlmgr key +@appendixsubsec key + +@table @asis +@item @strong{key list} +@anchor{tlmgr @strong{key list}} + +@item @strong{key add @emph{file}} +@anchor{tlmgr @strong{key add @emph{file}}} + +@item @strong{key remove @emph{keyid}} +@anchor{tlmgr @strong{key remove @emph{keyid}}} + +The action @code{key} allows listing, adding and removing additional GPG +keys to the set of trusted keys, that is, those that are used to verify +the TeX Live databases. + +With the @code{list} argument, @code{key} lists all keys. + +The @code{add} argument requires another argument, either a filename or +@code{-} for stdin, from which the key is added. The key is added to the +local keyring @code{GNUPGHOME/repository-keys.gpg}, which is normally) +@code{tlpkg/gpg/repository-keys.gpg}. + +The @code{remove} argument requires a key id and removes the requested id +from the local keyring. @end table +@node tlmgr list +@appendixsubsec list + +Synonym for @ref{tlmgr info,, info}. + @node tlmgr option @appendixsubsec option @table @asis -@item @strong{option [show]} -@anchor{tlmgr @strong{option [show]}} +@item @strong{option [--json] [show]} +@anchor{tlmgr @strong{option [--json] [show]}} -@item @strong{option showall} -@anchor{tlmgr @strong{option showall}} +@item @strong{option [--json] showall} +@anchor{tlmgr @strong{option [--json] showall}} @item @strong{option @emph{key} [@emph{value}]} @anchor{tlmgr @strong{option @emph{key} [@emph{value}]}} @end table -The first form shows the global TeX Live settings currently saved in the -TLPDB with a short description and the @code{key} used for changing it in -parentheses. +The first form, @code{show}, shows the global TeX Live settings currently +saved in the TLPDB with a short description and the @code{key} used for +changing it in parentheses. + +The second form, @code{showall}, is similar, but also shows options which +can be defined but are not currently set to any value. -The second form is similar, but also shows options which can be defined -but are not currently set to any value. +Both @code{show...} forms take an option @code{--json}, which dumps the option +information in JSON format. In this case, both forms dump the same +data. For the format of the JSON output see +@code{tlpkg/doc/JSON-formats.txt}, format definition @code{TLOPTION}. -In the third form, if @emph{value} is not given, the setting for @emph{key} is -displayed. If @emph{value} is present, @emph{key} is set to @emph{value}. +In the third form, with @emph{key}, if @emph{value} is not given, the setting +for @emph{key} is displayed. If @emph{value} is present, @emph{key} is set to +@emph{value}. Possible values for @emph{key} are (run @code{tlmgr option showall} for the definitive list): @@ -762,19 +897,22 @@ DVD. To do this, you can run The @code{install-tl} documentation has more information about the possible values for @code{repository}. (For backward compatibility, @code{location} can -be used as alternative name for @code{repository}.) +be used as a synonym for @code{repository}.) If @code{formats} is set (this is the default), then formats are regenerated when either the engine or the format files have changed. Disable this -only when you know what you are doing. +only when you know how and want to regenerate formats yourself. The @code{postcode} option controls execution of per-package postinstallation action code. It is set by default, and again disabling -is not likely to be of interest except perhaps to developers. +is not likely to be of interest except to developers doing debugging. The @code{docfiles} and @code{srcfiles} options control the installation of -their respective files of a package. By default both are enabled (1). -This can be disabled (set to 0) if disk space is (very) limited. +their respective file groups (documentation, sources; grouping is +approximate) per package. By default both are enabled (1). Either or +both can be disabled (set to 0) if disk space is limited or for minimal +testing installations, etc. When disabled, the respective files are not +downloaded at all. The options @code{autobackup} and @code{backupdir} determine the defaults for the actions @code{update}, @code{backup} and @code{restore}. These three actions @@ -787,7 +925,8 @@ Its value is an integer. If the @code{autobackup} value is @code{-1}, no backups are removed. If @code{autobackup} is 0 or more, it specifies the number of backups to keep. Thus, backups are disabled if the value is 0. In the @code{--clean} mode of the @code{backup} action this option also -specifies the number to be kept. +specifies the number to be kept. The default value is 1, so that +backups are made, but only one backup is kept. To setup @code{autobackup} to @code{-1} on the command line, use: @@ -795,15 +934,15 @@ To setup @code{autobackup} to @code{-1} on the command line, use: tlmgr option -- autobackup -1 @end verbatim -The @code{--} avoids having the @code{-1} treated as an option. (@code{--} stops -parsing for options at the point where it appears; this is a general -feature across most Unix programs.) +The @code{--} avoids having the @code{-1} treated as an option. (The @code{--} +stops parsing for options at the point where it appears; this is a +general feature across most Unix programs.) -The @code{sys_bin}, @code{sys_man}, and @code{sys_info} options are used on -Unix-like systems to control the generation of links for executables, -info files and man pages. See the @code{path} action for details. +The @code{sys_bin}, @code{sys_man}, and @code{sys_info} options are used on Unix +systems to control the generation of links for executables, Info files +and man pages. See the @code{path} action for details. -The last three options control behaviour on Windows installations. If +The last three options affect behavior on Windows installations. If @code{desktop_integration} is set, then some packages will install items in a sub-folder of the Start menu for @code{tlmgr gui}, documentation, etc. If @code{fileassocs} is set, Windows file associations are made (see also the @@ -821,6 +960,9 @@ instead of only the current user. All three options are on by default. @item @strong{@w{[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [@emph{papersize}|--list]}} @anchor{tlmgr @strong{@w{[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [@emph{papersize}|--list]}}} +@item @strong{paper --json} +@anchor{tlmgr @strong{paper --json}} + @end table With no arguments (@code{tlmgr paper}), shows the default paper size setting @@ -841,14 +983,25 @@ With a program given as the first argument and @code{--list} given as the last argument (e.g., @code{tlmgr dvips paper --list}), shows all valid paper sizes for that program. The first size shown is the default. +If @code{--json} is specified without other options, the paper setup is +dumped in JSON format. For the format of JSON output see +@code{tlpkg/doc/JSON-formats.txt}, format definition @code{TLPAPER}. + Incidentally, this syntax of having a specific program name before the @code{paper} keyword is unusual. It is inherited from the longstanding @code{texconfig} script, which supports other configuration settings for some programs, notably @code{dvips}. @code{tlmgr} does not support those extra settings. -@node tlmgr path [--w32mode=user|admin] [add|remove] -@appendixsubsec path [--w32mode=user|admin] [add|remove] +@node tlmgr path +@appendixsubsec path + +@table @asis +@item @strong{path [--w32mode=user|admin] add} +@anchor{tlmgr @strong{path [--w32mode=user|admin] add}} + +@item @strong{path [--w32mode=user|admin] remove} +@anchor{tlmgr @strong{path [--w32mode=user|admin] remove}} On Unix, merely adds or removes symlinks for binaries, man pages, and info pages in the system directories specified by the respective options @@ -871,10 +1024,12 @@ is changed, while if the setting @emph{w32_multi_user} is on, a warning is issued that the caller does not have enough privileges. If the user does not have admin rights, and the option @code{--w32mode} -is given, it must be @strong{user} and the user path will be adjusted. If a +is given, it must be @code{user} and the user path will be adjusted. If a user without admin rights uses the option @code{--w32mode admin} a warning is issued that the caller does not have enough privileges. +@end table + @node tlmgr pinning @appendixsubsec pinning @@ -905,14 +1060,18 @@ Remove all pinning data for repository @emph{repo}. @end table -@node tlmgr platform list|add|remove @emph{platform}... -@appendixsubsec platform list|add|remove @emph{platform}... +@node tlmgr platform +@appendixsubsec platform + +@table @asis +@item @strong{platform list|add|remove @emph{platform}...} +@anchor{tlmgr @strong{platform list|add|remove @emph{platform}...}} -@node tlmgr platform set @emph{platform} -@appendixsubsec platform set @emph{platform} +@item @strong{platform set @emph{platform}} +@anchor{tlmgr @strong{platform set @emph{platform}}} -@node tlmgr platform set auto -@appendixsubsec platform set auto +@item @strong{platform set auto} +@anchor{tlmgr @strong{platform set auto}} @code{platform list} lists the TeX Live names of all the platforms (a.k.a. architectures), (@code{i386-linux}, ...) available at the package @@ -946,25 +1105,52 @@ written to the terminal. @end table -@node tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [@emph{pkg}]... -@appendixsubsec postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [@emph{pkg}]... +@end table + +@node tlmgr postaction +@appendixsubsec postaction + +@table @asis +@item @strong{postaction [@emph{option}...] install [shortcut|fileassoc|script] [@emph{pkg}...]} +@anchor{tlmgr @strong{postaction [@emph{option}...] install [shortcut|fileassoc|script] [@emph{pkg}...]}} + +@item @strong{postaction [@emph{option}...] remove [shortcut|fileassoc|script] [@emph{pkg}...]} +@anchor{tlmgr @strong{postaction [@emph{option}...] remove [shortcut|fileassoc|script] [@emph{pkg}...]}} Carry out the postaction @code{shortcut}, @code{fileassoc}, or @code{script} given as the second required argument in install or remove mode (which is the first required argument), for either the packages given on the command line, or for all if @code{--all} is given. +Options: + +@table @asis +@item @strong{--w32mode=[user|admin]} +@anchor{tlmgr @strong{--w32mode=[user|admin]}} + If the option @code{--w32mode} is given the value @code{user}, all actions will only be carried out in the user-accessible parts of the registry/filesystem, while the value @code{admin} selects the system-wide parts of the registry for the file associations. If you do not have enough permissions, using @code{--w32mode=admin} will not succeed. +@item @strong{--fileassocmode=[1|2]} +@anchor{tlmgr @strong{--fileassocmode=[1|2]}} + @code{--fileassocmode} specifies the action for file associations. If it is set to 1 (the default), only new associations are added; if it is set to 2, all associations are set to the TeX Live programs. (See also @code{option fileassocs}.) +@item @strong{--all} +@anchor{tlmgr @strong{--all} 1} + +Carry out the postactions for all packages + +@end table + +@end table + @node tlmgr print-platform @appendixsubsec print-platform @@ -972,64 +1158,40 @@ Print the TeX Live identifier for the detected platform (hardware/operating system) combination to standard output, and exit. @code{--print-arch} is a synonym. -@node tlmgr restore [--backupdir @emph{dir}] [--all | @emph{pkg} [@emph{rev}]] -@appendixsubsec restore [--backupdir @emph{dir}] [--all | @emph{pkg} [@emph{rev}]] - -Restore a package from a previously-made backup. - -If @code{--all} is given, try to restore the latest revision of all -package backups found in the backup directory. - -Otherwise, if neither @emph{pkg} nor @emph{rev} are given, list the available backup -revisions for all packages. +@node tlmgr print-platform-info +@appendixsubsec print-platform-info -With @emph{pkg} given but no @emph{rev}, list all available backup revisions of -@emph{pkg}. +Print the TeX Live platform identifier, TL platform long name, and +original output from guess. -When listing available packages tlmgr shows the revision and in -parenthesis the creation time if available (in format yyyy-mm-dd hh:mm). +@node tlmgr remove [@emph{option}...] @emph{pkg}... +@appendixsubsec remove [@emph{option}...] @emph{pkg}... -With both @emph{pkg} and @emph{rev}, tries to restore the package from the -specified backup. - -Options: +Remove each @emph{pkg} specified. Removing a collection removes all package +dependencies (unless @code{--no-depends} is specified), but not any +collection dependencies of that collection. However, when removing a +package, dependencies are never removed. Options: @table @asis @item @strong{--all} -@anchor{tlmgr @strong{--all} 1} +@anchor{tlmgr @strong{--all} 2} -Try to restore the latest revision of all package backups found in the -backup directory. Additional non-option arguments (like @emph{pkg}) are not -allowed. +Uninstalls all of TeX Live, asking for confirmation unless @code{--force} is +also specified. + +@item @strong{--backup} +@anchor{tlmgr @strong{--backup}} @item @strong{--backupdir} @emph{directory} @anchor{tlmgr @strong{--backupdir} @emph{directory} 1} -Specify the directory where the backups are to be found. If not given it -will be taken from the configuration setting in the TLPDB. - -@item @strong{--dry-run} -@anchor{tlmgr @strong{--dry-run} 3} - -Nothing is actually restored; instead, the actions to be performed are -written to the terminal. +These options behave just as with the @ref{tlmgr update +[@emph{option}...] [...], update,, update} action (q.v.), except they apply to making +backups of packages before they are removed. The default is to make +such a backup, that is, to save a copy of packages before removal. -@item @strong{--force} -@anchor{tlmgr @strong{--force} 1} +The @ref{tlmgr restore,, restore} action explains how to restore from a backup. -Don't ask questions. - -@end table - -@node tlmgr remove [@emph{option}]... @emph{pkg}... -@appendixsubsec remove [@emph{option}]... @emph{pkg}... - -Remove each @emph{pkg} specified. Removing a collection removes all package -dependencies (unless @code{--no-depends} is specified), but not any -collection dependencies of that collection. However, when removing a -package, dependencies are never removed. Options: - -@table @asis @item @strong{--no-depends} @anchor{tlmgr @strong{--no-depends} 1} @@ -1038,10 +1200,10 @@ Do not remove dependent packages. @item @strong{--no-depends-at-all} @anchor{tlmgr @strong{--no-depends-at-all} 1} -See above under @strong{install} (and beware). +See above under @ref{tlmgr install [@emph{option}...] @emph{pkg}..., install, install} (and beware). @item @strong{--force} -@anchor{tlmgr @strong{--force} 2} +@anchor{tlmgr @strong{--force} 1} By default, removal of a package or collection that is a dependency of another collection or scheme is not allowed. With this option, the @@ -1049,11 +1211,11 @@ package will be removed unconditionally. Use with care. A package that has been removed using the @code{--force} option because it is still listed in an installed collection or scheme will not be -updated, and will be mentioned as @strong{forcibly removed} in the output of -@strong{tlmgr update --list}. +updated, and will be mentioned as @code{forcibly removed} in the output of +@code{tlmgr update --list}. @item @strong{--dry-run} -@anchor{tlmgr @strong{--dry-run} 4} +@anchor{tlmgr @strong{--dry-run} 3} Nothing is actually removed; instead, the actions to be performed are written to the terminal. @@ -1079,9 +1241,7 @@ written to the terminal. @item @strong{repository set @emph{path}[#@emph{tag}] [@emph{path}[#@emph{tag}] ...]} @anchor{tlmgr @strong{repository set @emph{path}[#@emph{tag}] [@emph{path}[#@emph{tag}] ...]}} -This action manages the list of repositories. See @ref{tlmgr MULTIPLE -REPOSITORIES,, MULTIPLE -REPOSITORIES} below for detailed explanations. +This action manages the list of repositories. See @ref{,,, MULTIPLE_REPOSITORIES} below for detailed explanations. The first form (@code{list}) lists all configured repositories and the respective tags if set. If a path, url, or tag is given after the @@ -1102,43 +1262,100 @@ otherwise, all operations will fail! @end table -@node tlmgr search [@emph{option}...] @emph{what} -@appendixsubsec search [@emph{option}...] @emph{what} +@node tlmgr restore +@appendixsubsec restore -@menu -* tlmgr search [@emph{option}...] --file @emph{what}:: -* tlmgr search [@emph{option}...] --taxonomy @emph{what}:: -* tlmgr search [@emph{option}...] --keyword @emph{what}:: -* tlmgr search [@emph{option}...] --functionality @emph{what}:: -* tlmgr search [@emph{option}...] --characterization @emph{what}:: -* tlmgr search [@emph{option}...] --all @emph{what}:: -@end menu +@table @asis +@item @strong{restore [@emph{option}...] @emph{pkg} [@emph{rev}]} +@anchor{tlmgr @strong{restore [@emph{option}...] @emph{pkg} [@emph{rev}]}} -@node tlmgr search [@emph{option}...] --file @emph{what} -@appendixsubsubsec search [@emph{option}...] --file @emph{what} +@item @strong{restore [@emph{option}...] --all} +@anchor{tlmgr @strong{restore [@emph{option}...] --all}} -@node tlmgr search [@emph{option}...] --taxonomy @emph{what} -@appendixsubsubsec search [@emph{option}...] --taxonomy @emph{what} +Restore a package from a previously-made backup. -@node tlmgr search [@emph{option}...] --keyword @emph{what} -@appendixsubsubsec search [@emph{option}...] --keyword @emph{what} +If @code{--all} is given, try to restore the latest revision of all +package backups found in the backup directory. -@node tlmgr search [@emph{option}...] --functionality @emph{what} -@appendixsubsubsec search [@emph{option}...] --functionality @emph{what} +Otherwise, if neither @emph{pkg} nor @emph{rev} are given, list the available +backup revisions for all packages. With @emph{pkg} given but no @emph{rev}, +list all available backup revisions of @emph{pkg}. -@node tlmgr search [@emph{option}...] --characterization @emph{what} -@appendixsubsubsec search [@emph{option}...] --characterization @emph{what} +When listing available packages, @code{tlmgr} shows the revision, and in +parenthesis the creation time if available (in format yyyy-mm-dd hh:mm). + +If (and only if) both @emph{pkg} and a valid revision number @emph{rev} are +specified, try to restore the package from the specified backup. + +Options: -@node tlmgr search [@emph{option}...] --all @emph{what} -@appendixsubsubsec search [@emph{option}...] --all @emph{what} +@table @asis +@item @strong{--all} +@anchor{tlmgr @strong{--all} 3} + +Try to restore the latest revision of all package backups found in the +backup directory. Additional non-option arguments (like @emph{pkg}) are not +allowed. + +@item @strong{--backupdir} @emph{directory} +@anchor{tlmgr @strong{--backupdir} @emph{directory} 2} + +Specify the directory where the backups are to be found. If not given it +will be taken from the configuration setting in the TLPDB. + +@item @strong{--dry-run} +@anchor{tlmgr @strong{--dry-run} 4} + +Nothing is actually restored; instead, the actions to be performed are +written to the terminal. + +@item @strong{--force} +@anchor{tlmgr @strong{--force} 2} + +Don't ask questions. + +@item @strong{--json} +@anchor{tlmgr @strong{--json} 2} + +When listing backups, the option @code{--json} turn on JSON output. +The format is an array of JSON objects (@code{name}, @code{rev}, @code{date}). +For details see @code{tlpkg/doc/JSON-formats.txt}, format definition: @code{TLBACKUPS}. +If both @code{--json} and @code{--data} are given, @code{--json} takes precedence. + +@end table + +@end table + +@node tlmgr search +@appendixsubsec search + +@table @asis +@item @strong{search [@emph{option}...] @emph{what}} +@anchor{tlmgr @strong{search [@emph{option}...] @emph{what}}} + +@item @strong{search [@emph{option}...] --file @emph{what}} +@anchor{tlmgr @strong{search [@emph{option}...] --file @emph{what}}} + +@item @strong{search [@emph{option}...] --all @emph{what}} +@anchor{tlmgr @strong{search [@emph{option}...] --all @emph{what}}} By default, search the names, short descriptions, and long descriptions of all locally installed packages for the argument @emph{what}, interpreted -as a regular expression. +as a (Perl) regular expression. Options: @table @asis +@item @strong{--file} +@anchor{tlmgr @strong{--file} 1} + +List all filenames containing @emph{what}. + +@item @strong{--all} +@anchor{tlmgr @strong{--all} 4} + +Search everything: package names, descriptions and filenames. + @item @strong{--global} @anchor{tlmgr @strong{--global}} @@ -1148,65 +1365,96 @@ local installation. @item @strong{--word} @anchor{tlmgr @strong{--word}} -Restrict the search to match only full words. For example, searching for -@code{table} with this option will not output packages containing the -word @code{tables} (unless they also contain the word @code{table} on its own). +Restrict the search of package names and descriptions (but not +filenames) to match only full words. For example, searching for +@code{table} with this option will not output packages containing the word +@code{tables} (unless they also contain the word @code{table} on its own). -@item @strong{--list} -@anchor{tlmgr @strong{--list} 1} - -If a search for any (or all) taxonomies is done, by specifying one of -the taxonomy options below, then instead of searching for packages, list -the entire corresponding taxonomy (or all of them). See -@ref{tlmgr TAXONOMIES,, TAXONOMIES} below. +@end table @end table -Other search options are selected by specifying one of the following: +@node tlmgr shell +@appendixsubsec shell + +Starts an interactive mode, where tlmgr prompts for commands. This can +be used directly, or for scripting. The first line of output is +@code{protocol} @emph{n}, where @emph{n} is an unsigned number identifying the +protocol version (currently 1). + +In general, tlmgr actions that can be given on the command line +translate to commands in this shell mode. For example, you can say +@code{update --list} to see what would be updated. The TLPDB is loaded the +first time it is needed (not at the beginning), and used for the rest of +the session. + +Besides these actions, a few commands are specific to shell mode: @table @asis -@item @strong{--file} -@anchor{tlmgr @strong{--file} 1} +@item protocol +@anchor{tlmgr protocol} -List all filenames containing @emph{what}. +Print @code{protocol @emph{n}}, the current protocol version. -@item @strong{--taxonomy} -@anchor{tlmgr @strong{--taxonomy} 1} +@item help +@anchor{tlmgr help 1} -@item @strong{--keyword} -@anchor{tlmgr @strong{--keyword} 1} +Print pointers to this documentation. -@item @strong{--functionality} -@anchor{tlmgr @strong{--functionality} 1} +@item version +@anchor{tlmgr version 1} -@item @strong{--characterization} -@anchor{tlmgr @strong{--characterization} 1} +Print tlmgr version information. -Search in the corresponding taxonomy (or all) instead of the package -descriptions. See @ref{tlmgr TAXONOMIES,, TAXONOMIES} below. +@item quit, end, bye, byebye, EOF +@anchor{tlmgr quit@comma{} end@comma{} bye@comma{} byebye@comma{} EOF} -@item @strong{--all} -@anchor{tlmgr @strong{--all} 2} +Exit. -Search for package names, descriptions, and taxonomies, but not files. +@item restart +@anchor{tlmgr restart} -@end table +Restart @code{tlmgr shell} with the original command line; most useful when +developing @code{tlmgr}. -@node tlmgr uninstall -@appendixsubsec uninstall +@item load [local|remote] +@anchor{tlmgr load [local|remote]} -Uninstalls the entire TeX Live installation. Options: +Explicitly load the local or remote, respectively, TLPDB. -@table @asis -@item @strong{--force} -@anchor{tlmgr @strong{--force} 3} +@item save +@anchor{tlmgr save} + +Save the local TLPDB, presumably after other operations have changed it. + +@item get [@emph{var}] =item set [@emph{var} [@emph{val}]] +@anchor{tlmgr get [@emph{var}] =item set [@emph{var} [@emph{val}]]} -Do not ask for confirmation, remove immediately. +Get the value of @emph{var}, or set it to @emph{val}. Possible @emph{var} names: +@code{debug-translation}, @code{machine-readable}, @code{no-execute-actions}, +@code{require-verification}, @code{verify-downloads}, @code{repository}, and +@code{prompt}. All except @code{repository} and @code{prompt} are booleans, taking +values 0 and 1, and behave like the corresponding command line option. +The @code{repository} variable takes a string, and sets the remote +repository location. The @code{prompt} variable takes a string, and sets the +current default prompt. + +If @emph{var} or then @emph{val} is not specified, it is prompted for. @end table -@node tlmgr update [@emph{option}]... [@emph{pkg}]... -@appendixsubsec update [@emph{option}]... [@emph{pkg}]... +@node tlmgr show +@appendixsubsec show + +Synonym for @ref{tlmgr info,, info}. + +@node tlmgr uninstall +@appendixsubsec uninstall + +Synonym for @ref{tlmgr remove [@emph{option}...] @emph{pkg}..., remove, remove}. + +@node tlmgr update [@emph{option}...] [@emph{pkg}...] +@appendixsubsec update [@emph{option}...] [@emph{pkg}...] Updates the packages given as arguments to the latest version available at the installation source. Either @code{--all} or at least one @emph{pkg} name @@ -1214,7 +1462,7 @@ must be specified. Options: @table @asis @item @strong{--all} -@anchor{tlmgr @strong{--all} 3} +@anchor{tlmgr @strong{--all} 5} Update all installed packages except for @code{tlmgr} itself. Thus, if updates to @code{tlmgr} itself are present, this will simply give an error, @@ -1309,8 +1557,11 @@ for auto-installation, auto-removal, or reinstallation of a forcibly removed package, @code{tlmgr} quits with an error message. Excludes are not supported in these circumstances. -@item @strong{--no-auto-remove} [@emph{pkg}]... -@anchor{tlmgr @strong{--no-auto-remove} [@emph{pkg}]...} +This option can also be set permanently in the tlmgr config file with +the key @code{update-exclude}. + +@item @strong{--no-auto-remove} [@emph{pkg}...] +@anchor{tlmgr @strong{--no-auto-remove} [@emph{pkg}...]} By default, @code{tlmgr} tries to remove packages which have disappeared on the server, as described above under @code{--all}. This option prevents @@ -1319,8 +1570,8 @@ given @emph{pkg} names. This can lead to an inconsistent TeX installation, since packages are not infrequently renamed or replaced by their authors. Therefore this is not recommend. -@item @strong{--no-auto-install} [@emph{pkg}]... -@anchor{tlmgr @strong{--no-auto-install} [@emph{pkg}]...} +@item @strong{--no-auto-install} [@emph{pkg}...] +@anchor{tlmgr @strong{--no-auto-install} [@emph{pkg}...]} Under normal circumstances @code{tlmgr} will install packages which are new on the server, as described above under @code{--all}. This option prevents @@ -1359,29 +1610,31 @@ installation with the server's idea of what is available: tlmgr update --reinstall-forcibly-removed --all @end verbatim -@item @strong{--backup} and @strong{--backupdir} @emph{directory} -@anchor{tlmgr @strong{--backup} and @strong{--backupdir} @emph{directory}} +@item @strong{--backup} +@anchor{tlmgr @strong{--backup} 1} + +@item @strong{--backupdir} @emph{directory} +@anchor{tlmgr @strong{--backupdir} @emph{directory} 3} These two options control the creation of backups of packages @emph{before} updating; that is, backup of packages as currently installed. If -neither of these options are given, no backup package will be saved. If -@code{--backupdir} is given and specifies a writable directory then a backup -will be made in that location. If only @code{--backup} is given, then a -backup will be made to the directory previously set via the @code{option} -action (see below). If both are given then a backup will be made to the -specified @emph{directory}. +neither options is given, no backup will made. If @code{--backupdir} is +given and specifies a writable directory then a backup will be made in +that location. If only @code{--backup} is given, then a backup will be made +to the directory previously set via the @ref{tlmgr option,, option} action (see +below). If both are given then a backup will be made to the specified +@emph{directory}. -You can set options via the @code{option} action to automatically create -backups for all packages, and/or keep only a certain number of -backups. Please see the @code{option} action for details. +You can also set options via the @ref{tlmgr option,, option} action to automatically make +backups for all packages, and/or keep only a certain number of backups. @code{tlmgr} always makes a temporary backup when updating packages, in case of download or other failure during an update. In contrast, the purpose -of this @code{--backup} option is to allow you to save a persistent backup -in case the actual @emph{content} of the update causes problems, e.g., -introduces an incompatibility. +of this @code{--backup} option is to save a persistent backup in case the +actual @emph{content} of the update causes problems, e.g., introduces an TeX +incompatibility. -The @code{restore} action explains how to restore from a backup. +The @ref{tlmgr restore,, restore} action explains how to restore from a backup. @item @strong{--no-depends} @anchor{tlmgr @strong{--no-depends} 2} @@ -1393,10 +1646,10 @@ suppresses this behavior. @item @strong{--no-depends-at-all} @anchor{tlmgr @strong{--no-depends-at-all} 2} -See above under @strong{install} (and beware). +See above under @ref{tlmgr install [@emph{option}...] @emph{pkg}..., install, install} (and beware). @item @strong{--force} -@anchor{tlmgr @strong{--force} 4} +@anchor{tlmgr @strong{--force} 3} Force update of normal packages, without updating @code{tlmgr} itself (unless the @code{--self} option is also given). Not recommended. @@ -1409,6 +1662,147 @@ If the package on the server is older than the package already installed (e.g., if the selected mirror is out of date), @code{tlmgr} does not downgrade. Also, packages for uninstalled platforms are not installed. +@code{tlmgr} saves a copy of the @code{texlive.tlpdb} file used for an update +with a suffix representing the repository url, as in +@code{tlpkg/texlive.tlpdb.}@emph{long-hash-string}. These can be useful for +fallback information, but if you don't like them accumulating (e.g., +@code{mirror.ctan.org} resolves to many different hosts, each resulting in +a possibly different hash), it's harmless to delete them. + +@node tlmgr CONFIGURATION FILE FOR TLMGR +@appendixsec CONFIGURATION FILE FOR TLMGR + +There are two configuration files for @code{tlmgr}: One is system-wide in +@code{TEXMFSYSCONFIG/tlmgr/config}, and the other is user-specific in +@code{TEXMFCONFIG/tlmgr/config}. The user-specific one is the default for +the @code{conf tlmgr} action. (Run @code{kpsewhich +-var-value=TEXMFSYSCONFIG} or @code{... TEXMFCONFIG ...} to see the actual +directory names.) + +A few defaults corresponding to command-line options can be set in these +configuration files. In addition, the system-wide file can contain a +directive to restrict the allowed actions. + +In these config files, empty lines and lines starting with # are +ignored. All other lines must look like: + +@verbatim + key = value +@end verbatim + +where the spaces are optional but the @code{=} is required. + +The allowed keys are: + +@table @asis +@item @code{auto-remove}, value 0 or 1 (default 1), same as command-line option. +@anchor{tlmgr @code{auto-remove}@comma{} value 0 or 1 (default 1)@comma{} same as command-line option.} + +@item @code{gui-expertmode}, value 0 or 1 (default 1). This switches between the full GUI and a simplified GUI with only the most common settings. +@anchor{tlmgr @code{gui-expertmode}@comma{} value 0 or 1 (default 1). This switches between the full GUI and a simplified GUI with only the most common settings.} + +@item @code{gui-lang} @emph{llcode}, with a language code value as with the command-line option. +@anchor{tlmgr @code{gui-lang} @emph{llcode}@comma{} with a language code value as with the command-line option.} + +@item @code{no-checksums}, value 0 or 1 (default 0, see below). +@anchor{tlmgr @code{no-checksums}@comma{} value 0 or 1 (default 0@comma{} see below).} + +@item @code{persistent-downloads}, value 0 or 1 (default 1), same as command-line option. +@anchor{tlmgr @code{persistent-downloads}@comma{} value 0 or 1 (default 1)@comma{} same as command-line option.} + +@item @code{require-verification}, value 0 or 1 (default 0), same as command-line option. +@anchor{tlmgr @code{require-verification}@comma{} value 0 or 1 (default 0)@comma{} same as command-line option.} + +@item @code{update-exclude}, value: comma-separated list of packages (no space allowed). Same as the command line option @code{--exclude} for the action @code{update}. +@anchor{tlmgr @code{update-exclude}@comma{} value: comma-separated list of packages (no space allowed). Same as the command line option @code{--exclude} for the action @code{update}.} + +@item @code{verify-downloads}, value 0 or 1 (default 1), same as command-line option. +@anchor{tlmgr @code{verify-downloads}@comma{} value 0 or 1 (default 1)@comma{} same as command-line option.} + +@end table + +The system-wide config file can contain one additional key: + +@table @asis +@item @code{allowed-actions} @emph{action1} [,@emph{action},...] The value is a comma-separated list of @code{tlmgr} actions which are allowed to be executed when @code{tlmgr} is invoked in system mode (that is, without @code{--usermode}). +@anchor{tlmgr @code{allowed-actions} @emph{action1} [@comma{}@emph{action}@comma{}...] The value is a comma-separated list of @code{tlmgr} actions which are allowed to be executed when @code{tlmgr} is invoked in system mode (that is@comma{} without @code{--usermode}).} + +This allows distributors to include the @code{tlmgr} in their packaging, but +allow only a restricted set of actions that do not interfere with their +distro package manager. For native TeX Live installations, it doesn't +make sense to set this. + +@end table + +The @code{no-checksums} key needs more explanation. By default, package +checksums computed and stored on the server (in the TLPDB) are compared +to checksums computed locally after downloading. @code{no-checksums} +disables this process. + +The checksum algorithm is SHA-512. Your system must have one of (looked +for in this order) the Perl @code{Digest::SHA} module, the @code{openssl} +program (@url{http://openssl.org}), the @code{sha512sum} program (from GNU +Coreutils, @url{http://www.gnu.org/software/coreutils}), or finally the +@code{shasum} program (just to support old Macs). If none of these are +available, a warning is issued and @code{tlmgr} proceeds without checking +checksums. (Incidentally, other SHA implementations, such as the pure +Perl and pure Lua modules, are much too slow to be usable in our +context.) @code{no-checksums} avoids the warning. + +@node tlmgr CRYPTOGRAPHIC VERIFICATION +@appendixsec CRYPTOGRAPHIC VERIFICATION + +@code{tlmgr} and @code{install-tl} perform cryptographic verification if +possible. If verification is performed and successful, the programs +report @code{(verified)} after loading the TLPDB; otherwise, they report +@code{(not verified)}. But either way, by default the installation and/or +updates proceed normally. + +If a program named @code{gpg} is available (that is, found in @code{PATH}), by +default cryptographic signatures will be checked: we require the main +repository be signed, but not any additional repositories. If @code{gpg} is +not available, by default signatures are not checked and no verification +is carried out, but @code{tlmgr} still proceeds normally. + +The behavior of the verification can be controlled by the command line +and config file option @code{verify-repo} which takes one of the following +values: @code{none}, @code{main}, or @code{all}. With @code{none}, no verification +whatsoever is attempted. With @code{main} (the default) verification is +required only for the main repository, and only if @code{gpg} is available; +though attempted for all, missing signatures of subsidiary repositories +will not result in an error. Finally, in the case of @code{all}, @code{gpg} +must be available and all repositories need to be signed. + +In all cases, if a signature is checked and fails to verify, an error +is raised. + +Cryptographic verification requires checksum checking (described just +above) to succeed, and a working GnuPG (@code{gpg}) program (see below for +search method). Then, unless cryptographic verification has been +disabled, a signature file (@code{texlive.tlpdb.*.asc}) of the checksum file +is downloaded and the signature verified. The signature is created by +the TeX Live Distribution GPG key 0x06BAB6BC, which in turn is signed by +Karl Berry's key 0x30D155AD and Norbert Preining's key 0x6CACA448. All +of these keys are obtainable from the standard key servers. + +Additional trusted keys can be added using the @code{key} action. + +@menu +* tlmgr Configuration of GnuPG invocation:: +@end menu + +@node tlmgr Configuration of GnuPG invocation +@appendixsubsec Configuration of GnuPG invocation + +The executable used for GnuPG is searched as follows: If the environment +variable @code{TL_GNUPG} is set, it is tested and used; otherwise @code{gpg} is +checked; finally @code{gpg2} is checked. + +Further adaptation of the @code{gpg} invocation can be made using the two +environment variables @code{TL_GNUPGHOME}, which is passed to @code{gpg} as the +value for @code{--homedir}, and @code{TL_GNUPGARGS}, which replaces the default +options @code{--no-secmem-warning --no-permission-warning}. + @node tlmgr USER MODE @appendixsec USER MODE @@ -1435,7 +1829,8 @@ currently not supported, but may be in a future release. Some @code{tlmgr} actions don't need any write permissions and thus work the same in user mode and normal mode. Currently these are: @code{check}, -@code{help}, @code{list}, @code{print-platform}, @code{search}, @code{show}, @code{version}. +@code{help}, @code{list}, @code{print-platform}, @code{print-platform-info}, @code{search}, +@code{show}, @code{version}. On the other hand, most of the actions dealing with package management do need write permissions, and thus behave differently in user mode, as @@ -1464,13 +1859,13 @@ installed into a user tree. Description of changes of actions in user mode: @menu -* tlmgr user mode install:: -* tlmgr user mode backup; restore; remove; update:: -* tlmgr user mode generate; option; paper:: +* tlmgr User mode install:: +* tlmgr User mode backup@comma{} restore@comma{} remove@comma{} update:: +* tlmgr User mode generate@comma{} option@comma{} paper:: @end menu -@node tlmgr user mode install -@appendixsubsec user mode install +@node tlmgr User mode install +@appendixsubsec User mode install In user mode, the @code{install} action checks that the package and all dependencies are all either relocated or already installed in the system @@ -1486,96 +1881,24 @@ collection-context} would install @code{collection-basic} and other collections, while in user mode, @emph{only} the packages mentioned in @code{collection-context} are installed. -@node tlmgr user mode backup; restore; remove; update -@appendixsubsec user mode backup; restore; remove; update +If a package shipping map files is installed in user mode, a backup of +the user's @code{updmap.cfg} in @code{USERTREE/web2c/} is made, and then this file +regenerated from the list of installed packages. + +@node tlmgr User mode backup@comma{} restore@comma{} remove@comma{} update +@appendixsubsec User mode backup, restore, remove, update In user mode, these actions check that all packages to be acted on are installed in the user tree before proceeding; otherwise, they behave just as in normal mode. -@node tlmgr user mode generate; option; paper -@appendixsubsec user mode generate; option; paper +@node tlmgr User mode generate@comma{} option@comma{} paper +@appendixsubsec User mode generate, option, paper In user mode, these actions operate only on the user tree's configuration files and/or @code{texlive.tlpdb}. creates configuration files in user tree -@node tlmgr CONFIGURATION FILE FOR TLMGR -@appendixsec CONFIGURATION FILE FOR TLMGR - -A small subset of the command line options can be set in a config file -for @code{tlmgr} which resides in @code{TEXMFCONFIG/tlmgr/config}. By default, the -config file is in @code{~/.texliveYYYY/texmf-config/tlmgr/config} (replacing -@code{YYYY} with the year of your TeX Live installation). This is @emph{not} -@code{TEXMFSYSVAR}, so that the file is specific to a single user. - -In this file, empty lines and lines starting with # are ignored. All -other lines must look like - -@verbatim - key = value -@end verbatim - -where the allowed keys are @code{gui-expertmode} (value 0 or 1), -@code{persistent-downloads} (value 0 or 1), @code{auto-remove} (value 0 or 1), -and @code{gui-lang} (value like in the command line option). - -@code{persistent-downloads}, @code{gui-lang}, and @code{auto-remove} correspond to -the respective command line options of the same name. @code{gui-expertmode} -switches between the full GUI and a simplified GUI with only the -important and mostly used settings. - -@node tlmgr TAXONOMIES -@appendixsec TAXONOMIES - -tlmgr allows searching and listing of various categorizations, which we -call @emph{taxonomies}, as provided by an enhanced TeX Catalogue (available -for testing at @url{http://az.ctan.org}). This is useful when, for -example, you don't know a specific package name but have an idea of the -functionality you need; or when you want to see all packages relating to -a given area. - -There are three different taxonomies, specified by the following -options: - -@table @asis -@item @code{--keyword} -@anchor{tlmgr @code{--keyword} 2} - -The keywords, as specified at @url{http://az.ctan.org/keyword}. - -@item @code{--functionality} -@anchor{tlmgr @code{--functionality} 2} - -The ``by-topic'' categorization created by J\"urgen Fenn, as specified -at @url{http://az.ctan.org/characterization/by-function}. - -@item @code{--characterization} -@anchor{tlmgr @code{--characterization} 2} - -Both the primary and secondary functionalities, as specified at -@url{http://az.ctan.org/characterization/choose_dimen}. - -@item @code{--taxonomy} -@anchor{tlmgr @code{--taxonomy} 2} - -Operate on all the taxonomies. - -@end table - -The taxonomies are updated nightly and stored within TeX Live, so -Internet access is not required to search them. - -Examples: - -@verbatim - tlmgr search --taxonomy exercise # check all taxonomies for "exercise" - tlmgr search --taxonomy --word table # check for "table" on its own - tlmgr search --list --keyword # dump entire keyword taxonomy - tlmgr show --taxonomy pdftex # show pdftex package information, - # including all taxonomy entries -@end verbatim - @node tlmgr MULTIPLE REPOSITORIES @appendixsec MULTIPLE REPOSITORIES @@ -1589,11 +1912,11 @@ The simplest and most reliable method is to temporarily set the installation source to any repository (with the @code{-repository} or @code{option repository} command line options), and perform your operations. -When you are using multiple repositories over a sustained time, however, -explicitly switching between them becomes inconvenient. Thus, it's -possible to tell @code{tlmgr} about additional repositories you want to use. -The basic command is @code{tlmgr repository add}. The rest of this section -explains further. +When you are using multiple repositories over a sustained length of +time, however, explicitly switching between them becomes inconvenient. +Thus, it's possible to tell @code{tlmgr} about additional repositories you +want to use. The basic command is @code{tlmgr repository add}. The rest of +this section explains further. When using multiple repositories, one of them has to be set as the main repository, which distributes most of the installed packages. When you @@ -1692,15 +2015,17 @@ A summary of the @code{tlmgr pinning} actions is given above. @node tlmgr GUI FOR TLMGR @appendixsec GUI FOR TLMGR -The graphical user interface for @code{tlmgr} needs Perl/Tk to be installed. -For Windows the necessary modules are shipped within TeX Live, for all -other (i.e., Unix-based) systems Perl/Tk (as well as Perl of course) has -to be installed. @url{http://tug.org/texlive/distro.html#perltk} has a -list of invocations for some distros. +The graphical user interface for @code{tlmgr} requires Perl/Tk +@url{http://search.cpan.org/search?query=perl%2Ftk}. For Windows the +necessary modules are shipped within TeX Live, for all other (i.e., +Unix-based) systems Perl/Tk (as well as Perl of course) has to be +installed outside of TL. @url{http://tug.org/texlive/distro.html#perltk} +has a list of invocations for some distros. -When started with @code{tlmgr gui} the graphical user interface will be -shown. The main window contains a menu bar, the main display, and a -status area where messages normally shown on the console are displayed. +The GUI is started with the invocation @code{tlmgr gui}; assuming Tk is +loadable, the graphical user interface will be shown. The main window +contains a menu bar, the main display, and a status area where messages +normally shown on the console are displayed. Within the main display there are three main parts: the @code{Display configuration} area, the list of packages, and the action buttons. @@ -1715,6 +2040,7 @@ information about what is going on. @menu * tlmgr Main display:: * tlmgr Menu bar:: +* tlmgr GUI options:: @end menu @node tlmgr Main display @@ -1750,10 +2076,9 @@ above. @item Match @anchor{tlmgr Match} -Select packages matching for a specific pattern. By default, this uses -the same algorithm as @code{tlmgr search}, i.e., searches everything: -descriptions, taxonomies, and/or filenames. You can also select any -subset for searching. +Select packages matching for a specific pattern. By default, this +searches both descriptions and filenames. You can also select a subset +for searching. @item Selection @anchor{tlmgr Selection} @@ -1916,6 +2241,47 @@ Provides access to the TeX Live manual (also on the web at @end table +@node tlmgr GUI options +@appendixsubsec GUI options + +Some generic Perl/Tk options can be specified with @code{tlmgr gui} to +control the display: + +@table @asis +@item @code{-background} @emph{color} +@anchor{tlmgr @code{-background} @emph{color}} + +Set background color. + +@item @code{-font "} @emph{fontname} @emph{fontsize} @code{"} +@anchor{tlmgr @code{-font "} @emph{fontname} @emph{fontsize} @code{"}} + +Set font, e.g., @code{tlmgr gui -font "helvetica 18"}. The argument to +@code{-font} must be quoted, i.e., passed as a single string. + +@item @code{-foreground} @emph{color} +@anchor{tlmgr @code{-foreground} @emph{color}} + +Set foreground color. + +@item @code{-geometry} @emph{geomspec} +@anchor{tlmgr @code{-geometry} @emph{geomspec}} + +Set the X geometry, e.g., @code{tlmgr gui -geometry 1024x512-0+0} creates +the window of (approximately) the given size in the upper-right corner +of the display. + +@item @code{-xrm} @emph{xresource} +@anchor{tlmgr @code{-xrm} @emph{xresource}} + +Pass the arbitrary X resource string @emph{xresource}. + +@end table + +A few other obscure options are recognized but not mentioned here. See +the Perl/Tk documentation (@url{http://search.cpan.org/perldoc?Tk}) for the +complete list, and any X documentation for general information. + @node tlmgr MACHINE-READABLE OUTPUT @appendixsec MACHINE-READABLE OUTPUT @@ -1926,9 +2292,9 @@ written to stdout). The idea is that a program can get all the information it needs by reading stdout. Currently this option only applies to the -@ref{tlmgr update [@emph{option}]... [@emph{pkg}]..., update, update}, -@ref{tlmgr install [@emph{option}]... @emph{pkg}..., install, install}, and -@ref{tlmgr option,, option} actions. +@ref{tlmgr update [@emph{option}...] [@emph{pkg}...], update, update}, +@ref{tlmgr install [@emph{option}...] @emph{pkg}..., install, install}, and +@ref{tlmgr option,, option} actions. @menu * tlmgr Machine-readable @code{update} and @code{install} output:: @@ -2094,3 +2460,5 @@ This script and its documentation were written for the TeX Live distribution (@url{http://tug.org/texlive}) and both are licensed under the GNU General Public License Version 2 or later. +$Id: tlmgr.pl 47303 2018-04-05 17:52:22Z karl $ + diff --git a/Build/source/doc/tlbuild.info b/Build/source/doc/tlbuild.info index 786881058df..dc2bb104274 100644 --- a/Build/source/doc/tlbuild.info +++ b/Build/source/doc/tlbuild.info @@ -47,7 +47,6 @@ For an overview of this manual, *note Introduction::. * Installing:: How and where installation happens (or not). * Layout and infrastructure:: Autoconf macros, etc., in detail. * Configure options:: List of all configure options. -* Cross compilation:: Building on host X for target Y. * Coding conventions:: Conventions to follow. * Continuous integration:: Automated build testing. * install-tl:: The TeX Live installer. @@ -60,8 +59,7 @@ File: tlbuild.info, Node: Introduction, Next: Overview of build system, Prev: 1 Introduction ************** -This manual (dated February 2018) corresponds to the TeX Live 2018 -release. +This manual (dated April 2018) corresponds to the TeX Live 2018 release. This manual is aimed at system installers and programmers, and focuses on how to configure, build, and develop the TeX Live (TL) @@ -245,6 +243,7 @@ Building in the source directory itself is not supported (sorry). * Build in parallel:: Simultaneous 'make' processes. * Build distribution:: Making a distribution tarball. * Build one package:: Example of working on just one program. +* Cross compilation:: Building on host X for target Y. File: tlbuild.info, Node: Build iteration, Next: Build problems, Up: Building @@ -313,7 +312,7 @@ Makefiles, but the result is not a complete or even usable TeX system, since all the support files are lacking; *note Installing::. -File: tlbuild.info, Node: Build one package, Prev: Build distribution, Up: Building +File: tlbuild.info, Node: Build one package, Next: Cross compilation, Prev: Build distribution, Up: Building 4.5 Build one package ===================== @@ -391,6 +390,124 @@ specify the compilers to be used with the environment variables 'CC', 'CXX', and 'OBJCXX'. +File: tlbuild.info, Node: Cross compilation, Prev: Build one package, Up: Building + +4.6 Cross compilation +===================== + +In a cross compilation a "build" system is used to create binaries to be +executed on a "host" system with different hardware and/or operating +system. + + In simple cases, the build system can execute binaries for the host +system. This typically occurs for bi-arch systems where, e.g., +'i386-linux' binaries can run on 'x86_64-linux' systems and 'win32' +binaries can run on 'win64' systems. Although sometimes called "native +cross", technically this is not cross compilation at all. In most such +cases it suffices to specify suitable compiler flags. It might be +useful to add the configure option '--build=HOST' to get the correct +canonical host name, but note that this should _not_ be '--host=HOST' +(*note (autoconf)Hosts and Cross-Compilation::). + + In order to build, e.g., 32-bit binaries with 'clang' on a 64-bit +MacOSX system one could use: + + TL_BUILD_ENV="CC='clang -arch i386' \ + CXX='clang++ -arch i386' \ + OBJCXX='clang++ -arch i386'" \ + ./Build --build=i386-apple-darwin + +* Menu: + +* Cross configuring:: Configuring for cross compilation. +* Cross problems:: Cross compilation problems. + + +File: tlbuild.info, Node: Cross configuring, Next: Cross problems, Up: Cross compilation + +4.6.1 Cross configuring +----------------------- + +In a standard cross compilation, binaries for the host system cannot +execute on the build system and it is necessary to specify the configure +options '--host=HOST' and '--build=BUILD' with two different values. + + Building binaries requires suitable "cross" tools, e.g., compiler, +linker, and archiver, and perhaps a "cross" version of 'pkg-config' and +similar to locate host system libraries. Autoconf expects that these +cross tools are given by their usual variables or found under their +usual name prefixed with 'HOST-'. Here a list of such tools and +corresponding variables: + + ar AR + freetype-config FT2_CONFIG + g++ CXX + gcc CC + icu-config ICU_CONFIG + objdump OBJDUMP + pkg-config PKG_CONFIG + ranlib RANLIB + strip STRIP + +In order to, e.g., build 'mingw32' binaries on 'x86_64-linux' with a +cross compiler found as 'i386-pc-mingw32-gcc' one would specify + + --host=i386-pc-mingw32 --build=x86_64-linux-gnu + +or perhaps + + --host=mingw32 --build=x86_64-linux CC=i386-pc-mingw32-gcc + +but this latter, especially, might require adding 'CXX' and others. + + Configure arguments such as 'CFLAGS=...' refer to the cross compiler. +If necessary, you can specify compilers and flags for the few auxiliary +C and C++ programs required for the build process as configure arguments + + BUILDCC=... + BUILDCPPFLAGS=... + BUILDCFLAGS=... + BUILDCXX=... + BUILDCXXFLAGS=... + BUILDLDFLAGS=... + + +File: tlbuild.info, Node: Cross problems, Prev: Cross configuring, Up: Cross compilation + +4.6.2 Cross problems +-------------------- + +The fact that binaries for the host system cannot be executed on the +build system causes some problems. + + One problem is that configure tests using 'AC_RUN_IFELSE' can compile +and link the test program but cannot execute it. Such tests should be +avoided if possible and otherwise must supply a pessimistic test result. + + Another problem arises if the build process must execute some +(auxiliary or installable) programs. Auxiliary programs can be placed +into a subdirectory that is configured natively as is done for +'texk/web2c/web2c', 'texk/dvipsk/squeeze', and 'texk/xdvik/squeeze'. +The module 'libs/freetype2' uses the value of 'CC_BUILD', 'BUILD-gcc', +'gcc', or 'cc' as the compiler for the auxiliary program. + + The situation for installable programs needed by the build process is +somewhat different. A rather expensive possibility, chosen for the ICU +libraries in module 'libs/icu', is to first compile natively for the +build system and in a second step to use these (uninstalled) programs +during the cross compilation. + + This approach would also be possible for the tools such as 'tangle' +used in the module 'texk/web2c' to build the WEB programs, but that +would require first building a native 'kpathsea' library. To avoid this +complication, cross compilation of the WEB or CWEB programs requires +sufficiently recent installed versions of 'tangle', 'ctangle', +'otangle', and 'tie'. + + Building 'xindy' requires running the host system 'clisp' binary, +thus cross compilation is not possible. + + File: tlbuild.info, Node: Installing, Next: Layout and infrastructure, Prev: Building, Up: Top 5 Installing @@ -1245,7 +1362,7 @@ library (see the previous section), with these modifications: * The fragment 'ac/withenable.ac' must use 'KPSE_WITH_TEXLIB'. -File: tlbuild.info, Node: Configure options, Next: Cross compilation, Prev: Layout and infrastructure, Up: Top +File: tlbuild.info, Node: Configure options, Next: Coding conventions, Prev: Layout and infrastructure, Up: Top 7 Configure options ******************* @@ -1792,127 +1909,9 @@ but that might not work for cross compilations. commands used, e.g., to build the 'xindy' documentation. -File: tlbuild.info, Node: Cross compilation, Next: Coding conventions, Prev: Configure options, Up: Top - -8 Cross compilation -******************* - -In a cross compilation a "build" system is used to create binaries to be -executed on a "host" system with different hardware and/or operating -system. +File: tlbuild.info, Node: Coding conventions, Next: Continuous integration, Prev: Configure options, Up: Top - In simple cases, the build system can execute binaries for the host -system. This typically occurs for bi-arch systems where, e.g., -'i386-linux' binaries can run on 'x86_64-linux' systems and 'win32' -binaries can run on 'win64' systems. Although sometimes called "native -cross", technically this is not cross compilation at all. In most such -cases it suffices to specify suitable compiler flags. It might be -useful to add the configure option '--build=HOST' to get the correct -canonical host name, but note that this should _not_ be '--host=HOST' -(*note (autoconf)Hosts and Cross-Compilation::). - - In order to build, e.g., 32-bit binaries with 'clang' on a 64-bit -MacOSX system one could use: - - TL_BUILD_ENV="CC='clang -arch i386' \ - CXX='clang++ -arch i386' \ - OBJCXX='clang++ -arch i386'" \ - ./Build --build=i386-apple-darwin - -* Menu: - -* Cross configuring:: Configuring for cross compilation. -* Cross problems:: Cross compilation problems. - - -File: tlbuild.info, Node: Cross configuring, Next: Cross problems, Up: Cross compilation - -8.1 Cross configuring -===================== - -In a standard cross compilation, binaries for the host system cannot -execute on the build system and it is necessary to specify the configure -options '--host=HOST' and '--build=BUILD' with two different values. - - Building binaries requires suitable "cross" tools, e.g., compiler, -linker, and archiver, and perhaps a "cross" version of 'pkg-config' and -similar to locate host system libraries. Autoconf expects that these -cross tools are given by their usual variables or found under their -usual name prefixed with 'HOST-'. Here a list of such tools and -corresponding variables: - - ar AR - freetype-config FT2_CONFIG - g++ CXX - gcc CC - icu-config ICU_CONFIG - objdump OBJDUMP - pkg-config PKG_CONFIG - ranlib RANLIB - strip STRIP - -In order to, e.g., build 'mingw32' binaries on 'x86_64-linux' with a -cross compiler found as 'i386-pc-mingw32-gcc' one would specify - - --host=i386-pc-mingw32 --build=x86_64-linux-gnu - -or perhaps - - --host=mingw32 --build=x86_64-linux CC=i386-pc-mingw32-gcc - -but this latter, especially, might require adding 'CXX' and others. - - Configure arguments such as 'CFLAGS=...' refer to the cross compiler. -If necessary, you can specify compilers and flags for the few auxiliary -C and C++ programs required for the build process as configure arguments - - BUILDCC=... - BUILDCPPFLAGS=... - BUILDCFLAGS=... - BUILDCXX=... - BUILDCXXFLAGS=... - BUILDLDFLAGS=... - - -File: tlbuild.info, Node: Cross problems, Prev: Cross configuring, Up: Cross compilation - -8.2 Cross problems -================== - -The fact that binaries for the host system cannot be executed on the -build system causes some problems. - - One problem is that configure tests using 'AC_RUN_IFELSE' can compile -and link the test program but cannot execute it. Such tests should be -avoided if possible and otherwise must supply a pessimistic test result. - - Another problem arises if the build process must execute some -(auxiliary or installable) programs. Auxiliary programs can be placed -into a subdirectory that is configured natively as is done for -'texk/web2c/web2c', 'texk/dvipsk/squeeze', and 'texk/xdvik/squeeze'. -The module 'libs/freetype2' uses the value of 'CC_BUILD', 'BUILD-gcc', -'gcc', or 'cc' as the compiler for the auxiliary program. - - The situation for installable programs needed by the build process is -somewhat different. A rather expensive possibility, chosen for the ICU -libraries in module 'libs/icu', is to first compile natively for the -build system and in a second step to use these (uninstalled) programs -during the cross compilation. - - This approach would also be possible for the tools such as 'tangle' -used in the module 'texk/web2c' to build the WEB programs, but that -would require first building a native 'kpathsea' library. To avoid this -complication, cross compilation of the WEB or CWEB programs requires -sufficiently recent installed versions of 'tangle', 'ctangle', -'otangle', and 'tie'. - - Building 'xindy' requires running the host system 'clisp' binary, -thus cross compilation is not possible. - - -File: tlbuild.info, Node: Coding conventions, Next: Continuous integration, Prev: Cross compilation, Up: Top - -9 Coding conventions +8 Coding conventions ******************** Ideally, building all of TeX Live with '--enable-compiler-warnings=max' @@ -1932,7 +1931,7 @@ maintainers don't want to accept patches. File: tlbuild.info, Node: Declarations and definitions, Next: Const, Up: Coding conventions -9.1 Declarations and definitions +8.1 Declarations and definitions ================================ C standards @@ -1990,7 +1989,7 @@ in exactly one header and instantiated in exactly one file. File: tlbuild.info, Node: Const, Prev: Declarations and definitions, Up: Coding conventions -9.2 Const +8.2 Const ========= The 'const' feature of C is valuable, but easy to mis-use. @@ -2034,8 +2033,8 @@ modification of quantities supposed to be constant. File: tlbuild.info, Node: Continuous integration, Next: install-tl, Prev: Coding conventions, Up: Top -10 Continuous integration -************************* +9 Continuous integration +************************ Overview: the sources of TeX Live are subjected to continuous integration testing on Travis-CI @@ -2045,8 +2044,17 @@ of the sources that is pushed to Github updated (currently) at 30 minute intervals, and only the last commit pushed is tested on Travis-CI. -Transfer from Subversion to Github ----------------------------------- +* Menu: + +* Transfer from Subversion to Github:: +* Automatic update of the Git mirror:: +* CI testing on Travis-CI:: + + +File: tlbuild.info, Node: Transfer from Subversion to Github, Next: Automatic update of the Git mirror, Up: Continuous integration + +9.1 Transfer from Subversion to Github +====================================== git-svn (<https://git-scm.com/docs/git-svn>) is used to check out the subtree 'Build/source' of the Subversion repository. The author index @@ -2087,8 +2095,11 @@ their branches to the Github repository, but all updates need to come from the local 'master' (not the one on Github) to Subversion, back to 'master' on 'texlive.info', and from there to Github. -Automatic update of the Git mirror ----------------------------------- + +File: tlbuild.info, Node: Automatic update of the Git mirror, Next: CI testing on Travis-CI, Prev: Transfer from Subversion to Github, Up: Continuous integration + +9.2 Automatic update of the Git mirror +====================================== _admin_ has installed a cron job on 'texlive.info' running every 30 minute which essentially runs 'git svn rebase' and 'git push' in the @@ -2096,8 +2107,11 @@ minute which essentially runs 'git svn rebase' and 'git push' in the from the Subversion repository and updates the 'master' branch with them, the second one pushes changes (if available) to Github. -CI testing on Travis-CI ------------------------ + +File: tlbuild.info, Node: CI testing on Travis-CI, Prev: Automatic update of the Git mirror, Up: Continuous integration + +9.3 CI testing on Travis-CI +=========================== The 'source' tree of TeX Live contains a top-level file '.travis.yml' which controls the automatic testing on Travis-CI. _admin_ has @@ -2122,6 +2136,7 @@ Appendix A install-tl * install-tl DESCRIPTION:: * install-tl REFERENCES:: * install-tl OPTIONS:: +* install-tl PROFILES:: * install-tl ENVIRONMENT VARIABLES:: * install-tl AUTHORS AND COPYRIGHT:: @@ -2141,7 +2156,9 @@ A.2 SYNOPSIS install-tl [_option_]... - install-tl.bat [_option_]... + install-tl-windows.bat [_option_]... + + install-tl-advanced.bat [_option_]... File: tlbuild.info, Node: install-tl DESCRIPTION, Next: install-tl REFERENCES, Prev: install-tl SYNOPSIS, Up: install-tl @@ -2150,21 +2167,22 @@ A.3 DESCRIPTION =============== This installer creates a runnable TeX Live installation from various -media, including over the network. The installer works across all -platforms supported by TeX Live. For information on initially -downloading the TeX Live, see <http://tug.org/texlive/acquire.html>. +media, including over the network, from local hard disk, a DVD, etc. +The installer works across all platforms supported by TeX Live. For +information on initially downloading the TeX Live, see +<http://tug.org/texlive/acquire.html>. - The basic idea of TeX Live installation is to choose one of the -top-level _schemes_, each of which is defined as a different set of + The basic idea of TeX Live installation is for you to choose one of +the top-level _schemes_, each of which is defined as a different set of _collections_ and _packages_, where a collection is a set of packages, and a package is what contains actual files. Within the installer, you can choose a scheme, and further customize the set of collections to install, but not the set of the packages. To -do that, use 'tlmgr' (reference below) after the initial installation is -completely. +work at the package level, use 'tlmgr' (reference just below) after the +initial installation is complete. - The default is 'scheme-full', to install everything, and this is + The default is 'scheme-full', which installs everything, and this is highly recommended. @@ -2177,14 +2195,14 @@ Post-installation configuration, package updates, and much more, are handled through *tlmgr*(1), the TeX Live Manager (<http://tug.org/texlive/tlmgr.html>). - The most up-to-date version of this documentation is on the Internet -at <http://tug.org/texlive/doc/install-tl.html>. + The most up-to-date version of this installer documentation is on the +Internet at <http://tug.org/texlive/doc/install-tl.html>. For the full documentation of TeX Live, see <http://tug.org/texlive/doc>. -File: tlbuild.info, Node: install-tl OPTIONS, Next: install-tl ENVIRONMENT VARIABLES, Prev: install-tl REFERENCES, Up: install-tl +File: tlbuild.info, Node: install-tl OPTIONS, Next: install-tl PROFILES, Prev: install-tl REFERENCES, Up: install-tl A.5 OPTIONS =========== @@ -2195,7 +2213,7 @@ by either a space or '='. *-gui* [[=]_module_] - If no _module_ is given starts the 'perltk' (see below) GUI + If no _module_ is given, starts the 'perltk' (see below) GUI installer. If _module_ is given loads the given installer module. Currently @@ -2218,7 +2236,7 @@ by either a space or '='. 'install-tl-advanced.bat'. The 'perltk' and 'wizard' modules, and thus also when calling with - a bare '-gui' (without _module_), requires the Perl/Tk module + bare '-gui' (with no _module_), require the Perl/Tk module (<http://tug.org/texlive/distro.html#perltk>); if Perl/Tk is not available, installation continues in text mode. @@ -2243,8 +2261,9 @@ by either a space or '='. Specify the package repository to be used as the source of the installation, either a local directory via '/path/to/directory' or - a 'file:/' url, or a network location via a 'http://' or 'ftp://' - url. (No other protocols are supported.) + a 'file:/' url, or a network location via a 'http://', 'https://', + or 'ftp://' url. (No other protocols are supported, and 'https://' + may not work on all platforms.) The default is to pick a mirror automatically, using <http://mirror.ctan.org/systems/texlive/tlnet>; the chosen mirror @@ -2259,9 +2278,9 @@ by either a space or '='. -repository http://ctan.example.org/its/ctan/dir/systems/texlive/tlnet - Of course a real hostname and its particular top-level CTAN path - have to be specified. The list of CTAN mirrors is available at - <http://ctan.org/mirrors>. + Of course a real hostname and its particular top-level CTAN + directory have to be specified. The list of CTAN mirrors is + available at <http://ctan.org/mirrors>. If the repository is local, the installation type (compressed or live) is automatically determined, by checking for the presence of @@ -2292,9 +2311,9 @@ by either a space or '='. *-all-options* Normally options not relevant to the current platform are not shown - (i.e., when running on Unix, Windows-specific options are omitted). - Giving this command line option allows configuring settings in the - final 'texlive.tlpdb' that do not have any immediate effect. + (e.g., when running on Unix, Windows-specific options are omitted). + Giving this command line option allows configuring such "foreign" + settings. *-custom-bin* _path_ @@ -2305,9 +2324,12 @@ by either a space or '='. installation will continue as usual, but at the end all files from _path_ are copied over to 'bin/custom/' under your installation directory and this 'bin/custom/' directory is what will be added to - the path for the post-install actions. (By the way, for - information on building TeX Live, see - <http://tug.org/texlive/build.html>). + the path for the post-install actions. To install multiple custom + binary sets, manully rename 'custom' before doing each. + + For more information on custom binaries, see + <http://tug.org/texlive/custom-bin.html>. For general information + on building TeX Live, see <http://tug.org/texlive/build.html>. *-debug-translation* @@ -2324,7 +2346,7 @@ by either a space or '='. *-help*, *-help*, *-?* - Display this help and exit (on the web via + Display this help and exit. (This help is on the web at <http://tug.org/texlive/doc/install-tl.html>). Sometimes the 'perldoc' and/or 'PAGER' programs on the system have problems, possibly resulting in control characters being literally output. @@ -2342,6 +2364,12 @@ by either a space or '='. option is not available via the installer interfaces. USE AT YOUR OWN RISK. +*-init-from-profile* _profile_file_ + + Similar to *-profile* (see *note PROFILES: install-tl PROFILES. + below), but only initializes the installation configuration from + _profile_file_ and then starts the interactive session. + *-logfile* _file_ Write both all messages (informational, debugging, warnings) to @@ -2353,7 +2381,7 @@ by either a space or '='. *-no-cls* - (only for text mode installer) do not clear the screen when + For the text mode installer only: do not clear the screen when entering a new menu (for debugging purposes). *-non-admin* @@ -2375,7 +2403,15 @@ by either a space or '='. This option is turned on by default, and the installation program will fall back to using 'wget' if this is not possible. To disable usage of LWP and persistent connections, use - '--no-persistent-downloads'. + '-no-persistent-downloads'. + +*-no-verify-downloads* + + By default, if a GnuPG 'gpg' binary is found in PATH, downloads are + verified against a cryptographic signature. This option disables + such verification. The full description is in the Crytographic + Verification section of the 'tlmgr' documentation, e.g., + <http://tug.org/texlive/doc/tlmgr.html#CRYPTOGRAPHIC-VERIFICATION> *-portable* @@ -2388,33 +2424,11 @@ by either a space or '='. (hardware/operating system) combination to standard output, and exit. '-print-arch' is a synonym. -*-profile* _profile_ - - Load the file _profile_ and do the installation with no user - interaction, that is, a batch (unattended) install. - - A _profile_ file contains all the values needed to perform an - installation. After a normal installation has finished, a profile - for that exact installation is written to the file - DEST/tlpkg/texlive.profile. That file can be given as the argument - to '-profile' to redo the exact same installation on a different - system, for example. Alternatively, you can use a custom profile, - most easily created by starting from a generated one and changing - values, or an empty file, which will take all the defaults. - - Normally a profile has to specify the value '1' for each collection - to be installed, even if the scheme is specified. This follows - from the logic of the installer in that you can first select a - scheme and then change the collections being installed. But for - convenience there is an exception to this within profiles: If the - profile contains a variable for 'selected_scheme' and _no_ - collection variables at all are defined in the profile, then the - collections which the specified scheme requires are installed. - - Thus, a line 'selected_scheme scheme-medium' together with the - definitions of the installation directories ('TEXDIR', 'TEXMFHOME', - 'TEXMFLOCAL', 'TEXMFSYSCONFIG', 'TEXMFSYSVAR') suffices to install - the medium scheme with all default options. +*-profile* _profile_file_ + + Load _profile_file_ and do the installation with no user + interaction, that is, a batch (unattended) install. See *note + PROFILES: install-tl PROFILES. below. *-q* @@ -2432,8 +2446,8 @@ by either a space or '='. *-v* - Include verbose debugging messages; repeat for maximum debugging, - as in '-v -v'. (Further repeats are accepted but ignored.) + Include verbose debugging messages; repeat for maximum debugging: + '-v -v'. (Further repeats are accepted but ignored.) *-version*, *-version* @@ -2441,13 +2455,143 @@ by either a space or '='. the revisions of the used modules are reported, too. -File: tlbuild.info, Node: install-tl ENVIRONMENT VARIABLES, Next: install-tl AUTHORS AND COPYRIGHT, Prev: install-tl OPTIONS, Up: install-tl +File: tlbuild.info, Node: install-tl PROFILES, Next: install-tl ENVIRONMENT VARIABLES, Prev: install-tl OPTIONS, Up: install-tl + +A.6 PROFILES +============ + +A _profile_ file contains all the values needed to perform an +installation. After a normal installation has finished, a profile for +that exact installation is written to the file 'tlpkg/texlive.profile'. +In addition, from the text menu one can select 'P' to save the current +setup as a profile at any time. Such a profile file can be given as the +argument to '-profile', for example to redo the exact same installation +on a different system. Alternatively, you can use a custom profile, +most easily created by starting from a generated one and changing +values, or an empty file, which will take all the defaults. + + Within a profile file, each line consists of + + _variable_ [_value_] + + except for comment lines starting with '#'. The possible variable +names are listed below. Values, when present, are either '0' or '1' for +booleans, or strings (which must be specified without any quote +characters). Leading whitespace is ignored. + + If the variable 'selected_scheme' is defined and _no_ collection +variables at all are defined, then the collections required by the +specified scheme (which might change over time) are installed, without +explicitly listing them. This eases maintenance of profile files. If +any collections are specified in a profile, though, then all desired +collections must be given explicitly. + + For example, a line + + selected_scheme scheme-small + + along with definitions for the installation directories (given below +under "path options") suffices to install the "small" scheme with all +default options. The schemes are described in the 'S' menu in the text +installer, or equivalent. + + Besides 'selected_scheme', here is the list of variable names +supported in a profile: + + *collection options* (prefix 'collection-') + + Collections are specified with a variable name with the prefix +'collection-' followed by a collection name; there is no value. For +instance, 'collection-basic'. The collections are described in the 'C' +menu. + + Schemes and collections (and packages) are ultimately defined by the +files in the 'tlpkg/tlpsrc/' source directory. + + *path options* + + It is best to define all of these, even though they may not be used +in the installation, so as to avoid unintentionally getting a default +value that could cause problems later. + + TEXDIR + TEXMFCONFIG + TEXMFVAR + TEXMFHOME + TEXMFLOCAL + TEXMFSYSCONFIG + TEXMFSYSVAR + + *installer options* (prefix 'instopt_') + +'instopt_adjustpath' (default 0 on Unix, 1 on Windows) + + Adjust 'PATH' environment variable. + +'instopt_adjustrepo' (default 1) + + Set remote repository to a multiplexed CTAN mirror after + installation; see '-repository' above. + +'instopt_letter' (default 0) + + Set letter size paper as the default, instead of a4. + +'instopt_portable' (default 0) + + Install for portable use, e.g., on a USB stick. + +'instopt_write18_restricted' (default 1) + + Enable '\write18' for a restricted set of programs. + + *tlpdb options* (prefix 'tlpdbopt_') + + The definitive list is given in 'tlpkg/TeXLive/TLConfig.pm', in +'%TeXLive::TLConfig::TLPDBOptions', together with explanations. All +items given there _except_ for 'tlpdbopt_location' can be specified. +Here is the current list: + + tlpdbopt_autobackup + tlpdbopt_backupdir + tlpdbopt_create_formats + tlpdbopt_desktop_integration + tlpdbopt_file_assocs + tlpdbopt_generate_updmap + tlpdbopt_install_docfiles + tlpdbopt_install_srcfiles + tlpdbopt_post_code + tlpdbopt_sys_bin + tlpdbopt_sys_info + tlpdbopt_sys_man + tlpdbopt_w32_multi_user -A.6 ENVIRONMENT VARIABLES + *platform options* (prefix 'binary_') + + For each supported platform in TeX Live (directories under 'bin/'), +the variable 'binary_'_PLATFORM_ can be set. For example: + + binary_x86_64-linux + + If no 'binary_' variable is specified, the default is whatever the +current machine is running. + + In releases before 2017, many profile variables had different names +(not documented here; see the 'install-tl' source). They are accepted +and transformed to the names given above. When a profile is written, +the names above are always used. + + For more details on all of the above options, consult the TeX Live +installation manual, linked from <http://tug.org/texlive/doc>. + + +File: tlbuild.info, Node: install-tl ENVIRONMENT VARIABLES, Next: install-tl AUTHORS AND COPYRIGHT, Prev: install-tl PROFILES, Up: install-tl + +A.7 ENVIRONMENT VARIABLES ========================= For ease in scripting and debugging, 'install-tl' will look for the -following environment variables. They are not of interest in normal +following environment variables. They are not of interest for normal user installations. 'TEXLIVE_INSTALL_ENV_NOCHECK' @@ -2461,10 +2605,19 @@ user installations. Omit creating the ConTeXt cache. This is useful for redistributors. +'TEXLIVE_INSTALL_NO_WELCOME' + + Omit printing the welcome message after successful installation, + e.g., for testing. + 'TEXLIVE_INSTALL_PREFIX' +'TEXLIVE_INSTALL_TEXDIR' + 'TEXLIVE_INSTALL_TEXMFCONFIG' +'TEXLIVE_INSTALL_TEXMFVAR' + 'TEXLIVE_INSTALL_TEXMFHOME' 'TEXLIVE_INSTALL_TEXMFLOCAL' @@ -2473,9 +2626,12 @@ user installations. 'TEXLIVE_INSTALL_TEXMFSYSVAR' -'TEXLIVE_INSTALL_TEXMFVAR' - - Specify the respective directories. + Specify the respective directories. 'TEXLIVE_INSTALL_PREFIX' + defaults to '/usr/local/texlive', while 'TEXLIVE_INSTALL_TEXDIR' + defaults to the release directory within that prefix, e.g., + '/usr/local/texlive/2016'. All the defaults can be seen by running + the installer interactively and then typing 'D' for the directory + menu. 'NOPERLDOC' @@ -2484,13 +2640,15 @@ user installations. File: tlbuild.info, Node: install-tl AUTHORS AND COPYRIGHT, Prev: install-tl ENVIRONMENT VARIABLES, Up: install-tl -A.7 AUTHORS AND COPYRIGHT +A.8 AUTHORS AND COPYRIGHT ========================= This script and its documentation were written for the TeX Live distribution (<http://tug.org/texlive>) and both are licensed under the GNU General Public License Version 2 or later. + $Id: install-tl 46908 2018-03-10 00:46:28Z preining $ + File: tlbuild.info, Node: tlmgr, Next: Index, Prev: install-tl, Up: Top @@ -2505,9 +2663,9 @@ Appendix B tlmgr * tlmgr EXAMPLES:: * tlmgr OPTIONS:: * tlmgr ACTIONS:: -* tlmgr USER MODE:: * tlmgr CONFIGURATION FILE FOR TLMGR:: -* tlmgr TAXONOMIES:: +* tlmgr CRYPTOGRAPHIC VERIFICATION:: +* tlmgr USER MODE:: * tlmgr MULTIPLE REPOSITORIES:: * tlmgr GUI FOR TLMGR:: * tlmgr MACHINE-READABLE OUTPUT:: @@ -2519,7 +2677,7 @@ File: tlbuild.info, Node: tlmgr NAME, Next: tlmgr SYNOPSIS, Up: tlmgr B.1 NAME ======== -tlmgr - the TeX Live Manager +tlmgr - the native TeX Live Manager File: tlbuild.info, Node: tlmgr SYNOPSIS, Next: tlmgr DESCRIPTION, Prev: tlmgr NAME, Up: tlmgr @@ -2527,7 +2685,7 @@ File: tlbuild.info, Node: tlmgr SYNOPSIS, Next: tlmgr DESCRIPTION, Prev: tlmg B.2 SYNOPSIS ============ -tlmgr [_option_]... _action_ [_option_]... [_operand_]... +tlmgr [_option_...] _action_ [_option_...] [_operand_...] File: tlbuild.info, Node: tlmgr DESCRIPTION, Next: tlmgr EXAMPLES, Prev: tlmgr SYNOPSIS, Up: tlmgr @@ -2563,11 +2721,17 @@ B.4 EXAMPLES After successfully installing TeX Live, here are a few common operations with 'tlmgr': +'tlmgr option repository ctan' + 'tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet' Tell 'tlmgr' to use a nearby CTAN mirror for future updates; useful - if you installed TeX Live from the DVD image and want continuing - updates. + if you installed TeX Live from the DVD image and want to have + continuing updates. The two commands are equivalent; 'ctan' is + just an alias for the given url. Caveat: 'mirror.ctan.org' + resolves to many different hosts, and they are not perfectly + synchronized; we recommend updating only daily (at most), and not + more often. 'tlmgr update --list' @@ -2578,10 +2742,11 @@ with 'tlmgr': Make your local TeX installation correspond to what is in the package repository (typically useful when updating from CTAN). -'tlmgr info' _pkg_ +'tlmgr info' _what_ - Display detailed information about _pkg_, such as the installation - status and description. + Display detailed information about a package _what_, such as the + installation status and description, of searches for _what_ in all + packages. For all the capabilities and details of 'tlmgr', please read the following voluminous information. @@ -2663,8 +2828,8 @@ name and its value. 'tlmgr' logs all package actions (install, remove, update, failed updates, failed restores) to a separate log file, by default - 'TEXMFSYSVAR/web2c/tlmgr.log'. This option allows you to specific - a different file for the log. + 'TEXMFSYSVAR/web2c/tlmgr.log'. This option allows you to specify a + different file for the log. *-pause* @@ -2702,6 +2867,16 @@ name and its value. Uses _dir_ for the tree in user mode; see *note USER MODE: tlmgr USER MODE. below. +*-verify-repo=[none|main|all]* + + Defines the level of verification done: If 'none' is specified, no + verification whatsoever is done. If 'main' is given and a working + GnuPG ('gpg') binary is available, all repositories are checked, + but only the main repository is required to be signed. If 'all' is + given, then all repositories need to be signed. See *note + CRYPTOGRAPHIC VERIFICATION: tlmgr CRYPTOGRAPHIC VERIFICATION. below + for details. + The standard options for TeX Live programs are also accepted: '--help/-h/-?', '--version', '-q' (no informational messages), '-v' (debugging messages, can be repeated). For the details about these, see @@ -2712,7 +2887,7 @@ release and about the 'tlmgr' script itself. If '-v' is also given, revision number for the loaded TeX Live Perl modules are shown, too. -File: tlbuild.info, Node: tlmgr ACTIONS, Next: tlmgr USER MODE, Prev: tlmgr OPTIONS, Up: tlmgr +File: tlbuild.info, Node: tlmgr ACTIONS, Next: tlmgr CONFIGURATION FILE FOR TLMGR, Prev: tlmgr OPTIONS, Up: tlmgr B.6 ACTIONS =========== @@ -2721,31 +2896,34 @@ B.6 ACTIONS * tlmgr help:: * tlmgr version:: -* tlmgr backup [--clean[=_N_]] [--backupdir _dir_] [--all | _pkg_]...:: +* tlmgr backup:: * tlmgr candidates _pkg_:: -* tlmgr check [_option_]... [files|depends|executes|runfiles|all]:: -* tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]]:: -* tlmgr dump-tlpdb [--local|--remote]:: -* tlmgr generate [_option_]... _what_:: +* tlmgr check [_option_...] [files|depends|executes|runfiles|all]:: +* tlmgr conf:: +* tlmgr dump-tlpdb [_option_...] [--json]:: +* tlmgr generate:: * tlmgr gui:: -* tlmgr info [_option_...] [collections|schemes|_pkg_...]:: +* tlmgr info:: * tlmgr init-usertree:: -* tlmgr install [_option_]... _pkg_...:: +* tlmgr install [_option_...] _pkg_...:: +* tlmgr key:: +* tlmgr list:: * tlmgr option:: * tlmgr paper:: -* tlmgr path [--w32mode=user|admin] [add|remove]:: +* tlmgr path:: * tlmgr pinning:: -* tlmgr platform list|add|remove _platform_...:: -* tlmgr platform set _platform_:: -* tlmgr platform set auto:: -* tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]...:: +* tlmgr platform:: +* tlmgr postaction:: * tlmgr print-platform:: -* tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]]:: -* tlmgr remove [_option_]... _pkg_...:: +* tlmgr print-platform-info:: +* tlmgr remove [_option_...] _pkg_...:: * tlmgr repository:: -* tlmgr search [_option_...] _what_:: +* tlmgr restore:: +* tlmgr search:: +* tlmgr shell:: +* tlmgr show:: * tlmgr uninstall:: -* tlmgr update [_option_]... [_pkg_]...:: +* tlmgr update [_option_...] [_pkg_...]:: File: tlbuild.info, Node: tlmgr help, Next: tlmgr version, Up: tlmgr ACTIONS @@ -2761,7 +2939,7 @@ detected, but you can set the 'NOPERLDOC' environment variable and 'perldoc' will not be used. -File: tlbuild.info, Node: tlmgr version, Next: tlmgr backup [--clean[=_N_]] [--backupdir _dir_] [--all | _pkg_]..., Prev: tlmgr help, Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr version, Next: tlmgr backup, Prev: tlmgr help, Up: tlmgr ACTIONS B.6.2 version ------------- @@ -2772,67 +2950,70 @@ Gives version information (same as '--version'). reported, too. -File: tlbuild.info, Node: tlmgr backup [--clean[=_N_]] [--backupdir _dir_] [--all | _pkg_]..., Next: tlmgr candidates _pkg_, Prev: tlmgr version, Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr backup, Next: tlmgr candidates _pkg_, Prev: tlmgr version, Up: tlmgr ACTIONS -B.6.3 backup [-clean[=_N_]] [-backupdir _dir_] [-all | _pkg_]... ----------------------------------------------------------------- +B.6.3 backup +------------ -If the '--clean' option is not specified, this action makes a backup of -the given packages, or all packages given '--all'. These backups are -saved to the value of the '--backupdir' option, if that is an existing -and writable directory. If '--backupdir' is not given, the 'backupdir' -option setting in the TLPDB is used, if present. If both are missing, -no backups are made. +*backup [_option_...] -all* - If the '--clean' option is specified, backups are pruned (removed) -instead of saved. The optional integer value _N_ may be specified to -set the number of backups that will be retained when cleaning. If 'N' -is not given, the value of the 'autobackup' option is used. If both are -missing, an error is issued. For more details of backup pruning, see -the 'option' action. +*backup [_option_...] _pkg_...* - Options: + If the '--clean' option is not specified, this action makes a + backup of the given packages, or all packages given '--all'. These + backups are saved to the value of the '--backupdir' option, if that + is an existing and writable directory. If '--backupdir' is not + given, the 'backupdir' option setting in the TLPDB is used, if + present. If both are missing, no backups are made. -*-backupdir* _directory_ + If the '--clean' option is specified, backups are pruned (removed) + instead of saved. The optional integer value _N_ may be specified + to set the number of backups that will be retained when cleaning. + If 'N' is not given, the value of the 'autobackup' option is used. + If both are missing, an error is issued. For more details of + backup pruning, see the 'option' action. - Overrides the 'backupdir' option setting in the TLPDB. The - _directory_ argument is required and must specify an existing, - writable directory where backups are to be placed. + Options: -*-all* + *-backupdir* _directory_ - If '--clean' is not specified, make a backup of all packages in the - TeX Live installation; this will take quite a lot of space and - time. If '--clean' is specified, all packages are pruned. + Overrides the 'backupdir' option setting in the TLPDB. The + _directory_ argument is required and must specify an existing, + writable directory where backups are to be placed. -*-clean*[=_N_] + *-all* - Instead of making backups, prune the backup directory of old - backups, as explained above. The optional integer argument _N_ - overrides the 'autobackup' option set in the TLPDB. You must use - '--all' or a list of packages together with this option, as - desired. + If '--clean' is not specified, make a backup of all packages + in the TeX Live installation; this will take quite a lot of + space and time. If '--clean' is specified, all packages are + pruned. -*-dry-run* + *-clean*[=_N_] + + Instead of making backups, prune the backup directory of old + backups, as explained above. The optional integer argument + _N_ overrides the 'autobackup' option set in the TLPDB. You + must use '--all' or a list of packages together with this + option, as desired. - Nothing is actually backed up or removed; instead, the actions to - be performed are written to the terminal. + *-dry-run* + + Nothing is actually backed up or removed; instead, the actions + to be performed are written to the terminal. -File: tlbuild.info, Node: tlmgr candidates _pkg_, Next: tlmgr check [_option_]... [files|depends|executes|runfiles|all], Prev: tlmgr backup [--clean[=_N_]] [--backupdir _dir_] [--all | _pkg_]..., Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr candidates _pkg_, Next: tlmgr check [_option_...] [files|depends|executes|runfiles|all], Prev: tlmgr backup, Up: tlmgr ACTIONS B.6.4 candidates _pkg_ ---------------------- -*candidates _pkg_* - - Shows the available candidate repositories for package _pkg_. See - *note MULTIPLE REPOSITORIES: tlmgr MULTIPLE REPOSITORIES. below. +Shows the available candidate repositories for package _pkg_. See *note +MULTIPLE REPOSITORIES: tlmgr MULTIPLE REPOSITORIES. below. -File: tlbuild.info, Node: tlmgr check [_option_]... [files|depends|executes|runfiles|all], Next: tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]], Prev: tlmgr candidates _pkg_, Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr check [_option_...] [files|depends|executes|runfiles|all], Next: tlmgr conf, Prev: tlmgr candidates _pkg_, Up: tlmgr ACTIONS -B.6.5 check [_option_]... [files|depends|executes|runfiles|all] +B.6.5 check [_option_...] [files|depends|executes|runfiles|all] --------------------------------------------------------------- Executes one (or all) check(s) on the consistency of the installation. @@ -2845,8 +3026,8 @@ Executes one (or all) check(s) on the consistency of the installation. *depends* Lists those packages which occur as dependencies in an installed - collections, but are themselves not installed, and those packages - that are not contained in any collection. + collection, but are themselves not installed, and those packages + which are not contained in any collection. If you call 'tlmgr check collections' this test will be carried out instead since former versions for 'tlmgr' called it that way. @@ -2859,7 +3040,7 @@ Executes one (or all) check(s) on the consistency of the installation. *runfiles* List those filenames that are occurring more than one time in the - runfiles. + runfiles sections. Options: @@ -2869,52 +3050,68 @@ Executes one (or all) check(s) on the consistency of the installation. checking the TL development repository. -File: tlbuild.info, Node: tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]], Next: tlmgr dump-tlpdb [--local|--remote], Prev: tlmgr check [_option_]... [files|depends|executes|runfiles|all], Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr conf, Next: tlmgr dump-tlpdb [_option_...] [--json], Prev: tlmgr check [_option_...] [files|depends|executes|runfiles|all], Up: tlmgr ACTIONS + +B.6.6 conf +---------- -B.6.6 conf [texmf|tlmgr|updmap [-conffile _file_] [-delete] [_key_ [_value_]]] ------------------------------------------------------------------------------- +*conf [texmf|tlmgr|updmap [-conffile _file_] [-delete] [_key_ [_value_]]]* -With only 'conf', show general configuration information for TeX Live, -including active configuration files, path settings, and more. This is -like the 'texconfig conf' call, but works on all supported platforms. +*conf auxtrees [-conffile _file_] [show|add|delete] [_value_]* - With either 'conf texmf', 'conf tlmgr', or 'conf updmap' given in -addition, shows all key/value pairs (i.e., all settings) as saved in -'ROOT/texmf.cnf', the tlmgr configuration file (see below), or the first -found (via kpsewhich) 'updmap.cfg' file, respectively. + With only 'conf', show general configuration information for TeX + Live, including active configuration files, path settings, and + more. This is like running 'texconfig conf', but works on all + supported platforms. - If _key_ is given in addition, shows the value of only that _key_ in -the respective file. If option _-delete_ is also given, the -configuration file - it is removed, not just commented out! + With one of 'conf texmf', 'conf tlmgr', or 'conf updmap', shows all + key/value pairs (i.e., all settings) as saved in 'ROOT/texmf.cnf', + the user-specific 'tlmgr' configuration file (see below), or the + first found (via 'kpsewhich') 'updmap.cfg' file, respectively. - If _value_ is given in addition, _key_ is set to _value_ in the -respective file. _No error checking is done!_ + If _key_ is given in addition, shows the value of only that _key_ + in the respective file. If option _-delete_ is also given, the + value in the given configuration file is entirely removed (not just + commented out). - In all cases the file used can be explicitly specified via the option -'--conffile _file_', in case one wants to operate on a different file. + If _value_ is given in addition, _key_ is set to _value_ in the + respective file. _No error checking is done!_ - Practical application: if the execution of (some or all) system -commands via '\write18' was left enabled during installation, you can -disable it afterwards: + The 'PATH' value shown by 'conf' is as used by 'tlmgr'. The + directory in which the 'tlmgr' executable is found is automatically + prepended to the PATH value inherited from the environment. - tlmgr conf texmf shell_escape 0 + Here is a practical example of changing configuration values. If + the execution of (some or all) system commands via '\write18' was + left enabled during installation, you can disable it afterwards: - A more complicated example: the 'TEXMFHOME' tree (see the main TeX -Live guide, <http://tug.org/texlive/doc.html>) can be set to multiple -directories, but they must be enclosed in braces and separated by -commas, so quoting the value to the shell is a good idea. Thus: + tlmgr conf texmf shell_escape 0 - tlmgr conf texmf TEXMFHOME "{~/texmf,~/texmfbis}" + The subcommand 'auxtrees' allows adding and removing arbitrary + additional texmf trees, completely under user control. 'auxtrees + show' shows the list of additional trees, 'auxtrees add' _tree_ + adds a tree to the list, and 'auxtrees remove' _tree_ removes a + tree from the list (if present). The trees should not contain an + 'ls-R' file (or files might not be found if the 'ls-R' becomes + stale). This works by manipulating the Kpathsea variable + 'TEXMFAUXTREES', in 'ROOT/texmf.cnf'. Example: - Warning: The general facility is here, but tinkering with settings in -this way is very strongly discouraged. Again, no error checking on -either keys or values is done, so any sort of breakage is possible. + tlmgr conf auxtrees add /quick/test/tree + tlmgr conf auxtrees remove /quick/test/tree + + In all cases the configuration file can be explicitly specified via + the option '--conffile' _file_, if desired. + + Warning: The general facility for changing configuration values is + here, but tinkering with settings in this way is strongly + discouraged. Again, no error checking on either keys or values is + done, so any sort of breakage is possible. -File: tlbuild.info, Node: tlmgr dump-tlpdb [--local|--remote], Next: tlmgr generate [_option_]... _what_, Prev: tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]], Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr dump-tlpdb [_option_...] [--json], Next: tlmgr generate, Prev: tlmgr conf, Up: tlmgr ACTIONS -B.6.7 dump-tlpdb [-local|-remote] ---------------------------------- +B.6.7 dump-tlpdb [_option_...] [-json] +-------------------------------------- Dump complete local or remote TLPDB to standard output, as-is. The output is analogous to the '--machine-readable' output; see *note @@ -2924,11 +3121,17 @@ MACHINE-READABLE OUTPUT: tlmgr MACHINE-READABLE OUTPUT. section. *-local* - Dump the local tlpdb. + Dump the local TLPDB. *-remote* - Dump the remote tlpdb. + Dump the remote TLPDB. + +*-json* + + Instead of dumping the actual content, the database is dumped as + JSON. For the format of JSON output see + 'tlpkg/doc/JSON-formats.txt', format definition 'TLPDB'. Exactly one of '--local' and '--remote' must be given. @@ -2944,20 +3147,18 @@ and _location_ is the file or url to the repository. platform. -File: tlbuild.info, Node: tlmgr generate [_option_]... _what_, Next: tlmgr gui, Prev: tlmgr dump-tlpdb [--local|--remote], Up: tlmgr ACTIONS - -B.6.8 generate [_option_]... _what_ ------------------------------------ +File: tlbuild.info, Node: tlmgr generate, Next: tlmgr gui, Prev: tlmgr dump-tlpdb [_option_...] [--json], Up: tlmgr ACTIONS -*generate language* +B.6.8 generate +-------------- -*generate language.dat* +*generate [_option_...] language* -*generate language.def* +*generate [_option_...] language.dat* -*generate language.dat.lua* +*generate [_option_...] language.def* -*generate fmtutil* +*generate [_option_...] language.dat.lua* The 'generate' action overwrites any manual changes made in the respective files: it recreates them from scratch based on the @@ -2968,35 +3169,37 @@ files. For managing your own fonts, please read the 'updmap --help' information and/or <http://tug.org/fonts/fontinstall.html>. + For managing your own formats, please read the 'fmtutil --help' +information. + In more detail: 'generate' remakes any of the configuration files -'language.dat', 'language.def', 'language.dat.lua', and 'fmtutil.cnf', -from the information present in the local TLPDB, plus locally-maintained -files. +'language.dat', 'language.def', and 'language.dat.lua' from the +information present in the local TLPDB, plus locally-maintained files. The locally-maintained files are 'language-local.dat', -'language-local.def', 'language-local.dat.lua', or 'fmtutil-local.cnf', -searched for in 'TEXMFLOCAL' in the respective directories. If local -additions are present, the final file is made by starting with the main -file, omitting any entries that the local file specifies to be disabled, -and finally appending the local file. - - (Historical note: The formerly supported 'updmap-local.cfg' is no -longer read, since 'updmap' now supports multiple 'updmap.cfg' files. -Thus, local additions can and should be put into an 'updmap.cfg' file in -'TEXMFLOCAL'. The 'generate updmap' action no longer exists.) +'language-local.def', or 'language-local.dat.lua', searched for in +'TEXMFLOCAL' in the respective directories. If local additions are +present, the final file is made by starting with the main file, omitting +any entries that the local file specifies to be disabled, and finally +appending the local file. + + (Historical note: The formerly supported 'updmap-local.cfg' and +'fmtutil-local.cnf' are no longer read, since 'updmap' and 'fmtutil' now +reads and supports multiple configuration files. Thus, local additions +can and should be put into an 'updmap.cfg' of 'fmtutil.cnf' file in +'TEXMFLOCAL'. The 'generate updmap' and 'generate fmtutil' actions no +longer exist.) Local files specify entries to be disabled with a comment line, namely one of these: - #!NAME %!NAME --!NAME - where 'fmtutil.cnf' uses '#', 'language.dat' and 'language.def' use -'%', and 'language.dat.lua' use '--'. In all cases, the _name_ is the -respective format name or hyphenation pattern identifier. Examples: + where 'language.dat' and 'language.def' use '%', and +'language.dat.lua' use '--'. In all cases, the _name_ is the respective +format name or hyphenation pattern identifier. Examples: - #!pdflatex %!german --!usenglishmax @@ -3032,8 +3235,8 @@ with an extension recreates only that given language file. *-rebuild-sys* - tells tlmgr to run necessary programs after config files have been - regenerated. These are: 'fmtutil-sys --all' after 'generate + tells 'tlmgr' to run necessary programs after config files have + been regenerated. These are: 'fmtutil-sys --all' after 'generate fmtutil', 'fmtutil-sys --byhyphen .../language.dat' after 'generate language.dat', and 'fmtutil-sys --byhyphen .../language.def' after 'generate language.def'. @@ -3045,13 +3248,12 @@ with an extension recreates only that given language file. The respective locations are as follows: - tex/generic/config/language.dat (and language-local.dat); - tex/generic/config/language.def (and language-local.def); - tex/generic/config/language.dat.lua (and language-local.dat.lua); - web2c/fmtutil.cnf (and fmtutil-local.cnf); + tex/generic/config/language.dat (and language-local.dat) + tex/generic/config/language.def (and language-local.def) + tex/generic/config/language.dat.lua (and language-local.dat.lua) -File: tlbuild.info, Node: tlmgr gui, Next: tlmgr info [_option_...] [collections|schemes|_pkg_...], Prev: tlmgr generate [_option_]... _what_, Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr gui, Next: tlmgr info, Prev: tlmgr generate, Up: tlmgr ACTIONS B.6.9 gui --------- @@ -3059,60 +3261,85 @@ B.6.9 gui Start the graphical user interface. See *GUI* below. -File: tlbuild.info, Node: tlmgr info [_option_...] [collections|schemes|_pkg_...], Next: tlmgr init-usertree, Prev: tlmgr gui, Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr info, Next: tlmgr init-usertree, Prev: tlmgr gui, Up: tlmgr ACTIONS -B.6.10 info [_option_...] [collections|schemes|_pkg_...] --------------------------------------------------------- +B.6.10 info +----------- -With no argument, lists all packages available at the package -repository, prefixing those already installed with 'i'. +*info [_option_...] _pkg_...* - With the single word 'collections' or 'schemes' as the argument, -lists the request type instead of all packages. +*info [_option_...] collections* - With any other arguments, display information about _pkg_: the name, -category, short and long description, installation status, and TeX Live -revision number. If _pkg_ is not locally installed, searches in the -remote installation source. +*info [_option_...] schemes* - It also displays information taken from the TeX Catalogue, namely the -package version, date, and license. Consider these, especially the -package version, as approximations only, due to timing skew of the -updates of the different pieces. By contrast, the 'revision' value -comes directly from TL and is reliable. + With no argument, lists all packages available at the package + repository, prefixing those already installed with 'i'. - The former actions 'show' and 'list' are merged into this action, but -are still supported for backward compatibility. + With the single word 'collections' or 'schemes' as the argument, + lists the request type instead of all packages. - Options: + With any other arguments, display information about _pkg_: the + name, category, short and long description, sizes, installation + status, and TeX Live revision number. If _pkg_ is not locally + installed, searches in the remote installation source. + + For normal packages (not collections or schemes), the sizes of the + four groups of files (run/src/doc/bin files) are shown separately. + For collections, the cumulative size is shown, including all + directly-dependent packages (but not dependent collections). For + schemes, the cumulative size is also shown, including all + directly-dependent collections and packages. -*-list* + If _pkg_ is not found locally or remotely, the search action is + used and lists matching packages and files. - If the option '--list' is given with a package, the list of - contained files is also shown, including those for - platform-specific dependencies. When given with schemes and - collections, '--list' outputs their dependencies in a similar way. + It also displays information taken from the TeX Catalogue, namely + the package version, date, and license. Consider these, especially + the package version, as approximations only, due to timing skew of + the updates of the different pieces. By contrast, the 'revision' + value comes directly from TL and is reliable. -*-only-installed* + The former actions 'show' and 'list' are merged into this action, + but are still supported for backward compatibility. - If this options is given, the installation source will not be used; - only locally installed packages, collections, or schemes are - listed. (Does not work for listing of packages for now) + Options: -*-taxonomy* + *-list* -*-keyword* + If the option '--list' is given with a package, the list of + contained files is also shown, including those for + platform-specific dependencies. When given with schemes and + collections, '--list' outputs their dependencies in a similar + way. -*-functionality* + *-only-installed* -*-characterization* + If this option is given, the installation source will not be + used; only locally installed packages, collections, or schemes + are listed. - In addition to the normal data displayed, also display information - for given packages from the corresponding taxonomy (or all of - them). See *note TAXONOMIES: tlmgr TAXONOMIES. below for details. + *-data 'item1,item2,...'* + + If the option '--data' is given, its argument must be a comma + separated list of field names from: 'name', 'category', + 'localrev', 'remoterev', 'shortdesc', 'longdesc', 'installed', + 'size', 'relocatable', 'depends', 'cat-version', 'cat-date', + or 'cat-license'. In this case the requested packages' + information is listed in CSV format one package per line, and + the column information is given by the 'itemN'. The 'depends' + column contains the name of all dependencies separated by ':'. + + *-json* + + In case '--json' is specified, the output is a JSON encoded + array where each array element is the JSON representation of a + single 'TLPOBJ' but with additional information. For details + see 'tlpkg/doc/JSON-formats.txt', format definition: + 'TLPOBJINFO'. If both '--json' and '--data' are given, + '--json' takes precedence. -File: tlbuild.info, Node: tlmgr init-usertree, Next: tlmgr install [_option_]... _pkg_..., Prev: tlmgr info [_option_...] [collections|schemes|_pkg_...], Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr init-usertree, Next: tlmgr install [_option_...] _pkg_..., Prev: tlmgr info, Up: tlmgr ACTIONS B.6.11 init-usertree -------------------- @@ -3122,13 +3349,22 @@ default user tree ('TEXMFHOME'), or one specified on the command line with '--usertree'. See *note USER MODE: tlmgr USER MODE. below. -File: tlbuild.info, Node: tlmgr install [_option_]... _pkg_..., Next: tlmgr option, Prev: tlmgr init-usertree, Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr install [_option_...] _pkg_..., Next: tlmgr key, Prev: tlmgr init-usertree, Up: tlmgr ACTIONS -B.6.12 install [_option_]... _pkg_... +B.6.12 install [_option_...] _pkg_... ------------------------------------- -Install each _pkg_ given on the command line. By default this installs -all packages on which the given _pkg_s are dependent, also. Options: +Install each _pkg_ given on the command line, if it is not already +installed. (It does not touch existing packages; see the 'update' +action for how to get the latest version of a package.) + + By default this also installs all packages on which the given _pkg_s +are dependent. Options: + +*-dry-run* + + Nothing is actually installed; instead, the actions to be performed + are written to the terminal. *-file* @@ -3136,15 +3372,11 @@ all packages on which the given _pkg_s are dependent, also. Options: the package files given on the command line. These files must be standard TeX Live package files (with contained tlpobj file). -*-reinstall* - - Reinstall a package (including dependencies for collections) even - if it already seems to be installed (i.e, is present in the TLPDB). - This is useful to recover from accidental removal of files in the - hierarchy. +*-force* - When re-installing, only dependencies on normal packages are - followed (i.e., not those of category Scheme or Collection). + If updates to 'tlmgr' itself (or other parts of the basic + infrastructure) are present, 'tlmgr' will bail out and not perform + the installation unless this option is given. Not recommended. *-no-depends* @@ -3160,38 +3392,90 @@ all packages on which the given _pkg_s are dependent, also. Options: and also implies '--no-depends'. Don't use it unless you are sure of what you are doing. -*-dry-run* +*-reinstall* - Nothing is actually installed; instead, the actions to be performed - are written to the terminal. + Reinstall a package (including dependencies for collections) even + if it already seems to be installed (i.e, is present in the TLPDB). + This is useful to recover from accidental removal of files in the + hierarchy. -*-force* + When re-installing, only dependencies on normal packages are + followed (i.e., not those of category Scheme or Collection). - If updates to 'tlmgr' itself (or other parts of the basic - infrastructure) are present, 'tlmgr' will bail out and not perform - the installation unless this option is given. Not recommended. +*-with-doc* + +*-with-src* + + While not recommended, the 'install-tl' program provides an option + to omit installation of all documentation and/or source files. (By + default, everything is installed.) After such an installation, you + may find that you want the documentation or source files for a + given package after all. You can get them by using these options + in conjunction with '--reinstall', as in (using the 'fontspec' + package as the example): + + tlmgr install --reinstall --with-doc --with-src fontspec -File: tlbuild.info, Node: tlmgr option, Next: tlmgr paper, Prev: tlmgr install [_option_]... _pkg_..., Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr key, Next: tlmgr list, Prev: tlmgr install [_option_...] _pkg_..., Up: tlmgr ACTIONS + +B.6.13 key +---------- + +*key list* + +*key add _file_* + +*key remove _keyid_* + + The action 'key' allows listing, adding and removing additional GPG + keys to the set of trusted keys, that is, those that are used to + verify the TeX Live databases. -B.6.13 option + With the 'list' argument, 'key' lists all keys. + + The 'add' argument requires another argument, either a filename or + '-' for stdin, from which the key is added. The key is added to + the local keyring 'GNUPGHOME/repository-keys.gpg', which is + normally) 'tlpkg/gpg/repository-keys.gpg'. + + The 'remove' argument requires a key id and removes the requested + id from the local keyring. + + +File: tlbuild.info, Node: tlmgr list, Next: tlmgr option, Prev: tlmgr key, Up: tlmgr ACTIONS + +B.6.14 list +----------- + +Synonym for *note info: tlmgr info. + + +File: tlbuild.info, Node: tlmgr option, Next: tlmgr paper, Prev: tlmgr list, Up: tlmgr ACTIONS + +B.6.15 option ------------- -*option [show]* +*option [-json] [show]* -*option showall* +*option [-json] showall* *option _key_ [_value_]* - The first form shows the global TeX Live settings currently saved in -the TLPDB with a short description and the 'key' used for changing it in -parentheses. + The first form, 'show', shows the global TeX Live settings currently +saved in the TLPDB with a short description and the 'key' used for +changing it in parentheses. - The second form is similar, but also shows options which can be -defined but are not currently set to any value. + The second form, 'showall', is similar, but also shows options which +can be defined but are not currently set to any value. - In the third form, if _value_ is not given, the setting for _key_ is -displayed. If _value_ is present, _key_ is set to _value_. + Both 'show...' forms take an option '--json', which dumps the option +information in JSON format. In this case, both forms dump the same +data. For the format of the JSON output see +'tlpkg/doc/JSON-formats.txt', format definition 'TLOPTION'. + + In the third form, with _key_, if _value_ is not given, the setting +for _key_ is displayed. If _value_ is present, _key_ is set to _value_. Possible values for _key_ are (run 'tlmgr option showall' for the definitive list): @@ -3218,19 +3502,23 @@ from DVD. To do this, you can run The 'install-tl' documentation has more information about the possible values for 'repository'. (For backward compatibility, -'location' can be used as alternative name for 'repository'.) +'location' can be used as a synonym for 'repository'.) If 'formats' is set (this is the default), then formats are regenerated when either the engine or the format files have changed. -Disable this only when you know what you are doing. +Disable this only when you know how and want to regenerate formats +yourself. The 'postcode' option controls execution of per-package postinstallation action code. It is set by default, and again disabling -is not likely to be of interest except perhaps to developers. +is not likely to be of interest except to developers doing debugging. The 'docfiles' and 'srcfiles' options control the installation of -their respective files of a package. By default both are enabled (1). -This can be disabled (set to 0) if disk space is (very) limited. +their respective file groups (documentation, sources; grouping is +approximate) per package. By default both are enabled (1). Either or +both can be disabled (set to 0) if disk space is limited or for minimal +testing installations, etc. When disabled, the respective files are not +downloaded at all. The options 'autobackup' and 'backupdir' determine the defaults for the actions 'update', 'backup' and 'restore'. These three actions need @@ -3243,38 +3531,41 @@ backups. Its value is an integer. If the 'autobackup' value is '-1', no backups are removed. If 'autobackup' is 0 or more, it specifies the number of backups to keep. Thus, backups are disabled if the value is 0. In the '--clean' mode of the 'backup' action this option also -specifies the number to be kept. +specifies the number to be kept. The default value is 1, so that +backups are made, but only one backup is kept. To setup 'autobackup' to '-1' on the command line, use: tlmgr option -- autobackup -1 - The '--' avoids having the '-1' treated as an option. ('--' stops -parsing for options at the point where it appears; this is a general -feature across most Unix programs.) + The '--' avoids having the '-1' treated as an option. (The '--' +stops parsing for options at the point where it appears; this is a +general feature across most Unix programs.) - The 'sys_bin', 'sys_man', and 'sys_info' options are used on -Unix-like systems to control the generation of links for executables, -info files and man pages. See the 'path' action for details. + The 'sys_bin', 'sys_man', and 'sys_info' options are used on Unix +systems to control the generation of links for executables, Info files +and man pages. See the 'path' action for details. - The last three options control behaviour on Windows installations. -If 'desktop_integration' is set, then some packages will install items -in a sub-folder of the Start menu for 'tlmgr gui', documentation, etc. -If 'fileassocs' is set, Windows file associations are made (see also the + The last three options affect behavior on Windows installations. If +'desktop_integration' is set, then some packages will install items in a +sub-folder of the Start menu for 'tlmgr gui', documentation, etc. If +'fileassocs' is set, Windows file associations are made (see also the 'postaction' action). Finally, if 'multiuser' is set, then adaptions to the registry and the menus are done for all users on the system instead of only the current user. All three options are on by default. -File: tlbuild.info, Node: tlmgr paper, Next: tlmgr path [--w32mode=user|admin] [add|remove], Prev: tlmgr option, Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr paper, Next: tlmgr path, Prev: tlmgr option, Up: tlmgr ACTIONS -B.6.14 paper +B.6.16 paper ------------ *paper [a4|letter]* *[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [_papersize_|-list]* +*paper -json* + With no arguments ('tlmgr paper'), shows the default paper size setting for all known programs. @@ -3293,6 +3584,10 @@ program to that paper size. last argument (e.g., 'tlmgr dvips paper --list'), shows all valid paper sizes for that program. The first size shown is the default. + If '--json' is specified without other options, the paper setup is +dumped in JSON format. For the format of JSON output see +'tlpkg/doc/JSON-formats.txt', format definition 'TLPAPER'. + Incidentally, this syntax of having a specific program name before the 'paper' keyword is unusual. It is inherited from the longstanding 'texconfig' script, which supports other configuration settings for some @@ -3300,40 +3595,46 @@ programs, notably 'dvips'. 'tlmgr' does not support those extra settings. -File: tlbuild.info, Node: tlmgr path [--w32mode=user|admin] [add|remove], Next: tlmgr pinning, Prev: tlmgr paper, Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr path, Next: tlmgr pinning, Prev: tlmgr paper, Up: tlmgr ACTIONS -B.6.15 path [-w32mode=user|admin] [add|remove] ----------------------------------------------- +B.6.17 path +----------- -On Unix, merely adds or removes symlinks for binaries, man pages, and -info pages in the system directories specified by the respective options -(see the *note option: tlmgr option. description above). Does not -change any initialization files, either system or personal. +*path [-w32mode=user|admin] add* - On Windows, the registry part where the binary directory is added or -removed is determined in the following way: +*path [-w32mode=user|admin] remove* - If the user has admin rights, and the option '--w32mode' is not -given, the setting _w32_multi_user_ determines the location (i.e., if it -is on then the system path, otherwise the user path is changed). + On Unix, merely adds or removes symlinks for binaries, man pages, + and info pages in the system directories specified by the + respective options (see the *note option: tlmgr option. description + above). Does not change any initialization files, either system or + personal. - If the user has admin rights, and the option '--w32mode' is given, -this option determines the path to be adjusted. + On Windows, the registry part where the binary directory is added + or removed is determined in the following way: - If the user does not have admin rights, and the option '--w32mode' is -not given, and the setting _w32_multi_user_ is off, the user path is -changed, while if the setting _w32_multi_user_ is on, a warning is -issued that the caller does not have enough privileges. + If the user has admin rights, and the option '--w32mode' is not + given, the setting _w32_multi_user_ determines the location (i.e., + if it is on then the system path, otherwise the user path is + changed). - If the user does not have admin rights, and the option '--w32mode' is -given, it must be *user* and the user path will be adjusted. If a user -without admin rights uses the option '--w32mode admin' a warning is -issued that the caller does not have enough privileges. + If the user has admin rights, and the option '--w32mode' is given, + this option determines the path to be adjusted. + + If the user does not have admin rights, and the option '--w32mode' + is not given, and the setting _w32_multi_user_ is off, the user + path is changed, while if the setting _w32_multi_user_ is on, a + warning is issued that the caller does not have enough privileges. + + If the user does not have admin rights, and the option '--w32mode' + is given, it must be 'user' and the user path will be adjusted. If + a user without admin rights uses the option '--w32mode admin' a + warning is issued that the caller does not have enough privileges. -File: tlbuild.info, Node: tlmgr pinning, Next: tlmgr platform list|add|remove _platform_..., Prev: tlmgr path [--w32mode=user|admin] [add|remove], Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr pinning, Next: tlmgr platform, Prev: tlmgr path, Up: tlmgr ACTIONS -B.6.16 pinning +B.6.18 pinning -------------- The 'pinning' action manages the pinning file, see *note Pinning: tlmgr @@ -3358,76 +3659,85 @@ Pinning. below. Remove all pinning data for repository _repo_. -File: tlbuild.info, Node: tlmgr platform list|add|remove _platform_..., Next: tlmgr platform set _platform_, Prev: tlmgr pinning, Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr platform, Next: tlmgr postaction, Prev: tlmgr pinning, Up: tlmgr ACTIONS -B.6.17 platform list|add|remove _platform_... ---------------------------------------------- - - -File: tlbuild.info, Node: tlmgr platform set _platform_, Next: tlmgr platform set auto, Prev: tlmgr platform list|add|remove _platform_..., Up: tlmgr ACTIONS +B.6.19 platform +--------------- -B.6.18 platform set _platform_ ------------------------------- +*platform list|add|remove _platform_...* - -File: tlbuild.info, Node: tlmgr platform set auto, Next: tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]..., Prev: tlmgr platform set _platform_, Up: tlmgr ACTIONS +*platform set _platform_* -B.6.19 platform set auto ------------------------- +*platform set auto* -'platform list' lists the TeX Live names of all the platforms (a.k.a. -architectures), ('i386-linux', ...) available at the package -repository. + 'platform list' lists the TeX Live names of all the platforms + (a.k.a. architectures), ('i386-linux', ...) available at the + package repository. - 'platform add' _platform_... adds the executables for each given -platform _platform_ to the installation from the repository. + 'platform add' _platform_... adds the executables for each given + platform _platform_ to the installation from the repository. - 'platform remove' _platform_... removes the executables for each -given platform _platform_ from the installation, but keeps the currently -running platform in any case. + 'platform remove' _platform_... removes the executables for each + given platform _platform_ from the installation, but keeps the + currently running platform in any case. - 'platform set' _platform_ switches TeX Live to always use the given -platform instead of auto detection. + 'platform set' _platform_ switches TeX Live to always use the given + platform instead of auto detection. - 'platform set auto' switches TeX Live to auto detection mode for -platform. + 'platform set auto' switches TeX Live to auto detection mode for + platform. - Platform detection is needed to select the proper 'xz', 'xzdec' and -'wget' binaries that are shipped with TeX Live. + Platform detection is needed to select the proper 'xz', 'xzdec' and + 'wget' binaries that are shipped with TeX Live. - 'arch' is a synonym for 'platform'. + 'arch' is a synonym for 'platform'. - Options: + Options: -*-dry-run* + *-dry-run* - Nothing is actually installed; instead, the actions to be performed - are written to the terminal. + Nothing is actually installed; instead, the actions to be + performed are written to the terminal. -File: tlbuild.info, Node: tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]..., Next: tlmgr print-platform, Prev: tlmgr platform set auto, Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr postaction, Next: tlmgr print-platform, Prev: tlmgr platform, Up: tlmgr ACTIONS -B.6.20 postaction [-w32mode=user|admin] [-fileassocmode=1|2] [-all] [install|remove] [shortcut|fileassoc|script] [_pkg_]... ---------------------------------------------------------------------------------------------------------------------------- +B.6.20 postaction +----------------- + +*postaction [_option_...] install [shortcut|fileassoc|script] [_pkg_...]* + +*postaction [_option_...] remove [shortcut|fileassoc|script] [_pkg_...]* + + Carry out the postaction 'shortcut', 'fileassoc', or 'script' given + as the second required argument in install or remove mode (which is + the first required argument), for either the packages given on the + command line, or for all if '--all' is given. + + Options: -Carry out the postaction 'shortcut', 'fileassoc', or 'script' given as -the second required argument in install or remove mode (which is the -first required argument), for either the packages given on the command -line, or for all if '--all' is given. + *-w32mode=[user|admin]* - If the option '--w32mode' is given the value 'user', all actions will -only be carried out in the user-accessible parts of the -registry/filesystem, while the value 'admin' selects the system-wide -parts of the registry for the file associations. If you do not have -enough permissions, using '--w32mode=admin' will not succeed. + If the option '--w32mode' is given the value 'user', all + actions will only be carried out in the user-accessible parts + of the registry/filesystem, while the value 'admin' selects + the system-wide parts of the registry for the file + associations. If you do not have enough permissions, using + '--w32mode=admin' will not succeed. - '--fileassocmode' specifies the action for file associations. If it -is set to 1 (the default), only new associations are added; if it is set -to 2, all associations are set to the TeX Live programs. (See also -'option fileassocs'.) + *-fileassocmode=[1|2]* + + '--fileassocmode' specifies the action for file associations. + If it is set to 1 (the default), only new associations are + added; if it is set to 2, all associations are set to the TeX + Live programs. (See also 'option fileassocs'.) + + *-all* + + Carry out the postactions for all packages -File: tlbuild.info, Node: tlmgr print-platform, Next: tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]], Prev: tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]..., Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr print-platform, Next: tlmgr print-platform-info, Prev: tlmgr postaction, Up: tlmgr ACTIONS B.6.21 print-platform --------------------- @@ -3437,60 +3747,42 @@ Print the TeX Live identifier for the detected platform '--print-arch' is a synonym. -File: tlbuild.info, Node: tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]], Next: tlmgr remove [_option_]... _pkg_..., Prev: tlmgr print-platform, Up: tlmgr ACTIONS - -B.6.22 restore [-backupdir _dir_] [-all | _pkg_ [_rev_]] --------------------------------------------------------- +File: tlbuild.info, Node: tlmgr print-platform-info, Next: tlmgr remove [_option_...] _pkg_..., Prev: tlmgr print-platform, Up: tlmgr ACTIONS -Restore a package from a previously-made backup. - - If '--all' is given, try to restore the latest revision of all -package backups found in the backup directory. - - Otherwise, if neither _pkg_ nor _rev_ are given, list the available -backup revisions for all packages. +B.6.22 print-platform-info +-------------------------- - With _pkg_ given but no _rev_, list all available backup revisions of -_pkg_. +Print the TeX Live platform identifier, TL platform long name, and +original output from guess. - When listing available packages tlmgr shows the revision and in -parenthesis the creation time if available (in format yyyy-mm-dd hh:mm). + +File: tlbuild.info, Node: tlmgr remove [_option_...] _pkg_..., Next: tlmgr repository, Prev: tlmgr print-platform-info, Up: tlmgr ACTIONS - With both _pkg_ and _rev_, tries to restore the package from the -specified backup. +B.6.23 remove [_option_...] _pkg_... +------------------------------------ - Options: +Remove each _pkg_ specified. Removing a collection removes all package +dependencies (unless '--no-depends' is specified), but not any +collection dependencies of that collection. However, when removing a +package, dependencies are never removed. Options: *-all* - Try to restore the latest revision of all package backups found in - the backup directory. Additional non-option arguments (like _pkg_) - are not allowed. - -*-backupdir* _directory_ - - Specify the directory where the backups are to be found. If not - given it will be taken from the configuration setting in the TLPDB. - -*-dry-run* - - Nothing is actually restored; instead, the actions to be performed - are written to the terminal. - -*-force* + Uninstalls all of TeX Live, asking for confirmation unless + '--force' is also specified. - Don't ask questions. +*-backup* - -File: tlbuild.info, Node: tlmgr remove [_option_]... _pkg_..., Next: tlmgr repository, Prev: tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]], Up: tlmgr ACTIONS +*-backupdir* _directory_ -B.6.23 remove [_option_]... _pkg_... ------------------------------------- + These options behave just as with the *note update: (update)tlmgr + update [_option_...] [...]. action (q.v.), except they apply to + making backups of packages before they are removed. The default is + to make such a backup, that is, to save a copy of packages before + removal. -Remove each _pkg_ specified. Removing a collection removes all package -dependencies (unless '--no-depends' is specified), but not any -collection dependencies of that collection. However, when removing a -package, dependencies are never removed. Options: + The *note restore: tlmgr restore. action explains how to restore + from a backup. *-no-depends* @@ -3498,7 +3790,8 @@ package, dependencies are never removed. Options: *-no-depends-at-all* - See above under *install* (and beware). + See above under *note install: tlmgr install [_option_...] _pkg_... + (and beware). *-force* @@ -3508,8 +3801,8 @@ package, dependencies are never removed. Options: A package that has been removed using the '--force' option because it is still listed in an installed collection or scheme will not be - updated, and will be mentioned as *forcibly removed* in the output - of *tlmgr update -list*. + updated, and will be mentioned as 'forcibly removed' in the output + of 'tlmgr update --list'. *-dry-run* @@ -3517,7 +3810,7 @@ package, dependencies are never removed. Options: are written to the terminal. -File: tlbuild.info, Node: tlmgr repository, Next: tlmgr search [_option_...] _what_, Prev: tlmgr remove [_option_]... _pkg_..., Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr repository, Next: tlmgr restore, Prev: tlmgr remove [_option_...] _pkg_..., Up: tlmgr ACTIONS B.6.24 repository ----------------- @@ -3532,9 +3825,8 @@ B.6.24 repository *repository set _path_[#_tag_] [_path_[#_tag_] ...]* - This action manages the list of repositories. See *note MULTIPLE - REPOSITORIES: tlmgr MULTIPLE REPOSITORIES. below for detailed - explanations. + This action manages the list of repositories. See *note + (MULTIPLE_REPOSITORIES):: below for detailed explanations. The first form ('list') lists all configured repositories and the respective tags if set. If a path, url, or tag is given after the @@ -3554,120 +3846,183 @@ B.6.24 repository otherwise, all operations will fail! -File: tlbuild.info, Node: tlmgr search [_option_...] _what_, Next: tlmgr uninstall, Prev: tlmgr repository, Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr restore, Next: tlmgr search, Prev: tlmgr repository, Up: tlmgr ACTIONS -B.6.25 search [_option_...] _what_ ----------------------------------- +B.6.25 restore +-------------- -* Menu: +*restore [_option_...] _pkg_ [_rev_]* -* tlmgr search [_option_...] --file _what_:: -* tlmgr search [_option_...] --taxonomy _what_:: -* tlmgr search [_option_...] --keyword _what_:: -* tlmgr search [_option_...] --functionality _what_:: -* tlmgr search [_option_...] --characterization _what_:: -* tlmgr search [_option_...] --all _what_:: +*restore [_option_...] -all* - -File: tlbuild.info, Node: tlmgr search [_option_...] --file _what_, Next: tlmgr search [_option_...] --taxonomy _what_, Up: tlmgr search [_option_...] _what_ + Restore a package from a previously-made backup. -B.6.25.1 search [_option_...] -file _what_ -.......................................... + If '--all' is given, try to restore the latest revision of all + package backups found in the backup directory. - -File: tlbuild.info, Node: tlmgr search [_option_...] --taxonomy _what_, Next: tlmgr search [_option_...] --keyword _what_, Prev: tlmgr search [_option_...] --file _what_, Up: tlmgr search [_option_...] _what_ + Otherwise, if neither _pkg_ nor _rev_ are given, list the available + backup revisions for all packages. With _pkg_ given but no _rev_, + list all available backup revisions of _pkg_. -B.6.25.2 search [_option_...] -taxonomy _what_ -.............................................. + When listing available packages, 'tlmgr' shows the revision, and in + parenthesis the creation time if available (in format yyyy-mm-dd + hh:mm). - -File: tlbuild.info, Node: tlmgr search [_option_...] --keyword _what_, Next: tlmgr search [_option_...] --functionality _what_, Prev: tlmgr search [_option_...] --taxonomy _what_, Up: tlmgr search [_option_...] _what_ + If (and only if) both _pkg_ and a valid revision number _rev_ are + specified, try to restore the package from the specified backup. -B.6.25.3 search [_option_...] -keyword _what_ -............................................. + Options: - -File: tlbuild.info, Node: tlmgr search [_option_...] --functionality _what_, Next: tlmgr search [_option_...] --characterization _what_, Prev: tlmgr search [_option_...] --keyword _what_, Up: tlmgr search [_option_...] _what_ + *-all* + + Try to restore the latest revision of all package backups + found in the backup directory. Additional non-option + arguments (like _pkg_) are not allowed. + + *-backupdir* _directory_ + + Specify the directory where the backups are to be found. If + not given it will be taken from the configuration setting in + the TLPDB. -B.6.25.4 search [_option_...] -functionality _what_ -................................................... + *-dry-run* + + Nothing is actually restored; instead, the actions to be + performed are written to the terminal. + + *-force* + + Don't ask questions. + + *-json* + + When listing backups, the option '--json' turn on JSON output. + The format is an array of JSON objects ('name', 'rev', + 'date'). For details see 'tlpkg/doc/JSON-formats.txt', format + definition: 'TLBACKUPS'. If both '--json' and '--data' are + given, '--json' takes precedence. -File: tlbuild.info, Node: tlmgr search [_option_...] --characterization _what_, Next: tlmgr search [_option_...] --all _what_, Prev: tlmgr search [_option_...] --functionality _what_, Up: tlmgr search [_option_...] _what_ +File: tlbuild.info, Node: tlmgr search, Next: tlmgr shell, Prev: tlmgr restore, Up: tlmgr ACTIONS + +B.6.26 search +------------- + +*search [_option_...] _what_* + +*search [_option_...] -file _what_* + +*search [_option_...] -all _what_* + + By default, search the names, short descriptions, and long + descriptions of all locally installed packages for the argument + _what_, interpreted as a (Perl) regular expression. + + Options: + + *-file* + + List all filenames containing _what_. + + *-all* + + Search everything: package names, descriptions and filenames. + + *-global* -B.6.25.5 search [_option_...] -characterization _what_ -...................................................... + Search the TeX Live Database of the installation medium, + instead of the local installation. + + *-word* + + Restrict the search of package names and descriptions (but not + filenames) to match only full words. For example, searching + for 'table' with this option will not output packages + containing the word 'tables' (unless they also contain the + word 'table' on its own). -File: tlbuild.info, Node: tlmgr search [_option_...] --all _what_, Prev: tlmgr search [_option_...] --characterization _what_, Up: tlmgr search [_option_...] _what_ +File: tlbuild.info, Node: tlmgr shell, Next: tlmgr show, Prev: tlmgr search, Up: tlmgr ACTIONS -B.6.25.6 search [_option_...] -all _what_ -......................................... +B.6.27 shell +------------ -By default, search the names, short descriptions, and long descriptions -of all locally installed packages for the argument _what_, interpreted -as a regular expression. +Starts an interactive mode, where tlmgr prompts for commands. This can +be used directly, or for scripting. The first line of output is +'protocol' _n_, where _n_ is an unsigned number identifying the protocol +version (currently 1). - Options: + In general, tlmgr actions that can be given on the command line +translate to commands in this shell mode. For example, you can say +'update --list' to see what would be updated. The TLPDB is loaded the +first time it is needed (not at the beginning), and used for the rest of +the session. -*-global* + Besides these actions, a few commands are specific to shell mode: - Search the TeX Live Database of the installation medium, instead of - the local installation. +protocol -*-word* + Print 'protocol _n_', the current protocol version. - Restrict the search to match only full words. For example, - searching for 'table' with this option will not output packages - containing the word 'tables' (unless they also contain the word - 'table' on its own). +help -*-list* + Print pointers to this documentation. - If a search for any (or all) taxonomies is done, by specifying one - of the taxonomy options below, then instead of searching for - packages, list the entire corresponding taxonomy (or all of them). - See *note TAXONOMIES: tlmgr TAXONOMIES. below. +version - Other search options are selected by specifying one of the following: + Print tlmgr version information. -*-file* +quit, end, bye, byebye, EOF - List all filenames containing _what_. + Exit. -*-taxonomy* +restart -*-keyword* + Restart 'tlmgr shell' with the original command line; most useful + when developing 'tlmgr'. -*-functionality* +load [local|remote] -*-characterization* + Explicitly load the local or remote, respectively, TLPDB. - Search in the corresponding taxonomy (or all) instead of the - package descriptions. See *note TAXONOMIES: tlmgr TAXONOMIES. - below. +save -*-all* + Save the local TLPDB, presumably after other operations have + changed it. + +get [_var_] =item set [_var_ [_val_]] - Search for package names, descriptions, and taxonomies, but not - files. + Get the value of _var_, or set it to _val_. Possible _var_ names: + 'debug-translation', 'machine-readable', 'no-execute-actions', + 'require-verification', 'verify-downloads', 'repository', and + 'prompt'. All except 'repository' and 'prompt' are booleans, + taking values 0 and 1, and behave like the corresponding command + line option. The 'repository' variable takes a string, and sets + the remote repository location. The 'prompt' variable takes a + string, and sets the current default prompt. + + If _var_ or then _val_ is not specified, it is prompted for. -File: tlbuild.info, Node: tlmgr uninstall, Next: tlmgr update [_option_]... [_pkg_]..., Prev: tlmgr search [_option_...] _what_, Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr show, Next: tlmgr uninstall, Prev: tlmgr shell, Up: tlmgr ACTIONS -B.6.26 uninstall ----------------- +B.6.28 show +----------- -Uninstalls the entire TeX Live installation. Options: +Synonym for *note info: tlmgr info. -*-force* + +File: tlbuild.info, Node: tlmgr uninstall, Next: tlmgr update [_option_...] [_pkg_...], Prev: tlmgr show, Up: tlmgr ACTIONS - Do not ask for confirmation, remove immediately. +B.6.29 uninstall +---------------- + +Synonym for *note remove: tlmgr remove [_option_...] _pkg_.... -File: tlbuild.info, Node: tlmgr update [_option_]... [_pkg_]..., Prev: tlmgr uninstall, Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr update [_option_...] [_pkg_...], Prev: tlmgr uninstall, Up: tlmgr ACTIONS -B.6.27 update [_option_]... [_pkg_]... +B.6.30 update [_option_...] [_pkg_...] -------------------------------------- Updates the packages given as arguments to the latest version available @@ -3764,7 +4119,10 @@ must be specified. Options: a forcibly removed package, 'tlmgr' quits with an error message. Excludes are not supported in these circumstances. -*-no-auto-remove* [_pkg_]... + This option can also be set permanently in the tlmgr config file + with the key 'update-exclude'. + +*-no-auto-remove* [_pkg_...] By default, 'tlmgr' tries to remove packages which have disappeared on the server, as described above under '--all'. This option @@ -3773,7 +4131,7 @@ must be specified. Options: TeX installation, since packages are not infrequently renamed or replaced by their authors. Therefore this is not recommend. -*-no-auto-install* [_pkg_]... +*-no-auto-install* [_pkg_...] Under normal circumstances 'tlmgr' will install packages which are new on the server, as described above under '--all'. This option @@ -3806,29 +4164,31 @@ must be specified. Options: tlmgr update --reinstall-forcibly-removed --all -*-backup* and *-backupdir* _directory_ +*-backup* + +*-backupdir* _directory_ These two options control the creation of backups of packages _before_ updating; that is, backup of packages as currently - installed. If neither of these options are given, no backup - package will be saved. If '--backupdir' is given and specifies a - writable directory then a backup will be made in that location. If - only '--backup' is given, then a backup will be made to the - directory previously set via the 'option' action (see below). If - both are given then a backup will be made to the specified - _directory_. - - You can set options via the 'option' action to automatically create - backups for all packages, and/or keep only a certain number of - backups. Please see the 'option' action for details. + installed. If neither options is given, no backup will made. If + '--backupdir' is given and specifies a writable directory then a + backup will be made in that location. If only '--backup' is given, + then a backup will be made to the directory previously set via the + *note option: tlmgr option. action (see below). If both are given + then a backup will be made to the specified _directory_. + + You can also set options via the *note option: tlmgr option. action + to automatically make backups for all packages, and/or keep only a + certain number of backups. 'tlmgr' always makes a temporary backup when updating packages, in case of download or other failure during an update. In contrast, - the purpose of this '--backup' option is to allow you to save a - persistent backup in case the actual _content_ of the update causes - problems, e.g., introduces an incompatibility. + the purpose of this '--backup' option is to save a persistent + backup in case the actual _content_ of the update causes problems, + e.g., introduces an TeX incompatibility. - The 'restore' action explains how to restore from a backup. + The *note restore: tlmgr restore. action explains how to restore + from a backup. *-no-depends* @@ -3838,7 +4198,8 @@ must be specified. Options: *-no-depends-at-all* - See above under *install* (and beware). + See above under *note install: tlmgr install [_option_...] _pkg_... + (and beware). *-force* @@ -3852,10 +4213,142 @@ installed (e.g., if the selected mirror is out of date), 'tlmgr' does not downgrade. Also, packages for uninstalled platforms are not installed. + 'tlmgr' saves a copy of the 'texlive.tlpdb' file used for an update +with a suffix representing the repository url, as in +'tlpkg/texlive.tlpdb.'_long-hash-string_. These can be useful for +fallback information, but if you don't like them accumulating (e.g., +'mirror.ctan.org' resolves to many different hosts, each resulting in a +possibly different hash), it's harmless to delete them. + + +File: tlbuild.info, Node: tlmgr CONFIGURATION FILE FOR TLMGR, Next: tlmgr CRYPTOGRAPHIC VERIFICATION, Prev: tlmgr ACTIONS, Up: tlmgr + +B.7 CONFIGURATION FILE FOR TLMGR +================================ + +There are two configuration files for 'tlmgr': One is system-wide in +'TEXMFSYSCONFIG/tlmgr/config', and the other is user-specific in +'TEXMFCONFIG/tlmgr/config'. The user-specific one is the default for +the 'conf tlmgr' action. (Run 'kpsewhich -var-value=TEXMFSYSCONFIG' or +'... TEXMFCONFIG ...' to see the actual directory names.) + + A few defaults corresponding to command-line options can be set in +these configuration files. In addition, the system-wide file can +contain a directive to restrict the allowed actions. + + In these config files, empty lines and lines starting with # are +ignored. All other lines must look like: + + key = value + + where the spaces are optional but the '=' is required. + + The allowed keys are: + +'auto-remove', value 0 or 1 (default 1), same as command-line option. + +'gui-expertmode', value 0 or 1 (default 1). This switches between the full GUI and a simplified GUI with only the most common settings. + +'gui-lang' _llcode_, with a language code value as with the command-line option. + +'no-checksums', value 0 or 1 (default 0, see below). + +'persistent-downloads', value 0 or 1 (default 1), same as command-line option. + +'require-verification', value 0 or 1 (default 0), same as command-line option. + +'update-exclude', value: comma-separated list of packages (no space allowed). Same as the command line option '--exclude' for the action 'update'. + +'verify-downloads', value 0 or 1 (default 1), same as command-line option. + + The system-wide config file can contain one additional key: + +'allowed-actions' _action1_ [,_action_,...] The value is a comma-separated list of 'tlmgr' actions which are allowed to be executed when 'tlmgr' is invoked in system mode (that is, without '--usermode'). + + This allows distributors to include the 'tlmgr' in their packaging, + but allow only a restricted set of actions that do not interfere + with their distro package manager. For native TeX Live + installations, it doesn't make sense to set this. + + The 'no-checksums' key needs more explanation. By default, package +checksums computed and stored on the server (in the TLPDB) are compared +to checksums computed locally after downloading. 'no-checksums' +disables this process. + + The checksum algorithm is SHA-512. Your system must have one of +(looked for in this order) the Perl 'Digest::SHA' module, the 'openssl' +program (<http://openssl.org>), the 'sha512sum' program (from GNU +Coreutils, <http://www.gnu.org/software/coreutils>), or finally the +'shasum' program (just to support old Macs). If none of these are +available, a warning is issued and 'tlmgr' proceeds without checking +checksums. (Incidentally, other SHA implementations, such as the pure +Perl and pure Lua modules, are much too slow to be usable in our +context.) 'no-checksums' avoids the warning. + -File: tlbuild.info, Node: tlmgr USER MODE, Next: tlmgr CONFIGURATION FILE FOR TLMGR, Prev: tlmgr ACTIONS, Up: tlmgr +File: tlbuild.info, Node: tlmgr CRYPTOGRAPHIC VERIFICATION, Next: tlmgr USER MODE, Prev: tlmgr CONFIGURATION FILE FOR TLMGR, Up: tlmgr + +B.8 CRYPTOGRAPHIC VERIFICATION +============================== + +'tlmgr' and 'install-tl' perform cryptographic verification if possible. +If verification is performed and successful, the programs report +'(verified)' after loading the TLPDB; otherwise, they report '(not +verified)'. But either way, by default the installation and/or updates +proceed normally. -B.7 USER MODE + If a program named 'gpg' is available (that is, found in 'PATH'), by +default cryptographic signatures will be checked: we require the main +repository be signed, but not any additional repositories. If 'gpg' is +not available, by default signatures are not checked and no verification +is carried out, but 'tlmgr' still proceeds normally. + + The behavior of the verification can be controlled by the command +line and config file option 'verify-repo' which takes one of the +following values: 'none', 'main', or 'all'. With 'none', no +verification whatsoever is attempted. With 'main' (the default) +verification is required only for the main repository, and only if 'gpg' +is available; though attempted for all, missing signatures of subsidiary +repositories will not result in an error. Finally, in the case of +'all', 'gpg' must be available and all repositories need to be signed. + + In all cases, if a signature is checked and fails to verify, an error +is raised. + + Cryptographic verification requires checksum checking (described just +above) to succeed, and a working GnuPG ('gpg') program (see below for +search method). Then, unless cryptographic verification has been +disabled, a signature file ('texlive.tlpdb.*.asc') of the checksum file +is downloaded and the signature verified. The signature is created by +the TeX Live Distribution GPG key 0x06BAB6BC, which in turn is signed by +Karl Berry's key 0x30D155AD and Norbert Preining's key 0x6CACA448. All +of these keys are obtainable from the standard key servers. + + Additional trusted keys can be added using the 'key' action. + +* Menu: + +* tlmgr Configuration of GnuPG invocation:: + + +File: tlbuild.info, Node: tlmgr Configuration of GnuPG invocation, Up: tlmgr CRYPTOGRAPHIC VERIFICATION + +B.8.1 Configuration of GnuPG invocation +--------------------------------------- + +The executable used for GnuPG is searched as follows: If the environment +variable 'TL_GNUPG' is set, it is tested and used; otherwise 'gpg' is +checked; finally 'gpg2' is checked. + + Further adaptation of the 'gpg' invocation can be made using the two +environment variables 'TL_GNUPGHOME', which is passed to 'gpg' as the +value for '--homedir', and 'TL_GNUPGARGS', which replaces the default +options '--no-secmem-warning --no-permission-warning'. + + +File: tlbuild.info, Node: tlmgr USER MODE, Next: tlmgr MULTIPLE REPOSITORIES, Prev: tlmgr CRYPTOGRAPHIC VERIFICATION, Up: tlmgr + +B.9 USER MODE ============= 'tlmgr' provides a restricted way, called "user mode", to manage @@ -3881,7 +4374,8 @@ currently not supported, but may be in a future release. Some 'tlmgr' actions don't need any write permissions and thus work the same in user mode and normal mode. Currently these are: 'check', -'help', 'list', 'print-platform', 'search', 'show', 'version'. +'help', 'list', 'print-platform', 'print-platform-info', 'search', +'show', 'version'. On the other hand, most of the actions dealing with package management do need write permissions, and thus behave differently in @@ -3911,14 +4405,14 @@ be installed into a user tree. * Menu: -* tlmgr user mode install:: -* tlmgr user mode backup; restore; remove; update:: -* tlmgr user mode generate; option; paper:: +* tlmgr User mode install:: +* tlmgr User mode backup, restore, remove, update:: +* tlmgr User mode generate, option, paper:: -File: tlbuild.info, Node: tlmgr user mode install, Next: tlmgr user mode backup; restore; remove; update, Up: tlmgr USER MODE +File: tlbuild.info, Node: tlmgr User mode install, Next: tlmgr User mode backup, restore, remove, update, Up: tlmgr USER MODE -B.7.1 user mode install +B.9.1 User mode install ----------------------- In user mode, the 'install' action checks that the package and all @@ -3935,10 +4429,14 @@ collection-context' would install 'collection-basic' and other collections, while in user mode, _only_ the packages mentioned in 'collection-context' are installed. + If a package shipping map files is installed in user mode, a backup +of the user's 'updmap.cfg' in 'USERTREE/web2c/' is made, and then this +file regenerated from the list of installed packages. + -File: tlbuild.info, Node: tlmgr user mode backup; restore; remove; update, Next: tlmgr user mode generate; option; paper, Prev: tlmgr user mode install, Up: tlmgr USER MODE +File: tlbuild.info, Node: tlmgr User mode backup, restore, remove, update, Next: tlmgr User mode generate, option, paper, Prev: tlmgr User mode install, Up: tlmgr USER MODE -B.7.2 user mode backup; restore; remove; update +B.9.2 User mode backup, restore, remove, update ----------------------------------------------- In user mode, these actions check that all packages to be acted on are @@ -3946,9 +4444,9 @@ installed in the user tree before proceeding; otherwise, they behave just as in normal mode. -File: tlbuild.info, Node: tlmgr user mode generate; option; paper, Prev: tlmgr user mode backup; restore; remove; update, Up: tlmgr USER MODE +File: tlbuild.info, Node: tlmgr User mode generate, option, paper, Prev: tlmgr User mode backup, restore, remove, update, Up: tlmgr USER MODE -B.7.3 user mode generate; option; paper +B.9.3 User mode generate, option, paper --------------------------------------- In user mode, these actions operate only on the user tree's @@ -3956,78 +4454,7 @@ configuration files and/or 'texlive.tlpdb'. creates configuration files in user tree -File: tlbuild.info, Node: tlmgr CONFIGURATION FILE FOR TLMGR, Next: tlmgr TAXONOMIES, Prev: tlmgr USER MODE, Up: tlmgr - -B.8 CONFIGURATION FILE FOR TLMGR -================================ - -A small subset of the command line options can be set in a config file -for 'tlmgr' which resides in 'TEXMFCONFIG/tlmgr/config'. By default, -the config file is in '~/.texliveYYYY/texmf-config/tlmgr/config' -(replacing 'YYYY' with the year of your TeX Live installation). This is -_not_ 'TEXMFSYSVAR', so that the file is specific to a single user. - - In this file, empty lines and lines starting with # are ignored. All -other lines must look like - - key = value - - where the allowed keys are 'gui-expertmode' (value 0 or 1), -'persistent-downloads' (value 0 or 1), 'auto-remove' (value 0 or 1), and -'gui-lang' (value like in the command line option). - - 'persistent-downloads', 'gui-lang', and 'auto-remove' correspond to -the respective command line options of the same name. 'gui-expertmode' -switches between the full GUI and a simplified GUI with only the -important and mostly used settings. - - -File: tlbuild.info, Node: tlmgr TAXONOMIES, Next: tlmgr MULTIPLE REPOSITORIES, Prev: tlmgr CONFIGURATION FILE FOR TLMGR, Up: tlmgr - -B.9 TAXONOMIES -============== - -tlmgr allows searching and listing of various categorizations, which we -call _taxonomies_, as provided by an enhanced TeX Catalogue (available -for testing at <http://az.ctan.org>). This is useful when, for example, -you don't know a specific package name but have an idea of the -functionality you need; or when you want to see all packages relating to -a given area. - - There are three different taxonomies, specified by the following -options: - -'--keyword' - - The keywords, as specified at <http://az.ctan.org/keyword>. - -'--functionality' - - The "by-topic" categorization created by J\"urgen Fenn, as - specified at <http://az.ctan.org/characterization/by-function>. - -'--characterization' - - Both the primary and secondary functionalities, as specified at - <http://az.ctan.org/characterization/choose_dimen>. - -'--taxonomy' - - Operate on all the taxonomies. - - The taxonomies are updated nightly and stored within TeX Live, so -Internet access is not required to search them. - - Examples: - - tlmgr search --taxonomy exercise # check all taxonomies for "exercise" - tlmgr search --taxonomy --word table # check for "table" on its own - tlmgr search --list --keyword # dump entire keyword taxonomy - tlmgr show --taxonomy pdftex # show pdftex package information, - # including all taxonomy entries - - -File: tlbuild.info, Node: tlmgr MULTIPLE REPOSITORIES, Next: tlmgr GUI FOR TLMGR, Prev: tlmgr TAXONOMIES, Up: tlmgr +File: tlbuild.info, Node: tlmgr MULTIPLE REPOSITORIES, Next: tlmgr GUI FOR TLMGR, Prev: tlmgr USER MODE, Up: tlmgr B.10 MULTIPLE REPOSITORIES ========================== @@ -4042,11 +4469,11 @@ or should not be included in TeX Live, for whatever reason. installation source to any repository (with the '-repository' or 'option repository' command line options), and perform your operations. - When you are using multiple repositories over a sustained time, -however, explicitly switching between them becomes inconvenient. Thus, -it's possible to tell 'tlmgr' about additional repositories you want to -use. The basic command is 'tlmgr repository add'. The rest of this -section explains further. + When you are using multiple repositories over a sustained length of +time, however, explicitly switching between them becomes inconvenient. +Thus, it's possible to tell 'tlmgr' about additional repositories you +want to use. The basic command is 'tlmgr repository add'. The rest of +this section explains further. When using multiple repositories, one of them has to be set as the main repository, which distributes most of the installed packages. When @@ -4137,15 +4564,17 @@ File: tlbuild.info, Node: tlmgr GUI FOR TLMGR, Next: tlmgr MACHINE-READABLE OU B.11 GUI FOR TLMGR ================== -The graphical user interface for 'tlmgr' needs Perl/Tk to be installed. -For Windows the necessary modules are shipped within TeX Live, for all -other (i.e., Unix-based) systems Perl/Tk (as well as Perl of course) has -to be installed. <http://tug.org/texlive/distro.html#perltk> has a list -of invocations for some distros. +The graphical user interface for 'tlmgr' requires Perl/Tk +<http://search.cpan.org/search?query=perl%2Ftk>. For Windows the +necessary modules are shipped within TeX Live, for all other (i.e., +Unix-based) systems Perl/Tk (as well as Perl of course) has to be +installed outside of TL. <http://tug.org/texlive/distro.html#perltk> has +a list of invocations for some distros. - When started with 'tlmgr gui' the graphical user interface will be -shown. The main window contains a menu bar, the main display, and a -status area where messages normally shown on the console are displayed. + The GUI is started with the invocation 'tlmgr gui'; assuming Tk is +loadable, the graphical user interface will be shown. The main window +contains a menu bar, the main display, and a status area where messages +normally shown on the console are displayed. Within the main display there are three main parts: the 'Display configuration' area, the list of packages, and the action buttons. @@ -4161,6 +4590,7 @@ information about what is going on. * tlmgr Main display:: * tlmgr Menu bar:: +* tlmgr GUI options:: File: tlbuild.info, Node: tlmgr Main display, Next: tlmgr Menu bar, Up: tlmgr GUI FOR TLMGR @@ -4199,9 +4629,8 @@ Category Match Select packages matching for a specific pattern. By default, this - uses the same algorithm as 'tlmgr search', i.e., searches - everything: descriptions, taxonomies, and/or filenames. You can - also select any subset for searching. + searches both descriptions and filenames. You can also select a + subset for searching. Selection @@ -4300,7 +4729,7 @@ Backup General>). -File: tlbuild.info, Node: tlmgr Menu bar, Prev: tlmgr Main display, Up: tlmgr GUI FOR TLMGR +File: tlbuild.info, Node: tlmgr Menu bar, Next: tlmgr GUI options, Prev: tlmgr Main display, Up: tlmgr GUI FOR TLMGR B.11.2 Menu bar --------------- @@ -4354,6 +4783,42 @@ The following entries can be found in the menu bar: <http://tug.org/texlive/doc.html>) and the usual "About" box. +File: tlbuild.info, Node: tlmgr GUI options, Prev: tlmgr Menu bar, Up: tlmgr GUI FOR TLMGR + +B.11.3 GUI options +------------------ + +Some generic Perl/Tk options can be specified with 'tlmgr gui' to +control the display: + +'-background' _color_ + + Set background color. + +'-font "' _fontname_ _fontsize_ '"' + + Set font, e.g., 'tlmgr gui -font "helvetica 18"'. The argument to + '-font' must be quoted, i.e., passed as a single string. + +'-foreground' _color_ + + Set foreground color. + +'-geometry' _geomspec_ + + Set the X geometry, e.g., 'tlmgr gui -geometry 1024x512-0+0' + creates the window of (approximately) the given size in the + upper-right corner of the display. + +'-xrm' _xresource_ + + Pass the arbitrary X resource string _xresource_. + + A few other obscure options are recognized but not mentioned here. +See the Perl/Tk documentation (<http://search.cpan.org/perldoc?Tk>) for +the complete list, and any X documentation for general information. + + File: tlbuild.info, Node: tlmgr MACHINE-READABLE OUTPUT, Next: tlmgr AUTHORS AND COPYRIGHT, Prev: tlmgr GUI FOR TLMGR, Up: tlmgr B.12 MACHINE-READABLE OUTPUT @@ -4366,7 +4831,7 @@ written to stdout). The idea is that a program can get all the information it needs by reading stdout. Currently this option only applies to the *note update: tlmgr update -[_option_]... [_pkg_]..., *note install: tlmgr install [_option_]... +[_option_...] [_pkg_...], *note install: tlmgr install [_option_...] _pkg_..., and *note option: tlmgr option. actions. * Menu: @@ -4518,6 +4983,8 @@ This script and its documentation were written for the TeX Live distribution (<http://tug.org/texlive>) and both are licensed under the GNU General Public License Version 2 or later. + $Id: tlmgr.pl 47303 2018-04-05 17:52:22Z karl $ + File: tlbuild.info, Node: Index, Prev: tlmgr, Up: Top @@ -4639,8 +5106,8 @@ Index * --without-x: --without-x. (line 6) * -C configure option: Build in parallel. (line 11) * -j make option: Build in parallel. (line 6) -* .travis.yml: Continuous integration. - (line 68) +* .travis.yml: CI testing on Travis-CI. + (line 6) * adapting TeX Live for distros: Distro builds. (line 54) * adding a new generic library: Adding a new generic library module. (line 6) @@ -5071,313 +5538,369 @@ Index Tag Table: Node: Top1208 -Node: Introduction2183 -Node: Overview of build system3906 -Node: Prerequisites5949 -Node: Building8347 -Node: Build iteration9595 -Node: Build problems10667 -Node: Build in parallel11070 -Node: Build distribution11662 -Node: Build one package12233 -Node: Installing15585 -Node: Installation directories16600 -Node: Linked scripts18416 -Node: Distro builds19897 -Node: Layout and infrastructure22287 -Node: Build system tools23115 -Node: Top-level directories25126 -Node: Autoconf macros27540 -Node: General setup macros28241 -Node: Macros for programs29108 -Node: Macros for compilers29920 -Node: Macros for libraries31354 -Node: Macros for library and header flags31780 -Node: Macros for Windows33660 -Node: Library modules35237 -Node: png library35726 -Node: zlib library38000 -Node: freetype library38515 -Node: kpathsea library39043 -Node: Program modules40442 -Node: t1utils package40870 -Node: xindy package41421 -Node: xdvik package42571 -Node: asymptote43644 -Node: Extending TeX Live44095 -Node: Adding a new program module44872 -Node: Adding a new generic library module48167 -Node: Adding a new TeX-specific library module50380 -Node: Configure options51067 -Node: Global configure options52449 -Node: --disable-native-texlive-build52991 -Node: --prefix --bindir ...53981 -Node: --disable-largefile54521 -Node: --disable-missing55206 -Node: --enable-compiler-warnings=LEVEL55607 -Node: --enable-cxx-runtime-hack56346 -Node: --enable-maintainer-mode56773 -Node: --enable-multiplatform57302 -Node: --enable-shared57840 -Node: --enable-silent-rules58211 -Node: --without-ln-s58667 -Node: --without-x59018 -Node: Program-specific configure options59206 -Node: --enable-PROG --disable-PROG59849 -Node: --disable-all-pkgs60126 -Node: Configure options for texk/web2c61112 -Node: Configure options for texk/bibtex-x63630 -Node: Configure options for texk/dvipdfm-x64173 -Node: Configure options for texk/dvisvgm64946 -Node: Configure options for texk/texlive65832 -Node: Configure options for texk/xdvik66253 -Node: Configure options for utils/xindy66857 -Node: Library-specific configure options67758 -Node: Configure options for kpathsea68769 -Node: Configure options for system poppler69478 -Node: Variables for configure70269 -Node: Cross compilation71697 -Node: Cross configuring72996 -Node: Cross problems74669 -Node: Coding conventions76316 -Node: Declarations and definitions77055 -Node: Const79237 -Node: Continuous integration81100 -Node: install-tl84634 -Node: install-tl NAME84979 -Node: install-tl SYNOPSIS85137 -Node: install-tl DESCRIPTION85345 -Node: install-tl REFERENCES86346 -Node: install-tl OPTIONS86862 -Ref: install-tl *-gui* [[=]_module_]87216 -Ref: install-tl text87425 -Ref: install-tl wizard87548 -Ref: install-tl perltk87702 -Ref: install-tl *-no-gui*88136 -Ref: install-tl *-lang* _llcode_88217 -Ref: install-tl *-repository* _url|path_88904 -Ref: install-tl *-select-repository*90715 -Ref: install-tl *-all-options*91151 -Ref: install-tl *-custom-bin* _path_91458 -Ref: install-tl *-debug-translation*92113 -Ref: install-tl *-force-platform* _platform_92332 -Ref: install-tl *-help*, *--help*, *-?*92576 -Ref: install-tl *-in-place*92969 -Ref: install-tl *-logfile* _file_93496 -Ref: install-tl *-no-cls*93847 -Ref: install-tl *-non-admin*93978 -Ref: install-tl *--persistent-downloads*94083 -Ref: install-tl *--no-persistent-downloads*94111 -Ref: install-tl *-portable*94719 -Ref: install-tl *-print-platform*94858 -Ref: install-tl *-profile* _profile_95051 -Ref: install-tl *-q*96545 -Ref: install-tl *-scheme* _scheme_96607 -Ref: install-tl *-v*97081 -Ref: install-tl *-version*, *--version*97242 -Node: install-tl ENVIRONMENT VARIABLES97373 -Ref: install-tl TEXLIVE_INSTALL_ENV_NOCHECK97762 -Ref: install-tl TEXLIVE_INSTALL_NO_CONTEXT_CACHE97964 -Ref: install-tl TEXLIVE_INSTALL_PREFIX98070 -Ref: install-tl TEXLIVE_INSTALL_TEXMFCONFIG98101 -Ref: install-tl TEXLIVE_INSTALL_TEXMFHOME98130 -Ref: install-tl TEXLIVE_INSTALL_TEXMFLOCAL98160 -Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSCONFIG98194 -Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSVAR98225 -Ref: install-tl TEXLIVE_INSTALL_TEXMFVAR98253 -Ref: install-tl NOPERLDOC98308 -Node: install-tl AUTHORS AND COPYRIGHT98372 -Node: tlmgr98730 -Node: tlmgr NAME99167 -Node: tlmgr SYNOPSIS99292 -Node: tlmgr DESCRIPTION99482 -Node: tlmgr EXAMPLES100578 -Ref: tlmgr tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet100869 -Ref: tlmgr tlmgr update --list101050 -Ref: tlmgr tlmgr update --all101143 -Ref: tlmgr tlmgr info _pkg_101299 -Node: tlmgr OPTIONS101505 -Ref: tlmgr *--repository* _url|path_102025 -Ref: tlmgr *--gui* [_action_]102750 -Ref: tlmgr *--gui-lang* _llcode_103157 -Ref: tlmgr *--debug-translation*103840 -Ref: tlmgr *--machine-readable*104043 -Ref: tlmgr *--no-execute-actions*104311 -Ref: tlmgr *--package-logfile* _file_104504 -Ref: tlmgr *--pause*104759 -Ref: tlmgr *--persistent-downloads*104914 -Ref: tlmgr *--no-persistent-downloads*104942 -Ref: tlmgr *--pin-file*105436 -Ref: tlmgr *--usermode*105654 -Ref: tlmgr *--usertree* _dir_105774 -Node: tlmgr ACTIONS106324 -Node: tlmgr help107556 -Node: tlmgr version108032 -Node: tlmgr backup [--clean[=_N_]] [--backupdir _dir_] [--all | _pkg_]...108350 -Ref: tlmgr *--backupdir* _directory_109444 -Ref: tlmgr *--all*109641 -Ref: tlmgr *--clean*[=_N_]109863 -Ref: tlmgr *--dry-run*110160 -Node: tlmgr candidates _pkg_110280 -Ref: tlmgr *candidates _pkg_* 1110567 -Node: tlmgr check [_option_]... [files|depends|executes|runfiles|all]110711 -Ref: tlmgr *files*111154 -Ref: tlmgr *depends*111289 -Ref: tlmgr *executes*111631 -Ref: tlmgr *runfiles*111749 -Ref: tlmgr *--use-svn*111861 -Node: tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]]111978 -Node: tlmgr dump-tlpdb [--local|--remote]114050 -Ref: tlmgr *--local*114560 -Ref: tlmgr *--remote*114599 -Node: tlmgr generate [_option_]... _what_115021 -Ref: tlmgr *generate language*115262 -Ref: tlmgr *generate language.dat*115287 -Ref: tlmgr *generate language.def*115312 -Ref: tlmgr *generate language.dat.lua*115341 -Ref: tlmgr *generate fmtutil*115361 -Ref: tlmgr *--dest* _output_file_117598 -Ref: tlmgr *--localcfg* _local_conf_file_118174 -Ref: tlmgr *--rebuild-sys*118297 -Node: tlmgr gui119158 -Node: tlmgr info [_option_...] [collections|schemes|_pkg_...]119402 -Ref: tlmgr *--list*120607 -Ref: tlmgr *--only-installed*120886 -Ref: tlmgr *--taxonomy*121101 -Ref: tlmgr *--keyword*121113 -Ref: tlmgr *--functionality*121131 -Ref: tlmgr *--characterization*121152 -Node: tlmgr init-usertree121365 -Node: tlmgr install [_option_]... _pkg_...121791 -Ref: tlmgr *--file*122155 -Ref: tlmgr *--reinstall*122381 -Ref: tlmgr *--no-depends*122761 -Ref: tlmgr *--no-depends-at-all*122920 -Ref: tlmgr *--dry-run* 1123318 -Ref: tlmgr *--force*123436 -Node: tlmgr option123642 -Ref: tlmgr *option [show]*123815 -Ref: tlmgr *option showall*123833 -Ref: tlmgr *option _key_ [_value_]*123859 -Node: tlmgr paper127707 -Ref: tlmgr *paper [a4|letter]*127892 -Ref: tlmgr *[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [_papersize_|--list]*127966 -Node: tlmgr path [--w32mode=user|admin] [add|remove]128993 -Node: tlmgr pinning130476 -Ref: tlmgr pinning show130783 -Ref: tlmgr pinning add _repo_ _pkgglob_...130856 -Ref: tlmgr pinning remove _repo_ _pkgglob_...130975 -Ref: tlmgr pinning remove _repo_ --all131128 -Node: tlmgr platform list|add|remove _platform_...131182 -Node: tlmgr platform set _platform_131430 -Node: tlmgr platform set auto131658 -Ref: tlmgr *--dry-run* 2132775 -Node: tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]...132884 -Node: tlmgr print-platform134186 -Node: tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]]134658 -Ref: tlmgr *--all* 1135554 -Ref: tlmgr *--backupdir* _directory_ 1135748 -Ref: tlmgr *--dry-run* 3135904 -Ref: tlmgr *--force* 1136021 -Node: tlmgr remove [_option_]... _pkg_...136049 -Ref: tlmgr *--no-depends* 1136572 -Ref: tlmgr *--no-depends-at-all* 1136634 -Ref: tlmgr *--force* 2136690 -Ref: tlmgr *--dry-run* 4137162 -Node: tlmgr repository137269 -Ref: tlmgr *repository list*137477 -Ref: tlmgr *repository list _path|tag_*137507 -Ref: tlmgr *repository add _path_ [_tag_]*137540 -Ref: tlmgr *repository remove _path|tag_*137572 -Ref: tlmgr *repository set _path_[#_tag_] [_path_[#_tag_] ...]*137626 -Node: tlmgr search [_option_...] _what_138710 -Node: tlmgr search [_option_...] --file _what_139221 -Node: tlmgr search [_option_...] --taxonomy _what_139472 -Node: tlmgr search [_option_...] --keyword _what_139783 -Node: tlmgr search [_option_...] --functionality _what_140101 -Node: tlmgr search [_option_...] --characterization _what_140439 -Node: tlmgr search [_option_...] --all _what_140779 -Ref: tlmgr *--global*141227 -Ref: tlmgr *--word*141339 -Ref: tlmgr *--list* 1141578 -Ref: tlmgr *--file* 1141924 -Ref: tlmgr *--taxonomy* 1141981 -Ref: tlmgr *--keyword* 1141993 -Ref: tlmgr *--functionality* 1142011 -Ref: tlmgr *--characterization* 1142032 -Ref: tlmgr *--all* 2142187 -Node: tlmgr uninstall142270 -Ref: tlmgr *--force* 3142524 -Node: tlmgr update [_option_]... [_pkg_]...142580 -Ref: tlmgr *--all* 3142951 -Ref: tlmgr *--self*144692 -Ref: tlmgr *--dry-run* 5145456 -Ref: tlmgr *--list* [_pkg_]145633 -Ref: tlmgr *--exclude* _pkg_146322 -Ref: tlmgr *--no-auto-remove* [_pkg_]...147015 -Ref: tlmgr *--no-auto-install* [_pkg_]...147466 -Ref: tlmgr *--reinstall-forcibly-removed*148122 -Ref: tlmgr *--backup* and *--backupdir* _directory_148686 -Ref: tlmgr *--no-depends* 2149867 -Ref: tlmgr *--no-depends-at-all* 2150070 -Ref: tlmgr *--force* 4150126 -Node: tlmgr USER MODE150552 -Node: tlmgr user mode install153363 -Node: tlmgr user mode backup; restore; remove; update154310 -Node: tlmgr user mode generate; option; paper154752 -Node: tlmgr CONFIGURATION FILE FOR TLMGR155128 -Node: tlmgr TAXONOMIES156219 -Ref: tlmgr --keyword 2156845 -Ref: tlmgr --functionality 2156930 -Ref: tlmgr --characterization 2157086 -Ref: tlmgr --taxonomy 2157227 -Node: tlmgr MULTIPLE REPOSITORIES157768 -Node: tlmgr Pinning159489 -Node: tlmgr GUI FOR TLMGR161464 -Node: tlmgr Main display162686 -Node: tlmgr Display configuration area162938 -Ref: tlmgr Status163299 -Ref: tlmgr Category163463 -Ref: tlmgr Match163649 -Ref: tlmgr Selection163909 -Ref: tlmgr Display configuration buttons164113 -Node: tlmgr Package list area164296 -Ref: tlmgr a checkbox164880 -Ref: tlmgr package name165016 -Ref: tlmgr local revision (and version)165115 -Ref: tlmgr remote revision (and version)165490 -Ref: tlmgr short description165787 -Node: tlmgr Main display action buttons165832 -Ref: tlmgr Update all installed166098 -Ref: tlmgr Update166470 -Ref: tlmgr Install166520 -Ref: tlmgr Remove166706 -Ref: tlmgr Backup166884 -Node: tlmgr Menu bar167041 -Ref: tlmgr tlmgr menu167238 -Ref: tlmgr Options menu167546 -Ref: tlmgr Actions menu168629 -Ref: tlmgr Help menu169057 -Node: tlmgr MACHINE-READABLE OUTPUT169190 -Node: tlmgr Machine-readable update and install output170000 -Ref: tlmgr location-url _location_171276 -Ref: tlmgr total-bytes _count_171492 -Ref: tlmgr _pkgname_171902 -Ref: tlmgr _status_172112 -Ref: tlmgr d172190 -Ref: tlmgr f172250 -Ref: tlmgr u172429 -Ref: tlmgr r172475 -Ref: tlmgr a172598 -Ref: tlmgr i172776 -Ref: tlmgr I172895 -Ref: tlmgr _localrev_172997 -Ref: tlmgr _serverrev_173104 -Ref: tlmgr _size_173216 -Ref: tlmgr _runtime_173385 -Ref: tlmgr _esttot_173455 -Node: tlmgr Machine-readable option output173488 -Node: tlmgr AUTHORS AND COPYRIGHT174000 -Node: Index174347 +Node: Introduction2118 +Node: Overview of build system3838 +Node: Prerequisites5881 +Node: Building8279 +Node: Build iteration9584 +Node: Build problems10656 +Node: Build in parallel11059 +Node: Build distribution11651 +Node: Build one package12222 +Node: Cross compilation15600 +Node: Cross configuring16881 +Node: Cross problems18558 +Node: Installing20209 +Node: Installation directories21224 +Node: Linked scripts23040 +Node: Distro builds24521 +Node: Layout and infrastructure26911 +Node: Build system tools27739 +Node: Top-level directories29750 +Node: Autoconf macros32164 +Node: General setup macros32865 +Node: Macros for programs33732 +Node: Macros for compilers34544 +Node: Macros for libraries35978 +Node: Macros for library and header flags36404 +Node: Macros for Windows38284 +Node: Library modules39861 +Node: png library40350 +Node: zlib library42624 +Node: freetype library43139 +Node: kpathsea library43667 +Node: Program modules45066 +Node: t1utils package45494 +Node: xindy package46045 +Node: xdvik package47195 +Node: asymptote48268 +Node: Extending TeX Live48719 +Node: Adding a new program module49496 +Node: Adding a new generic library module52791 +Node: Adding a new TeX-specific library module55004 +Node: Configure options55691 +Node: Global configure options57074 +Node: --disable-native-texlive-build57616 +Node: --prefix --bindir ...58606 +Node: --disable-largefile59146 +Node: --disable-missing59831 +Node: --enable-compiler-warnings=LEVEL60232 +Node: --enable-cxx-runtime-hack60971 +Node: --enable-maintainer-mode61398 +Node: --enable-multiplatform61927 +Node: --enable-shared62465 +Node: --enable-silent-rules62836 +Node: --without-ln-s63292 +Node: --without-x63643 +Node: Program-specific configure options63831 +Node: --enable-PROG --disable-PROG64474 +Node: --disable-all-pkgs64751 +Node: Configure options for texk/web2c65737 +Node: Configure options for texk/bibtex-x68255 +Node: Configure options for texk/dvipdfm-x68798 +Node: Configure options for texk/dvisvgm69571 +Node: Configure options for texk/texlive70457 +Node: Configure options for texk/xdvik70878 +Node: Configure options for utils/xindy71482 +Node: Library-specific configure options72383 +Node: Configure options for kpathsea73394 +Node: Configure options for system poppler74103 +Node: Variables for configure74894 +Node: Coding conventions76322 +Node: Declarations and definitions77061 +Node: Const79243 +Node: Continuous integration81106 +Node: Transfer from Subversion to Github81760 +Node: Automatic update of the Git mirror83942 +Node: CI testing on Travis-CI84530 +Node: install-tl85210 +Node: install-tl NAME85579 +Node: install-tl SYNOPSIS85737 +Node: install-tl DESCRIPTION85995 +Node: install-tl REFERENCES87062 +Node: install-tl OPTIONS87588 +Ref: install-tl *-gui* [[=]_module_]87929 +Ref: install-tl text88139 +Ref: install-tl wizard88262 +Ref: install-tl perltk88416 +Ref: install-tl *-no-gui*88847 +Ref: install-tl *-lang* _llcode_88928 +Ref: install-tl *-repository* _url|path_89615 +Ref: install-tl *-select-repository*91495 +Ref: install-tl *-all-options*91931 +Ref: install-tl *-custom-bin* _path_92186 +Ref: install-tl *-debug-translation*93017 +Ref: install-tl *-force-platform* _platform_93236 +Ref: install-tl *-help*, *--help*, *-?*93480 +Ref: install-tl *-in-place*93887 +Ref: install-tl *-init-from-profile* _profile_file_94432 +Ref: install-tl *-logfile* _file_94652 +Ref: install-tl *-no-cls*95003 +Ref: install-tl *-non-admin*95137 +Ref: install-tl *-persistent-downloads*95242 +Ref: install-tl *-no-persistent-downloads*95270 +Ref: install-tl *-no-verify-downloads*95888 +Ref: install-tl *-portable*96249 +Ref: install-tl *-print-platform*96388 +Ref: install-tl *-profile* _profile_file_96586 +Ref: install-tl *-q*96766 +Ref: install-tl *-scheme* _scheme_96828 +Ref: install-tl *-v*97302 +Ref: install-tl *-version*, *--version*97457 +Node: install-tl PROFILES97588 +Ref: install-tl instopt_adjustpath (default 0 on Unix, 1 on Windows)100238 +Ref: install-tl instopt_adjustrepo (default 1)100314 +Ref: install-tl instopt_letter (default 0)100451 +Ref: install-tl instopt_portable (default 0)100542 +Ref: install-tl instopt_write18_restricted (default 1)100638 +Node: install-tl ENVIRONMENT VARIABLES101957 +Ref: install-tl TEXLIVE_INSTALL_ENV_NOCHECK102348 +Ref: install-tl TEXLIVE_INSTALL_NO_CONTEXT_CACHE102550 +Ref: install-tl TEXLIVE_INSTALL_NO_WELCOME102660 +Ref: install-tl TEXLIVE_INSTALL_PREFIX102781 +Ref: install-tl TEXLIVE_INSTALL_TEXDIR102807 +Ref: install-tl TEXLIVE_INSTALL_TEXMFCONFIG102838 +Ref: install-tl TEXLIVE_INSTALL_TEXMFVAR102866 +Ref: install-tl TEXLIVE_INSTALL_TEXMFHOME102895 +Ref: install-tl TEXLIVE_INSTALL_TEXMFLOCAL102925 +Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSCONFIG102959 +Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSVAR102990 +Ref: install-tl NOPERLDOC103361 +Node: install-tl AUTHORS AND COPYRIGHT103425 +Node: tlmgr103841 +Node: tlmgr NAME104294 +Node: tlmgr SYNOPSIS104426 +Node: tlmgr DESCRIPTION104616 +Node: tlmgr EXAMPLES105712 +Ref: tlmgr tlmgr option repository ctan105963 +Ref: tlmgr tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet106035 +Ref: tlmgr tlmgr update --list106487 +Ref: tlmgr tlmgr update --all106580 +Ref: tlmgr tlmgr info _what_106737 +Node: tlmgr OPTIONS106999 +Ref: tlmgr *--repository* _url|path_107519 +Ref: tlmgr *--gui* [_action_]108244 +Ref: tlmgr *--gui-lang* _llcode_108651 +Ref: tlmgr *--debug-translation*109334 +Ref: tlmgr *--machine-readable*109537 +Ref: tlmgr *--no-execute-actions*109805 +Ref: tlmgr *--package-logfile* _file_109998 +Ref: tlmgr *--pause*110252 +Ref: tlmgr *--persistent-downloads*110407 +Ref: tlmgr *--no-persistent-downloads*110435 +Ref: tlmgr *--pin-file*110929 +Ref: tlmgr *--usermode*111147 +Ref: tlmgr *--usertree* _dir_111267 +Ref: tlmgr *--verify-repo=[none|main|all]*111393 +Node: tlmgr ACTIONS112292 +Node: tlmgr help113144 +Node: tlmgr version113620 +Node: tlmgr backup113883 +Ref: tlmgr *backup [_option_...] --all*114054 +Ref: tlmgr *backup [_option_...] _pkg_...*114087 +Ref: tlmgr *--backupdir* _directory_114942 +Ref: tlmgr *--all*115159 +Ref: tlmgr *--clean*[=_N_]115411 +Ref: tlmgr *--dry-run*115738 +Node: tlmgr candidates _pkg_115868 +Node: tlmgr check [_option_...] [files|depends|executes|runfiles|all]116214 +Ref: tlmgr *files*116587 +Ref: tlmgr *depends*116722 +Ref: tlmgr *executes*117064 +Ref: tlmgr *runfiles*117182 +Ref: tlmgr *--use-svn*117303 +Node: tlmgr conf117420 +Ref: tlmgr *conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]]*117699 +Ref: tlmgr *conf auxtrees [--conffile _file_] [show|add|delete] [_value_]*117763 +Node: tlmgr dump-tlpdb [_option_...] [--json]120108 +Ref: tlmgr *--local*120541 +Ref: tlmgr *--remote*120580 +Ref: tlmgr *--json*120618 +Node: tlmgr generate121189 +Ref: tlmgr *generate [_option_...] language*121385 +Ref: tlmgr *generate [_option_...] language.dat*121424 +Ref: tlmgr *generate [_option_...] language.def*121463 +Ref: tlmgr *generate [_option_...] language.dat.lua*121506 +Ref: tlmgr *--dest* _output_file_123832 +Ref: tlmgr *--localcfg* _local_conf_file_124408 +Ref: tlmgr *--rebuild-sys*124531 +Node: tlmgr gui125346 +Node: tlmgr info125524 +Ref: tlmgr *info [_option_...] _pkg_...*125686 +Ref: tlmgr *info [_option_...] collections*125720 +Ref: tlmgr *info [_option_...] schemes*125750 +Ref: tlmgr *--list*127280 +Ref: tlmgr *--only-installed*127594 +Ref: tlmgr *--data item1,item2,...*127793 +Ref: tlmgr *--json* 1128374 +Node: tlmgr init-usertree128757 +Node: tlmgr install [_option_...] _pkg_...129138 +Ref: tlmgr *--dry-run* 1129648 +Ref: tlmgr *--file*129765 +Ref: tlmgr *--force*129987 +Ref: tlmgr *--no-depends*130207 +Ref: tlmgr *--no-depends-at-all*130366 +Ref: tlmgr *--reinstall*130766 +Ref: tlmgr *--with-doc*131144 +Ref: tlmgr *--with-src*131157 +Node: tlmgr key131679 +Ref: tlmgr *key list*131837 +Ref: tlmgr *key add _file_*131855 +Ref: tlmgr *key remove _keyid_*131877 +Node: tlmgr list132472 +Node: tlmgr option132634 +Ref: tlmgr *option [--json] [show]*132789 +Ref: tlmgr *option [--json] showall*132815 +Ref: tlmgr *option _key_ [_value_]*132841 +Node: tlmgr paper137238 +Ref: tlmgr *paper [a4|letter]*137387 +Ref: tlmgr *[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [_papersize_|--list]*137461 +Ref: tlmgr *paper --json*137476 +Node: tlmgr path138691 +Ref: tlmgr *path [--w32mode=user|admin] add*138852 +Ref: tlmgr *path [--w32mode=user|admin] remove*138889 +Node: tlmgr pinning140229 +Ref: tlmgr pinning show140470 +Ref: tlmgr pinning add _repo_ _pkgglob_...140543 +Ref: tlmgr pinning remove _repo_ _pkgglob_...140662 +Ref: tlmgr pinning remove _repo_ --all140815 +Node: tlmgr platform140869 +Ref: tlmgr *platform list|add|remove _platform_...*141055 +Ref: tlmgr *platform set _platform_*141082 +Ref: tlmgr *platform set auto*141103 +Ref: tlmgr *--dry-run* 2141989 +Node: tlmgr postaction142108 +Ref: tlmgr *postaction [_option_...] install [shortcut|fileassoc|script] [_pkg_...]*142338 +Ref: tlmgr *postaction [_option_...] remove [shortcut|fileassoc|script] [_pkg_...]*142412 +Ref: tlmgr *--w32mode=[user|admin]*142727 +Ref: tlmgr *--fileassocmode=[1|2]*143143 +Ref: tlmgr *--all* 1143428 +Node: tlmgr print-platform143483 +Node: tlmgr print-platform-info143814 +Node: tlmgr remove [_option_...] _pkg_...144114 +Ref: tlmgr *--all* 2144598 +Ref: tlmgr *--backup*144708 +Ref: tlmgr *--backupdir* _directory_ 1144734 +Ref: tlmgr *--no-depends* 1145139 +Ref: tlmgr *--no-depends-at-all* 1145201 +Ref: tlmgr *--force* 1145304 +Ref: tlmgr *--dry-run* 3145777 +Node: tlmgr repository145884 +Ref: tlmgr *repository list*146072 +Ref: tlmgr *repository list _path|tag_*146102 +Ref: tlmgr *repository add _path_ [_tag_]*146135 +Ref: tlmgr *repository remove _path|tag_*146167 +Ref: tlmgr *repository set _path_[#_tag_] [_path_[#_tag_] ...]*146221 +Node: tlmgr restore147274 +Ref: tlmgr *restore [_option_...] _pkg_ [_rev_]*147453 +Ref: tlmgr *restore [_option_...] --all*147483 +Ref: tlmgr *--all* 3148183 +Ref: tlmgr *--backupdir* _directory_ 2148397 +Ref: tlmgr *--dry-run* 4148578 +Ref: tlmgr *--force* 2148710 +Ref: tlmgr *--json* 2148756 +Node: tlmgr search149083 +Ref: tlmgr *search [_option_...] _what_*149247 +Ref: tlmgr *search [_option_...] --file _what_*149284 +Ref: tlmgr *search [_option_...] --all _what_*149320 +Ref: tlmgr *--file* 1149540 +Ref: tlmgr *--all* 4149602 +Ref: tlmgr *--global*149691 +Ref: tlmgr *--word*149818 +Node: tlmgr shell150133 +Ref: tlmgr protocol150868 +Ref: tlmgr help 1150932 +Ref: tlmgr version 1150985 +Ref: tlmgr quit, end, bye, byebye, EOF151053 +Ref: tlmgr restart151074 +Ref: tlmgr load [local|remote]151197 +Ref: tlmgr save151267 +Ref: tlmgr get [_var_] =item set [_var_ [_val_]]151390 +Node: tlmgr show151991 +Node: tlmgr uninstall152158 +Node: tlmgr update [_option_...] [_pkg_...]152388 +Ref: tlmgr *--all* 5152759 +Ref: tlmgr *--self*154500 +Ref: tlmgr *--dry-run* 5155264 +Ref: tlmgr *--list* [_pkg_]155441 +Ref: tlmgr *--exclude* _pkg_156130 +Ref: tlmgr *--no-auto-remove* [_pkg_...]156930 +Ref: tlmgr *--no-auto-install* [_pkg_...]157381 +Ref: tlmgr *--reinstall-forcibly-removed*158037 +Ref: tlmgr *--backup* 1158572 +Ref: tlmgr *--backupdir* _directory_ 3158598 +Ref: tlmgr *--no-depends* 2159764 +Ref: tlmgr *--no-depends-at-all* 2159967 +Ref: tlmgr *--force* 3160070 +Node: tlmgr CONFIGURATION FILE FOR TLMGR160885 +Ref: tlmgr auto-remove, value 0 or 1 (default 1), same as command-line option.161898 +Ref: tlmgr gui-expertmode, value 0 or 1 (default 1). This switches between the full GUI and a simplified GUI with only the most common settings.162035 +Ref: tlmgr gui-lang _llcode_, with a language code value as with the command-line option.162117 +Ref: tlmgr no-checksums, value 0 or 1 (default 0, see below).162171 +Ref: tlmgr persistent-downloads, value 0 or 1 (default 1), same as command-line option.162251 +Ref: tlmgr require-verification, value 0 or 1 (default 0), same as command-line option.162331 +Ref: tlmgr update-exclude, value: comma-separated list of packages (no space allowed). Same as the command line option --exclude for the action update.162479 +Ref: tlmgr verify-downloads, value 0 or 1 (default 1), same as command-line option.162555 +Ref: tlmgr allowed-actions _action1_ [,_action_,...] The value is a comma-separated list of tlmgr actions which are allowed to be executed when tlmgr is invoked in system mode (that is, without --usermode).162824 +Node: tlmgr CRYPTOGRAPHIC VERIFICATION163910 +Node: tlmgr Configuration of GnuPG invocation166059 +Node: tlmgr USER MODE166697 +Node: tlmgr User mode install169543 +Node: tlmgr User mode backup, restore, remove, update170687 +Node: tlmgr User mode generate, option, paper171129 +Node: tlmgr MULTIPLE REPOSITORIES171505 +Node: tlmgr Pinning173234 +Node: tlmgr GUI FOR TLMGR175209 +Node: tlmgr Main display176549 +Node: tlmgr Display configuration area176801 +Ref: tlmgr Status177162 +Ref: tlmgr Category177326 +Ref: tlmgr Match177512 +Ref: tlmgr Selection177693 +Ref: tlmgr Display configuration buttons177897 +Node: tlmgr Package list area178080 +Ref: tlmgr a checkbox178664 +Ref: tlmgr package name178800 +Ref: tlmgr local revision (and version)178899 +Ref: tlmgr remote revision (and version)179274 +Ref: tlmgr short description179571 +Node: tlmgr Main display action buttons179616 +Ref: tlmgr Update all installed179882 +Ref: tlmgr Update180254 +Ref: tlmgr Install180304 +Ref: tlmgr Remove180490 +Ref: tlmgr Backup180668 +Node: tlmgr Menu bar180825 +Ref: tlmgr tlmgr menu181048 +Ref: tlmgr Options menu181356 +Ref: tlmgr Actions menu182439 +Ref: tlmgr Help menu182867 +Node: tlmgr GUI options183000 +Ref: tlmgr -background _color_183246 +Ref: tlmgr -font " _fontname_ _fontsize_ "183311 +Ref: tlmgr -foreground _color_183469 +Ref: tlmgr -geometry _geomspec_183521 +Ref: tlmgr -xrm _xresource_183713 +Node: tlmgr MACHINE-READABLE OUTPUT183981 +Node: tlmgr Machine-readable update and install output184791 +Ref: tlmgr location-url _location_186067 +Ref: tlmgr total-bytes _count_186283 +Ref: tlmgr _pkgname_186693 +Ref: tlmgr _status_186903 +Ref: tlmgr d186981 +Ref: tlmgr f187041 +Ref: tlmgr u187220 +Ref: tlmgr r187266 +Ref: tlmgr a187389 +Ref: tlmgr i187567 +Ref: tlmgr I187686 +Ref: tlmgr _localrev_187788 +Ref: tlmgr _serverrev_187895 +Ref: tlmgr _size_188007 +Ref: tlmgr _runtime_188176 +Ref: tlmgr _esttot_188246 +Node: tlmgr Machine-readable option output188279 +Node: tlmgr AUTHORS AND COPYRIGHT188791 +Node: Index189190 End Tag Table diff --git a/Build/source/doc/tlbuild.texi b/Build/source/doc/tlbuild.texi index a3b638edc4c..806bff77e9c 100644 --- a/Build/source/doc/tlbuild.texi +++ b/Build/source/doc/tlbuild.texi @@ -2,7 +2,7 @@ @setfilename tlbuild.info @set version 2018 -@set month-year February 2018 +@set month-year April 2018 @set mytitle Building @TeX{} Live (@value{version}) @settitle @value{mytitle} @@ -88,7 +88,6 @@ For an overview of this manual, @pxref{Introduction}. * Installing:: How and where installation happens (or not). * Layout and infrastructure:: Autoconf macros, etc., in detail. * Configure options:: List of all configure options. -* Cross compilation:: Building on host X for target Y. * Coding conventions:: Conventions to follow. * Continuous integration:: Automated build testing. * install-tl:: The @TL{} installer. @@ -336,6 +335,7 @@ supported (sorry). * Build in parallel:: Simultaneous @code{make} processes. * Build distribution:: Making a distribution tarball. * Build one package:: Example of working on just one program. +* Cross compilation:: Building on host X for target Y. @end menu @@ -514,6 +514,153 @@ otherwise, individual packages may use something different. You can explicitly specify the compilers to be used with the environment variables @code{CC}, @code{CXX}, and @code{OBJCXX}. +@node Cross compilation +@section Cross compilation + +@cindex cross compilation +In a cross compilation a @dfn{build} system is used to create +binaries to be executed on a @dfn{host} system with different +hardware and/or operating system. + +@cindex native cross compilation +In simple cases, the build system can execute binaries for the host +system. This typically occurs for bi-arch systems where, e.g., +@code{i386-linux} binaries can run on @code{x86_64-linux} systems and +@code{win32} binaries can run on @code{win64} systems. Although +sometimes called ``native cross'', technically this is not cross +compilation at all. In most such cases it suffices to specify +suitable compiler flags. It might be useful to add the configure +option @code{--build=@var{host}} to get the correct canonical host +name, but note that this should @emph{not} be @code{--host=@var{host}} +(@pxref{Hosts and Cross-Compilation,,, autoconf, GNU Autoconf}). + +In order to build, e.g., 32-bit binaries with @command{clang} on a 64-bit +MacOSX system one could use: + +@example +TL_BUILD_ENV="CC='clang -arch i386' \ + CXX='clang++ -arch i386' \ + OBJCXX='clang++ -arch i386'" \ + ./Build --build=i386-apple-darwin +@end example + +@menu +* Cross configuring:: Configuring for cross compilation. +* Cross problems:: Cross compilation problems. +@end menu + +@node Cross configuring +@subsection Cross configuring + +@cindex cross compilation configuring +@cindex configuring, for cross compilation + +@vindex --host=@var{host} +@vindex --build=@var{host} +In a standard cross compilation, binaries for the host system cannot +execute on the build system and it is necessary to specify the +configure options @code{--host=@var{host}} and +@code{--build=@var{build}} with two different values. + +Building binaries requires suitable ``cross'' tools, e.g., compiler, +linker, and archiver, and perhaps a ``cross'' version of +@code{pkg-config} and similar to locate host system libraries. +Autoconf expects that these cross tools are given by their usual +variables or found under their usual name prefixed with +@code{@var{host}-}. Here a list of such tools and corresponding +variables: + +@example +@code{ar} AR +@code{freetype-config} FT2_CONFIG +@code{g++} CXX +@code{gcc} CC +@code{icu-config} ICU_CONFIG +@code{objdump} OBJDUMP +@code{pkg-config} PKG_CONFIG +@code{ranlib} RANLIB +@code{strip} STRIP +@end example + +@cindex @code{mingw32} +@noindent In order to, e.g., build @code{mingw32} binaries on +@code{x86_64-linux} with a cross compiler found as +@file{i386-pc-mingw32-gcc} one would specify + +@example +--host=i386-pc-mingw32 --build=x86_64-linux-gnu +@end example + +@noindent or perhaps + +@example +--host=mingw32 --build=x86_64-linux CC=i386-pc-mingw32-gcc +@end example + +@noindent but this latter, especially, might require adding @code{CXX} and others. + +Configure arguments such as @code{CFLAGS=@dots{}} refer to the cross +compiler. If necessary, you can specify compilers and flags for the +few auxiliary C and C++ programs required for the build process as +configure arguments + +@vindex BUILDCC@r{,} BUILDCFLAGS@r{, @dots{}} +@example +BUILDCC=@dots{} +BUILDCPPFLAGS=@dots{} +BUILDCFLAGS=@dots{} +BUILDCXX=@dots{} +BUILDCXXFLAGS=@dots{} +BUILDLDFLAGS=@dots{} +@end example + +@node Cross problems +@subsection Cross problems + +@cindex cross compilation problems + +The fact that binaries for the host system cannot be executed on the +build system causes some problems. + +One problem is that configure tests using @code{AC_RUN_IFELSE} can +compile and link the test program but cannot execute it. Such tests +should be avoided if possible and otherwise must supply a pessimistic +test result. + +@pindex squeeze +@pindex web2c @r{program} +@cindex @code{freetype} cross compiling +@vindex CC_BUILD +Another problem arises if the build process must execute some +(auxiliary or installable) programs. Auxiliary programs can be placed +into a subdirectory that is configured natively as is done for +@file{texk/web2c/web2c}, @file{texk/dvipsk/squeeze}, and +@file{texk/xdvik/squeeze}. The module @file{libs/freetype2} uses the +value of @code{CC_BUILD}, @file{@var{build}-gcc}, @file{gcc}, or +@file{cc} as the compiler for the auxiliary program. + +@cindex ICU cross compiling +The situation for installable programs needed by the build process is +somewhat different. A rather expensive possibility, chosen for the ICU +libraries in module @file{libs/icu}, is to first compile natively for +the build system and in a second step to use these (uninstalled) +programs during the cross compilation. + +@pindex tangle +@pindex ctangle +@pindex otangle +@pindex tie +This approach would also be possible for the tools such as +@file{tangle} used in the module @file{texk/web2c} to build the WEB +programs, but that would require first building a native +@code{kpathsea} library. To avoid this complication, cross +compilation of the WEB or CWEB programs requires sufficiently recent +installed versions of @file{tangle}, @file{ctangle}, @file{otangle}, +and @file{tie}. + +@cindex @code{xindy} cross compiling impossible +Building @code{xindy} requires running the host system @file{clisp} +binary, thus cross compilation is not possible. @node Installing @chapter Installing @@ -2196,157 +2343,6 @@ commands used, e.g., to build the @code{xindy} documentation. @end vtable -@node Cross compilation -@chapter Cross compilation - -@cindex cross compilation -In a cross compilation a @dfn{build} system is used to create -binaries to be executed on a @dfn{host} system with different -hardware and/or operating system. - -@cindex native cross compilation -In simple cases, the build system can execute binaries for the host -system. This typically occurs for bi-arch systems where, e.g., -@code{i386-linux} binaries can run on @code{x86_64-linux} systems and -@code{win32} binaries can run on @code{win64} systems. Although -sometimes called ``native cross'', technically this is not cross -compilation at all. In most such cases it suffices to specify -suitable compiler flags. It might be useful to add the configure -option @code{--build=@var{host}} to get the correct canonical host -name, but note that this should @emph{not} be @code{--host=@var{host}} -(@pxref{Hosts and Cross-Compilation,,, autoconf, GNU Autoconf}). - -In order to build, e.g., 32-bit binaries with @command{clang} on a 64-bit -MacOSX system one could use: - -@example -TL_BUILD_ENV="CC='clang -arch i386' \ - CXX='clang++ -arch i386' \ - OBJCXX='clang++ -arch i386'" \ - ./Build --build=i386-apple-darwin -@end example - -@menu -* Cross configuring:: Configuring for cross compilation. -* Cross problems:: Cross compilation problems. -@end menu - - -@node Cross configuring -@section Cross configuring - -@cindex cross compilation configuring -@cindex configuring, for cross compilation - -@vindex --host=@var{host} -@vindex --build=@var{host} -In a standard cross compilation, binaries for the host system cannot -execute on the build system and it is necessary to specify the -configure options @code{--host=@var{host}} and -@code{--build=@var{build}} with two different values. - -Building binaries requires suitable ``cross'' tools, e.g., compiler, -linker, and archiver, and perhaps a ``cross'' version of -@code{pkg-config} and similar to locate host system libraries. -Autoconf expects that these cross tools are given by their usual -variables or found under their usual name prefixed with -@code{@var{host}-}. Here a list of such tools and corresponding -variables: - -@example -@code{ar} AR -@code{freetype-config} FT2_CONFIG -@code{g++} CXX -@code{gcc} CC -@code{icu-config} ICU_CONFIG -@code{objdump} OBJDUMP -@code{pkg-config} PKG_CONFIG -@code{ranlib} RANLIB -@code{strip} STRIP -@end example - -@cindex @code{mingw32} -@noindent In order to, e.g., build @code{mingw32} binaries on -@code{x86_64-linux} with a cross compiler found as -@file{i386-pc-mingw32-gcc} one would specify - -@example ---host=i386-pc-mingw32 --build=x86_64-linux-gnu -@end example - -@noindent or perhaps - -@example ---host=mingw32 --build=x86_64-linux CC=i386-pc-mingw32-gcc -@end example - -@noindent but this latter, especially, might require adding @code{CXX} and others. - -Configure arguments such as @code{CFLAGS=@dots{}} refer to the cross -compiler. If necessary, you can specify compilers and flags for the -few auxiliary C and C++ programs required for the build process as -configure arguments - -@vindex BUILDCC@r{,} BUILDCFLAGS@r{, @dots{}} -@example -BUILDCC=@dots{} -BUILDCPPFLAGS=@dots{} -BUILDCFLAGS=@dots{} -BUILDCXX=@dots{} -BUILDCXXFLAGS=@dots{} -BUILDLDFLAGS=@dots{} -@end example - - -@node Cross problems -@section Cross problems - -@cindex cross compilation problems - -The fact that binaries for the host system cannot be executed on the -build system causes some problems. - -One problem is that configure tests using @code{AC_RUN_IFELSE} can -compile and link the test program but cannot execute it. Such tests -should be avoided if possible and otherwise must supply a pessimistic -test result. - -@pindex squeeze -@pindex web2c @r{program} -@cindex @code{freetype} cross compiling -@vindex CC_BUILD -Another problem arises if the build process must execute some -(auxiliary or installable) programs. Auxiliary programs can be placed -into a subdirectory that is configured natively as is done for -@file{texk/web2c/web2c}, @file{texk/dvipsk/squeeze}, and -@file{texk/xdvik/squeeze}. The module @file{libs/freetype2} uses the -value of @code{CC_BUILD}, @file{@var{build}-gcc}, @file{gcc}, or -@file{cc} as the compiler for the auxiliary program. - -@cindex ICU cross compiling -The situation for installable programs needed by the build process is -somewhat different. A rather expensive possibility, chosen for the ICU -libraries in module @file{libs/icu}, is to first compile natively for -the build system and in a second step to use these (uninstalled) -programs during the cross compilation. - -@pindex tangle -@pindex ctangle -@pindex otangle -@pindex tie -This approach would also be possible for the tools such as -@file{tangle} used in the module @file{texk/web2c} to build the WEB -programs, but that would require first building a native -@code{kpathsea} library. To avoid this complication, cross -compilation of the WEB or CWEB programs requires sufficiently recent -installed versions of @file{tangle}, @file{ctangle}, @file{otangle}, -and @file{tie}. - -@cindex @code{xindy} cross compiling impossible -Building @code{xindy} requires running the host system @file{clisp} -binary, thus cross compilation is not possible. - - @node Coding conventions @chapter Coding conventions @@ -2498,7 +2494,14 @@ mirror of the sources that is pushed to Github is updated (currently) at 30 minute intervals, and only the last commit pushed is tested on Travis-CI. -@subheading Transfer from Subversion to Github +@menu +* Transfer from Subversion to Github:: +* Automatic update of the Git mirror:: +* CI testing on Travis-CI:: +@end menu + +@node Transfer from Subversion to Github +@section Transfer from Subversion to Github git-svn (@url{https://git-scm.com/docs/git-svn}) is used to check out the subtree @code{Build/source} of the Subversion repository. The @@ -2549,7 +2552,8 @@ come from the local @code{master} (not the one on Github) to Subversion, back to @code{master} on @code{texlive.info}, and from there to Github. -@subheading Automatic update of the Git mirror +@node Automatic update of the Git mirror +@section Automatic update of the Git mirror @emph{admin} has installed a cron job on @code{texlive.info} running every 30 minute which essentially runs @code{git svn rebase} and @@ -2558,7 +2562,8 @@ command fetches the changes from the Subversion repository and updates the @code{master} branch with them, the second one pushes changes (if available) to Github. -@subheading CI testing on Travis-CI +@node CI testing on Travis-CI +@section CI testing on Travis-CI @pindex .travis.yml The @code{source} tree of @TL{} contains a top-level file |