{
    "mode": "info",
    "parameter": "tlbuild",
    "section": "",
    "url": "https://www.chedong.com/phpMan.php/info/tlbuild/json",
    "generated": "2026-11-15T01:48:08Z",
    "sections": {
        "File: tlbuild.info,  Node: Top,  Next: Introduction,  Up: (dir)": {
            "content": "",
            "subsections": []
        },
        "Building TeX Live (2023)": {
            "content": "For an overview of this manual, *note Introduction::.\n\n* Menu:\n\n* Introduction::                About this manual.\n* Overview of build system::    The TeX Live build system.\n* Prerequisites::               Requirements for building TeX Live.\n* Building::                    The overall build process.\n* Installing::                  How and where installation happens (or not).\n* Layout and infrastructure::   Autoconf macros, etc., in detail.\n* Configure options::           List of all configure options.\n* Coding conventions::          Conventions to follow.\n* Continuous integration::      Automated build testing.\n* install-tl::                  The TeX Live installer.\n* tlmgr::                       The native TeX Live package manager.\n* Index::                       General index.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Introduction,  Next: Overview of build system,  Prev: Top,  Up: Top": {
            "content": "",
            "subsections": []
        },
        "1 Introduction": {
            "content": "",
            "subsections": []
        },
        "This manual (dated February 2023) corresponds to the TeX Live 2023": {
            "content": "release.\n\nThis manual is aimed at system installers and programmers, and\nfocuses on how to configure, build, and develop the TeX Live (TL)\nsources.  It is also available as plain text files in the source tree:\n'source/README.*'.\n\nThe main 'source/README' file in the TL source tree provides\nmaximally-terse information for doing a build, and portability\ninformation for different systems, along with\n'source/doc/README.solaris'.\n\nFor information on acquiring the TL sources, see\n<https://tug.org/texlive/svn>.  The canonical source repository uses\nSubversion, and we have no plans to change this.\n\nThis manual does not duplicate the information found in other TL\ndocumentation resources, such as:\n\n* The TeX Live web pages: <https://tug.org/texlive>.\n\n* The web page describing how to build the binaries which are\ndistributed with TeX Live: <https://tug.org/texlive/build.html>.\n\n* The TeX Live user manual: <https://tug.org/texlive/doc.html>, or\nrun 'texdoc texlive'.\n\n* Other TeX-related Texinfo manuals (*note (web2c)::, *note\n(kpathsea)::, etc.): <https://tug.org/texinfohtml/>, or check the\n'TeX' category in the GNU Info system.\n\n* Package documentation:\n<https://tug.org/texlive/Contents/live/doc.html>, or the 'doc.html'\nfile at the top level of the installed TL.\n\nAs an exception, the full documentation for 'install-tl' and 'tlmgr'\nis included here as appendices, simply because it is easy to do so.  The\nsame text is available online (linked from\n<https://tug.org/texlive/doc.html>, or by invoking the program with\n'--help' (or look at the end of the source).\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Overview of build system,  Next: Prerequisites,  Prev: Introduction,  Up: Top": {
            "content": "",
            "subsections": []
        },
        "2 Overview of build system": {
            "content": "",
            "subsections": []
        },
        "The TeX Live build system was redesigned in 2009 to consistently use": {
            "content": "",
            "subsections": []
        },
        "Autoconf, Automake, and Libtool.  Thus, running": {
            "content": "'configure && make && make check && make install'\nor the essentially-equivalent top-level 'Build' script suffices to build\nand install the TL programs.  The 'make check' clause performs various\ntests of the generated programs--not strictly required but strongly\nrecommended.  Running 'configure --help' will display a comprehensive\nlist of all 'configure' options.\n\nThe main components of the TL build system are:\n\n'libs/LIB'\nGeneric libraries.\n\n'texk/LIB'\nTeX-specific libraries in subdirectories, notably LIB='kpathsea'.\n(The other one is 'texk/ptexenc'.)\n\n'texk/PROG'\nTeX-specific programs (that use Kpathsea).\n\n'utils/PROG'\nOther programs (that don't use Kpathsea).\n\nThe primary design goal of the build system is modularity.  Each\nprogram and library module (or package) specifies its own requirements\nand properties, such as required libraries, whether an installed\n(system) version of a library can be used, 'configure' options to be\nseen at the top level, and more.  An explicit list of all available\nmodules is kept in a single central place: 'm4/kpse-pkgs.m4'.\n\nA second, related goal is to configure and build each library before\nconfiguring any other (program or library) module which uses that\nlibrary.  This allows checking for properties and features of a library\nbuilt as part of the TL tree in much the same way as for a system\nversion of that library.\n\nAll generic libraries and several programs are maintained\nindependently.  The corresponding modules use (most of) the distributed\nsource tree and document any modifications of that source.\n\nAll this is for the sake of simplifying both upgrading of modules and\nintegrating new modules into the TL build system.  (Despite all efforts,\nneither task is easy.)\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Prerequisites,  Next: Building,  Prev: Overview of build system,  Up: Top": {
            "content": "",
            "subsections": []
        },
        "3 Prerequisites": {
            "content": "",
            "subsections": []
        },
        "Overall, building the TeX Live programs, when using all libraries from": {
            "content": "the TL source tree, requires C and C++11 compilers, GNU 'make', and\nPython.\n\n* If 'make' from your 'PATH' is not GNU 'make', you can set the\n'MAKE' environment variable to whatever is necessary.\n\nGNU 'make' is required only because of third-party libraries,\nnotably FreeType.  Automake/Autoconf output in general, and the\nTL-maintained directories, work with any reasonable 'make'.(1)\n\n* A C++11 compiler is similarly required because of the third-party\nlibraries ICU and HarfBuzz (at least); the program 'dvisvgm' also\nrequires C++11.  It is possible to build what remains with older\ncompilers, but you have to remove the C++11-dependent sources.\n*Note Build one package::.\n\n* Python is required by ICU tests.  (If you know how to disable these\ntests and thus eliminate the requirement, please write.)\n\nA few programs in the tree have additional requirements:\n\n'web2c'\nrequires 'perl' for some tests run by 'make check'.  Incidentally,\nthe TeX Live installer ('install-tl') and manager ('tlmgr') are\nalso written in Perl, but this does not matter for compiling the\nsources.\n\n'xdvik'\n'xpdfopen'\nrequire X11 headers and libraries, typically in devel(opment)\npackages that are not installed by default.\n\n'xetex'\nrequires 'fontconfig' (again both headers and library), or, for\nMacOS only, the 'ApplicationServices' and 'Cocoa' frameworks.\n\n'xindy'\nrequires GNU 'clisp', 'libsigsegv', and 'libiconv'; additionally,\nto build the rules and/or documentation: 'perl', 'latex',\n'pdflatex'.\n",
            "subsections": []
        },
        "Lacking the required tools, building these programs must avoided, e.g.,": {
            "content": "'configure --without-x --disable-xetex --disable-xindy'\n\nModifying source files induces more requirements, as one might\nexpect:\n\n* Modification of any '.y' or '.l' source files requires 'bison' or\n'flex' to update the corresponding C sources.\n\n* Modification of the sources for '.info' files requires 'makeinfo'.\n\n* Modification of any part of the build system (M4 macros,\n'configure.ac', 'Makefile.am', or their fragments) requires GNU M4,\nGNU Autoconf, GNU Automake, and GNU Libtool to update the generated\nfiles.  Furthermore, to reliably reproduce the build files, the\noriginal GNU releases of these tools must be used, not any distro\npackaging of them.  *Note Build system tools::, for more\ndiscussion.\n\nIf you haven't modified any source files, and infrastructure tools\nsuch as 'autoconf' or 'makeinfo' are still being run, check your\ntimestamps--notably, 'use-commit-times' must be set to 'yes' in your\nSubversion configuration (*note Build system tools::).  No\ninfrastructure tools are needed to do a normal build (barring bugs).\n\n---------- Footnotes ----------\n\n(1) There is one exception in TL: the 'tangle-sh' and related rules\nuse '$@' to mean the target name, a feature not present in all 'make's.",
            "subsections": []
        },
        "This could be alleviated by laborious editing, but since there's no way": {
            "content": "to avoid GNU 'make' for builds of the entire tree, it does not seem\nworth the trouble.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Building,  Next: Installing,  Prev: Prerequisites,  Up: Top": {
            "content": "",
            "subsections": []
        },
        "4 Building": {
            "content": "",
            "subsections": []
        },
        "The top-level 'Build' script is intended to simplify building the": {
            "content": "binaries distributed with TeX Live itself--we call this the \"native\" TL\nbuild.  It runs 'configure && make world', which builds everything in a\nsubdirectory of the main source tree (default 'Work/'), installs\neverything in another subdirectory (default 'inst/'), and finally runs\n'make check'.  The exact directory and command names can be specified\nvia environment variables and a few leading options.  All remaining\narguments (assignments or options) are passed to the 'configure' script.",
            "subsections": []
        },
        "Please take a look at the './Build' source file for more information; it": {
            "content": "is a straightforward shell script.\n\nAn alternative, and the one we will mainly discuss here, is to run\n'configure' and 'make' in a suitable empty subdirectory.  Building in\nthe source directory itself is not supported (sorry).\n\n* Menu:\n\n* Build iteration::     What 'configure' and 'make' do in TL.\n* Build in parallel::   Simultaneous 'make' processes.\n* Build distribution::  Making a distribution tarball.\n* Build one package::   Example of working on just one program.\n* Build one engine::    Example of building just one TeX engine.\n* Cross compilation::   Building on host X for target Y.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Build iteration,  Next: Build in parallel,  Up: Building": {
            "content": "",
            "subsections": [
                {
                    "name": "4.1 Build iteration",
                    "content": ""
                }
            ]
        },
        "Running the top-level 'configure' script configures the top level and": {
            "content": "the subdirectories 'libs', 'utils', and 'texk'.  Running 'make' at the\ntop level first iterates over the TeX-specific libraries, and then runs\n'make' in 'libs', 'utils', and 'texk' to iterate over the generic\nlibraries, utility programs, and TeX-specific programs, respectively.\nThese iterations consist of two steps:\n\n1. For each library or program module not yet configured, run\n'configure', adding the configure option '--disable-build' if the\nmodule need not be built, otherwise running 'make all'.\n\n2. For each library or program module that must be built, run 'make'\nfor the selected target(s): 'default' or 'all' to (re-)build,\n'check' to run tests, 'install', etc.\n\nRunning the top-level 'make' a second time iterates again over all\nthe library and program modules, and finds (should find) nothing to be\ndone.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Build in parallel,  Next: Build distribution,  Prev: Build iteration,  Up: Building": {
            "content": "",
            "subsections": [
                {
                    "name": "4.2 Build in parallel",
                    "content": ""
                }
            ]
        },
        "The TL build system carefully formulates dependencies as well as 'make'": {
            "content": "rules when a tool (such as 'tangle', 'ctangle', and 'convert') creates\nseveral output files.  This allows for parallel builds ('make -j N' with\nN>1 or even 'make -j') that can considerably speed up the TL build.\n\nIncidentally, a noticeable speed-up can be independently gained by\nusing a configure cache file, i.e., specifying the 'configure' option\n'-C' (recommended).\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Build distribution,  Next: Build one package,  Prev: Build in parallel,  Up: Building": {
            "content": "",
            "subsections": [
                {
                    "name": "4.3 Build distribution",
                    "content": ""
                }
            ]
        },
        "Running 'make dist' at the top level creates a tarball": {
            "content": "'tex-live-YYYY-MM-DD.tar.xz' from the TL source tree.  Running 'make\ndistcheck' also verifies that this tarball suffices to build and install\nall of TL.\n\nThis is useful for checking consistency of the source tree and",
            "subsections": []
        },
        "Makefiles, but the result is not a complete or even usable TeX system,": {
            "content": "since all the support files are lacking; *note Installing::.  We do not\nactually distribute any such tarball, and have no plans to do so.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Build one package,  Next: Build one engine,  Prev: Build distribution,  Up: Building": {
            "content": "",
            "subsections": [
                {
                    "name": "4.4 Build one package",
                    "content": ""
                }
            ]
        },
        "To build one package, the basic idea is to use the 'configure' option": {
            "content": "'--disable-all-pkgs' (*note --disable-all-pkgs::).  Then all program and\nlibrary modules are configured but none are made.  However, the\n'Makefile's still contain all build rules and dependencies and can be\ninvoked to build an individual program or library, first building any\nrequired libraries.\n\nHere is an example from start to finish for working on 'dvipdfm-x'.",
            "subsections": []
        },
        "Unfortunately, this does not suffice for building the TeX engines; see": {
            "content": "the next section.\n\nmkdir mydir && cd mydir  # new working directory\n\n# Get sources (<https://tug.org/texlive/svn>), e.g.:\nrsync -a --delete --exclude=.svn --exclude=Work \\\ntug.org::tldevsrc/Build/source/ .\n\n# Create build directory:\nmkdir Work && cd Work\n\n# Do the configure:\n../configure --disable-all-pkgs --enable-dvipdfm-x \\\n-C CFLAGS=-g CXXFLAGS=-g >&outc || echo fail\n\n# Do the make:\nmake >&outm || echo fail\n\n# Run the tests:\ncd texk/dvipdfm-x\nmake check\n\n# Run the new binary in the build tree, finding support files\n# in a separate tree for a TeX Live release YYYY\n# (Bourne shell syntax):\nTEXMFROOT=/usr/local/texlive/YYYY \\\nTEXMFCNF=$TEXMFROOT/texmf-dist/web2c \\\n./xdvipdfmx ...\n\nThen you can modify source files in 'mydir/texk/dvipdfm-x' and rerun\n'make' in 'mydir/Work/texk/dvipdfm-x' to rebuild; that build directory\nis where the binary ends up and where you can run a debugger, etc.\n\nThe second line of the 'configure' invocation shows examples of extra\nthings you likely want to specify if you intend to hack the sources (and\nnot just build binaries): the '-C' speeds 'configure' by enabling a\ncache file, and the 'CFLAGS' and 'CXXFLAGS' settings eliminate compiler\noptimization for debugging purposes.\n\nOf course, you need to actually look at the output and check that\nthings are working.  There are many 'configure' options you can tweak as\ndesired; check the output from 'configure --help'.  It is also a good\nidea to run 'make check' after making any changes, to ensure that\nwhatever tests have been written still pass.\n",
            "subsections": []
        },
        "Reducing source download size": {
            "content": ".............................\n",
            "subsections": []
        },
        "The above retrieves the entire TL source tree (several hundred": {
            "content": "megabytes).  It is natural to ask if this is really necessary.  Strictly\nspeaking, the answer is no, but it is vastly more convenient to do so.",
            "subsections": []
        },
        "If you cut down the source tree, you must also give additional": {
            "content": "'configure' flags to individually disable using system versions of\nlibraries, or the intricacies of the dependencies (such as 'teckit'\nrequiring 'zlib') will have undesired side effects.  For an example of\nthis approach, see the 'build-pdftex.sh' script in the 'pdftex'\ndevelopment source (details at <http://pdftex.org>), which is indeed\nsuch a cut-down TL source tree.\n\nGCC used by default\n...................\n",
            "subsections": []
        },
        "By default, the 'gcc' compilers will be used if present; otherwise,": {
            "content": "individual packages may use something different.  You can explicitly\nspecify the compilers to be used with the environment variables 'CC',\n'CXX', and 'OBJCXX'.\n\nRemoving C+11 dependency\n........................\n\nSome libraries and programs require C++11; one such is XeTeX. If you\nwant to build with an older compiler lacking such support, you need to\n(re)move those source directories; unfortunately, specifying '--disable'\nfor them does not suffice.  It's also necessary to specify\n'--disable-xetex' explicitly.  Specifically, before running 'configure\n--disable-xetex ...':\n\nrm -rf libs/icu libs/graphite2 texk/dvisvgm texk/web2c/xetexdir\n\nAlso, even with '--disable-all-pkgs', dependencies are (currently)\nchecked.  One notable case: if a (non-MacOS) system does not have\n'fontconfig', XeTeX cannot be built (*note Prerequisites::), and\n'configure' will terminate even with '--disable-xetex'.  To proceed\nwithout such dependencies, specify '--enable-missing' also.\n\nAs of 2022, HarfBuzz also requires C++11.  Therefore even more would\nhave to be disabled and removed, notably including 'luahbtex', the\nstandard engine used for LuaLaTeX.  Removing that would not be\nacceptable for builds intended for distribution; but perhaps for testing\nthe above information could still be useful.\n\nIn general, the TL 'configure' will run in all directories.",
            "subsections": []
        },
        "Therefore a general workaround for build problems is to remove failing": {
            "content": "directories from the tree, and also specify the relevant '--disable-...'\noption(s).\n\nPatches to improve all this would be most welcome.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Build one engine,  Next: Cross compilation,  Prev: Build one package,  Up: Building": {
            "content": "",
            "subsections": [
                {
                    "name": "4.5 Build one engine",
                    "content": ""
                }
            ]
        },
        "Unfortunately, there is one common case where the steps in the preceding": {
            "content": "section to build one package (*note Build one package::) do not suffice:\nwanting to build one, or a subset, of the TeX engines (or other Web2c\nprograms).\n\nThe simplest way to do this is to disable everything and then\nexplicitly specify what to make.  For example, to build only the\noriginal TeX:\n\ncd Work        # top build directory\n../configure --without-x --disable-shared --disable-all-pkgs \\\n--enable-tex --disable-synctex --disable-xetex \\\n--enable-missing -C CFLAGS=-g CXXFLAGS=-g\nmake\ncd texk/web2c  # cd engine build directory\nmake tex       # must specify target\n\nThe first 'make' run will configure everything, and even build the\nlibraries, even though the packages are disabled.\n\nThe source tree can be cut down to just what is needed for the given\nengine (the separate pdfTeX and LuaTeX source repositories do this, for\nexample), but see caveats in previous section.  When the\n'--disable-xetex' and '--enable-missing' options are needed is also\nexplained in the previous section.\n\nIf you want to debug an X-related program or shared library setup, or\nother variants, change the 'configure' options accordingly.  Either\n'../Build' or '../configure' can be run.\n\nThen it is necessary to again specify the target engine ('tex', in\nthe above) in the 'make'.\n\nAll these complications are rather unfortunate.  Patches are welcome.\n",
            "subsections": []
        },
        "Testing one engine": {
            "content": "..................\n\nTo run only the tests for a given engine, say 'hitex':\n\nmake -C $ww check SUBDIRS=. TESTS='$(hitextests)'\n\nwhere '$ww' is the web2c build directory, that is,\n'ww=/wherever/Build/source/Work/texk/web2c'.\n\nIt's also possible to run individual tests the same way, using the\ntest name exactly as specified in the '.am' file:\n\nmake -C $ww check SUBDIRS=. TESTS=hitexdir/tests/hello.test\n\nIf you get tired of looking at the 'Entering'/'Leaving directory'\nlines, you can add the (GNU) make option '--no-print-dir'.\n\nYou may find it useful to put lengthy incantations like this into a\ntrivial shell script with a short name (say, 'hitst').  Then you just\nrun 'hitst' and edit the file when necessary to change things around.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Cross compilation,  Prev: Build one engine,  Up: Building": {
            "content": "",
            "subsections": [
                {
                    "name": "4.6 Cross compilation",
                    "content": "In a cross compilation a \"build\" system is used to create binaries to be\nexecuted on a \"host\" system with different hardware and/or operating\nsystem.\n\nIn simple cases, the build system can execute binaries for the host\nsystem.  This typically occurs for bi-arch systems where, e.g.,\n'i386-linux' binaries can run on 'x8664-linux' systems and 'win32'\nbinaries can run on 'win64' systems.  Although sometimes called \"native\ncross\", technically this is not cross compilation at all.  In most such\ncases it suffices to specify suitable compiler flags.  It might be\nuseful to add the configure option '--build=HOST' to get the correct\ncanonical host name, but note that this should not be '--host=HOST'\n(*note (autoconf)Hosts and Cross-Compilation::).\n\nIn order to build, e.g., 32-bit binaries with 'clang' on a 64-bit\nMacOS system one could use:\n\nTLBUILDENV=\"CC='clang -arch i386' \\\nCXX='clang++ -arch i386' \\\nOBJCXX='clang++ -arch i386'\" \\\n./Build --build=i386-apple-darwin\n\n* Menu:\n\n* Cross configuring::           Configuring for cross compilation.\n* Cross problems::              Cross compilation problems.\n"
                }
            ]
        },
        "File: tlbuild.info,  Node: Cross configuring,  Next: Cross problems,  Up: Cross compilation": {
            "content": "",
            "subsections": []
        },
        "In a standard cross compilation, binaries for the host system cannot": {
            "content": "execute on the build system and it is necessary to specify the configure\noptions '--host=HOST' and '--build=BUILD' with two different values.\n\nBuilding binaries requires suitable \"cross\" tools, e.g., compiler,\nlinker, and archiver, and perhaps a \"cross\" version of 'pkg-config' and\nsimilar to locate host system libraries.  Autoconf expects that these\ncross tools are given by their usual variables or found under their\nusual name prefixed with 'HOST-'.  Here a list of such tools and\ncorresponding variables:\n\nar                AR\nfreetype-config   FT2CONFIG\ng++               CXX\ngcc               CC\nicu-config        ICUCONFIG\nobjdump           OBJDUMP\npkg-config        PKGCONFIG\nranlib            RANLIB\nstrip             STRIP\n",
            "subsections": []
        },
        "In order to, e.g., build 'mingw32' binaries on 'x8664-linux' with a": {
            "content": "cross compiler found as 'i386-pc-mingw32-gcc' one would specify\n\n--host=i386-pc-mingw32 --build=x8664-linux-gnu\n\nor perhaps\n\n--host=mingw32 --build=x8664-linux CC=i386-pc-mingw32-gcc\n\nbut this latter, especially, might require adding 'CXX' and others.\n\nConfigure arguments such as 'CFLAGS=...' refer to the cross compiler.",
            "subsections": []
        },
        "If necessary, you can specify compilers and flags for the few auxiliary": {
            "content": "C and C++ programs required for the build process as configure arguments\n\nBUILDCC=...\nBUILDCPPFLAGS=...\nBUILDCFLAGS=...\nBUILDCXX=...\nBUILDCXXFLAGS=...\nBUILDLDFLAGS=...\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Cross problems,  Prev: Cross configuring,  Up: Cross compilation": {
            "content": "",
            "subsections": []
        },
        "The fact that binaries for the host system cannot be executed on the": {
            "content": "build system causes some problems.\n\nOne problem is that configure tests using 'ACRUNIFELSE' can compile\nand link the test program but cannot execute it.  Such tests should be\navoided if possible and otherwise must supply a pessimistic test result.\n\nAnother problem arises if the build process must execute some\n(auxiliary or installable) programs.  Auxiliary programs can be placed\ninto a subdirectory that is configured natively as is done for\n'texk/web2c/web2c', 'texk/dvipsk/squeeze', and 'texk/xdvik/squeeze'.",
            "subsections": []
        },
        "The module 'libs/freetype2' uses the value of 'CCBUILD', 'BUILD-gcc',": {
            "content": "'gcc', or 'cc' as the compiler for the auxiliary program.\n\nThe situation for installable programs needed by the build process is\nsomewhat different.  A rather expensive possibility, chosen for the ICU\nlibraries in module 'libs/icu', is to first compile natively for the\nbuild system and in a second step to use these (uninstalled) programs\nduring the cross compilation.\n\nThis approach would also be possible for the tools such as 'tangle'\nused in the module 'texk/web2c' to build the WEB programs, but that\nwould require first building a native 'kpathsea' library.  To avoid this\ncomplication, cross compilation of programs written in (C)WEB requires\nsufficiently recent installed versions of 'tangle', 'ctangle',\n'otangle', and 'tie'.\n\nBuilding 'xindy' requires running the host system 'clisp' binary,\nthus cross compilation is painful, but possible.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Installing,  Next: Layout and infrastructure,  Prev: Building,  Up: Top": {
            "content": "",
            "subsections": []
        },
        "5 Installing": {
            "content": "This section discusses the results of 'make install' in the source tree.\n\nThe main consideration is that 'make install' is not enough to make a\nusable TeX installation.  Beyond the compiled binaries, (thousands of)\nsupport files are needed; just as a first example, 'plain.tex' is not in\nthe source tree.\n\nThese support files are maintained completely independently and are\nnot present in the TL source tree.  The best basis for dealing with them\nis the TeX Live (plain text) database in 'Master/tlpkg/texlive.tlpdb',\nand/or the TeX Live installer, 'install-tl'.  More information is under\n'Master/tlpkg' and at <https://tug.org/texlive/distro.html>.\n\n* Menu:\n\n* Installation directories::    The prefix, 'bindir', etc., directories.\n* Linked scripts::              Scripts not maintained in the sources.\n* Distro builds::               Configuring and building for OS distributions.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Installation directories,  Next: Linked scripts,  Up: Installing": {
            "content": "",
            "subsections": [
                {
                    "name": "5.1 Installation directories",
                    "content": ""
                }
            ]
        },
        "Running 'make install' (or 'make install-strip') installs executables in": {
            "content": "'BINDIR', libraries in 'LIBDIR', headers in 'INCLUDEDIR', general data\n(including \"linked scripts\", *note Linked scripts::) in\n'DATAROOTDIR/texmf-dist', man pages in 'MANDIR', and Info files in\n'INFODIR'.\n\nThe values of these directories are determined by 'configure' and can\nbe specified explicitly as options such as '--prefix=PREFIX' or\n'--bindir=BINDIR'; otherwise, they are given by their usual Autoconf\ndefaults:\n\nPREFIX                  /usr/local\nEXECPREFIX             PREFIX\nBINDIR                  EXECPREFIX/bin\nLIBDIR                  EXECPREFIX/lib\nINCLUDEDIR              PREFIX/include\nDATAROOTDIR             PREFIX/share\nMANDIR                  DATAROOTDIR/man\nINFODIR                 DATAROOTDIR/info\n\nexcept possibly modified as follows:\n\n* If the option '--enable-multiplatform' is given, '/PLATFORM' (i.e.,\nthe canonical platform name) is appended to 'BINDIR' and 'LIBDIR'.\nThis is implied for a native TL build.\n\n* In a native TL build, 'DATAROOTDIR' is set to 'PREFIX', 'INFODIR'\nis set to 'PREFIX/texmf-dist/doc/info', and 'MANDIR' to\n'PREFIX/texmf-dist/doc/man', corresponding to the directories used\nin the TL distribution.\n\nThe top-level 'configure' script displays all these installation paths.\n\nFor the native TL build, the 'Build' script leaves the binaries in\n'./inst/bin/STD-SYSTEM-TRIPLET'.  The new binaries are not directly\nusable from that location; they need to be copied to\n'Master/bin/TL-PLATFORM'.  The other files and directories that end up\nin './inst/' are ignored.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Linked scripts,  Next: Distro builds,  Prev: Installation directories,  Up: Installing": {
            "content": "",
            "subsections": [
                {
                    "name": "5.2 Linked scripts",
                    "content": ""
                }
            ]
        },
        "Quite a few executables are architecture-independent shell, Perl, or": {
            "content": "other interpreted scripts, rather than compiled binaries.  A few are\nmaintained as part of the TL source tree, but most are maintained\nelsewhere with copies under 'texk/texlive/linkedscripts'.\n\nThese so-called \"linked scripts\" are installed under\n'DATAROOTDIR/texmf-dist/scripts'; for Unix-like systems a symbolic link\nis made in 'BINDIR'.  For example, a symlink points from 'BINDIR/ps2eps'\nto 'DATAROOTDIR/texmf-dist/scripts/ps2eps/ps2eps.pl'.  For Windows, a\nstandard wrapper binary (copied to, e.g., 'BINDIR/ps2eps.exe') serves\nthe same purpose.  The source for the wrapper is in\n'texk/texlive/w32wrapper'.\n\nOne reason for this is to avoid having many copies of the same\nscript; a more important reason is that it guarantees the scripts will\nstay in sync across the different supported operating systems.\n\nMost important of all, we want the 'BINDIR' resulting from the build\nto be as close as possible to what is in the TL distribution.  At\npresent, there are a few exceptions--Asymptote, Biber, Xindy--and each\none creates considerable extra work.  We don't want to add more.  (See\n<https://tug.org/texlive/build.html> for information about building\nthose exceptions, as well as the 'xz' and 'wget' programs that are used\nin the TL infrastructure.)\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Distro builds,  Prev: Linked scripts,  Up: Installing": {
            "content": "",
            "subsections": [
                {
                    "name": "5.3 Distro builds",
                    "content": ""
                }
            ]
        },
        "Although they use the same code base, building for the native TL": {
            "content": "distribution as shipped by the TeX user groups is typically quite\ndifferent from a \"distro\" build needed by, e.g., a full GNU/Linux or BSD\noperating system distribution.\n\nThe native TL distribution uses shared libraries only when absolutely\nnecessary ('libc', 'libm', X11 libraries, and 'libfontconfig').  In\ncontrast, a distro typically wants to use as many shared libraries as\npossible from elsewhere on the system, including TeX-specific libraries\nsuch as 'libkpathsea' (even though Kpathsea has never officially been\nreleased as a shared library).  In addition, the installation paths\nwill, in general, be completely different.\n\nHere are the 'configure' options that distro builds are likely to\nfind most relevant:\n\n'--disable-native-texlive-build'\nThis must be specified to avoid interference from the many tweaks\nwe do for the native TL build.\n\n'--with-banner-add=/SOMEDISTRO'\nThis isn't technically required, but is strongly recommended, so\nyour build and your distro can be distinguished from others.\n\n'--enable-shared'\nBuild shared versions of the TeX-specific libraries (uses\n'libtool').\n\n'--disable-static'\nDo not build the static versions of the TeX-specific libraries.\n\n'--with-system-LIB'\nLook for and use a system version of the library LIB.  'configure\n--help' will give you the list of possibilities.\n\n'--with-LIB-includes=DIR'\n'--with-LIB-libdir=DIR'\nIf needed, allows you to specify where the headers/code are for the\ngiven library LIB.\n\n'--prefix=/usr'\n'--prefix=/opt/TeXLive'\nOr whatever your convention is.  The default is '/usr/local' and\nyou shouldn't install there for a distro.\n\n'--libdir=\\${execprefix}/lib64'\nMay be needed for 64-bit bi-architecture (GNU/Linux) systems.\n\nYou will need to take care of the support files mentioned above\n(*note Installing::), and many other issues, such as font maps,\nlanguages, and formats, independently of the build.  Norbert Preining\nhas written a detailed article on adapting TL for distros:\n<https://tug.org/TUGboat/tb34-3/tb108preining-distro.pdf>.  (If the\narticle needs updating in the future, perhaps we will merge it into this\ndocument.)\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Layout and infrastructure,  Next: Configure options,  Prev: Installing,  Up: Top": {
            "content": "",
            "subsections": []
        },
        "6 Layout and infrastructure": {
            "content": "",
            "subsections": []
        },
        "The TeX Live source tree is the subtree rooted at 'Build/source' of the": {
            "content": "complete TL distribution and contains the sources for all executables\ndistributed by TL, as well as 'configure' scripts and 'make' rules to\nbuild and install them together with some of their support files.\n\n* Menu:\n\n* Build system tools::      Modifying infrastructure files.\n* Top-level directories::   libs texk utils; am auxdir build-aux m4; doc extra.\n* Autoconf macros::         TL-specific Autoconf macros.\n* Library modules::         Handling libraries, with examples.\n* Program modules::         Handling programs, with examples.\n* Extending TeX Live::         Adding a new module.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Build system tools,  Next: Top-level directories,  Up: Layout and infrastructure": {
            "content": "",
            "subsections": [
                {
                    "name": "6.1 Build system tools",
                    "content": "As mentioned above (*note Prerequisites::), a normal build has few\nrequirements.  On the other hand, if you want to modify the TeX Live\ninfrastructure sources, such as 'configure.ac' or 'Makefile.am' files,\nyou will need to have several additional tools installed.\n\nIn general, the TL build system uses the latest released versions of\nthe GNU build tools, installed directly from the original GNU releases\n(e.g., by building them with 'configure --prefix=/usr/local/gnu' and\nhaving 'PATH' start with '/usr/local/gnu/bin').  We have found that\ntrying to use the versions of these tools packaged for distros causes\nmany extra hassles, so don't do that, tempting as it may be.\n\nCurrently the versions we use are:\n\nautoconf (GNU Autoconf) 2.71\nautomake (GNU automake) 1.16.5\nbison (GNU Bison) 3.8.2\nflex 2.6.0\nltmain.sh (GNU libtool) 2.4.7\nm4 (GNU M4) 1.4.19\nmakeinfo (GNU texinfo) 7.0.2\n\nThese versions should be used to update the generated files (e.g.,\n'configure' or 'Makefile.in') in all or parts of the TL tree after their\ndependencies have been changed.  This can be done explicitly with the\ntop-level 'reautoconf' script or implicitly by using the configure\noption '--enable-maintainer-mode'.\n\nIt has often turned out that the bison and flex versions are not\ncritical; however, the autotools versions are.  If you don't have the\ngiven versions, get them before modifying the build infrastructure.\n\nThe files in the Subversion repository (see\n<https://tug.org/texlive/svn>) are all up to date (barring bugs).  For\nthis to be reflected by their timestamps in your checkout, be sure to\nset 'use-commit-times=yes' in '~/.subversion/config' or the equivalent.\n\nIf timestamps are wrong, you may also be able to avoid unnecessary\nruns of 'bison', 'flex', or 'makeinfo' with 'touch' of the generated\n('.c', '.h', or '.info') files.  With '--enable-maintainer-mode' it may\nalso be necessary to 'touch' first 'aclocal.m4', then 'configure' and\n'config.h.in' (or 'c-auto.in'), and finally all 'Makefile.in' files.\n"
                }
            ]
        },
        "File: tlbuild.info,  Node: Top-level directories,  Next: Autoconf macros,  Prev: Build system tools,  Up: Layout and infrastructure": {
            "content": "",
            "subsections": [
                {
                    "name": "6.2 Top-level directories",
                    "content": ""
                }
            ]
        },
        "Here is a brief description of the top-level directories in the TeX Live": {
            "content": "source tree.\n\nAs mentioned at the beginning of *note Overview of build system::,\nthe main source directories are 'texk/' (TeX-specific programs and\nlibraries), 'utils/' (additional programs), and 'libs/' (generic\nlibraries).\n\nIn addition, the top-level directories 'am/' and 'm4/' contain\n'Makefile.am' fragments and Autoconf macros, respectively, used in many\nplaces.  Specifically, the file 'm4/kpse-pkgs.m4' contains lists of all\nprogram and library modules; missing modules are silently ignored.\n(This helps in creating cut-down source trees.)\n\nEach module contributes fragments (in separate files) defining its\ncapabilities and requirements to the 'configure.ac' scripts at the\ntop-level and in the subdirectories 'libs', 'utils', and 'texk'.  The\nfragments from program modules supply 'configure' options to disable or\nenable building them; those from library modules specify if an installed\n(system) version of that library can be used.  This ultimately\ndetermines which modules need to be built--although all modules must be\nconfigured for the benefit of 'make' targets such as 'dist' or\n'distcheck'.\n\nThe top-level 'build-aux/' directory contains the common files\n'compile', 'config.guess', 'config.sub', 'depcomp', etc. used by most\npackages.  These are taken from the GNU Gnulib sources\n(<https://www.gnu.org/software/gnulib>), which in turn synchronizes with\nany ultimate upstream repository.  There are independent copies of some\nof these in a few other places, e.g.,\n'libs/freetype2/freetype-*/builds/unix/'.  The 'reautoconf' script does\nnot touch those, but a TL cron job keeps them in sync (nightly).\n\nWhen the top-level './Build' script is used to build TL, two more two\nmore top-level directories appear: 'Work/' for the build tree, and\n'inst/' for the install tree (from 'make install').  These names (and\neverything else about 'Build''s operation) can be changed by setting\nenvironment variables before running it; see the script source.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Autoconf macros,  Next: Library modules,  Prev: Top-level directories,  Up: Layout and infrastructure": {
            "content": "",
            "subsections": [
                {
                    "name": "6.3 Autoconf macros",
                    "content": ""
                }
            ]
        },
        "Here we describe a few of the Autoconf macros used in several": {
            "content": "modules--many more are defined in the sources; see the top-level 'm4/'\ndirectory.  These general macros are supplemented by module-specific\nmacros in directories such as 'texk/dvipng/m4/'; some of those are\ndescribed in following sections (*note Library modules:: and *note\nProgram modules::).\n\n* Menu:\n\n* Setup:     General setup macros.\n* Programs:  Macros for programs.\n* Compilers: Macros for compilers.\n* Libraries: Macros for libraries.\n* Flags:     Macros for library and header flags.\n* Windows:   Macros for Windows.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: General setup macros,  Next: Macros for programs,  Up: Autoconf macros": {
            "content": "The TL sources use two general setup macros:\n\n-- Macro: KPSEBASIC (NAME, [MORE-OPTIONS])\nInitialize the basic TL infrastructure for module NAME:\n'AMINITAUTOMAKE([foreign MORE-OPTIONS])'\n'AMMAINTAINERMODE'\n'KPSECOMPILERWARNINGS'\nand make sure the C compiler understands function prototypes.  This\nis used for all generic library and program modules.\n\n-- Macro: KPSECOMMON (NAME, [MORE-OPTIONS])\nLike 'KPSEBASIC' but add:\n'LTPREREQ([2.2.6])'\n'LTINIT([win32-dll])'\n'ACSYSLARGEFILE'\n'ACFUNCFSEEKO'\nalong with checks for frequently used functions, headers, types,\nand structures.  This is used for TeX-specific modules.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Macros for programs,  Next: Macros for compilers,  Prev: General setup macros,  Up: Autoconf macros": {
            "content": "Macros for program checks:\n\n-- Macro: KPSECHECKLATEX\nSet 'LATEX' to the first of 'latex', 'elatex', or 'lambda' which\nexists in 'PATH', or to 'no' if none of them exists.  Call\n'ACSUBST' for 'LATEX'.  The result of this test can be overridden\nby setting the 'LATEX' environment variable or the cache variable\n'accvprogLATEX'.\n\n-- Macro: KPSECHECKPDFLATEX\nCheck for 'pdflatex' in 'PATH' and set 'PDFLATEX'.\n\n-- Macro: KPSECHECKPERL\nCheck for 'perl' or 'perl5' in 'PATH' and set 'PERL'.\n\n-- Macro: KPSEPROGLEX\nCall 'ACPROGLEX' and add the flag '-l' for 'flex'.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Macros for compilers,  Next: Macros for libraries,  Prev: Macros for programs,  Up: Autoconf macros": {
            "content": "Macros for compiler-related checks:\n\n-- Macro: KPSECOMPILERWARNINGS\nWhen using the (Objective) C/C++ compiler, set\n'WARNING[OBJ]C[XX]FLAGS' to suitable warning flags (depending on\nthe value given to or implied for '--enable-compiler-warnings').\nCall 'ACSUBST' for them.  At present this assumes GNU compiler\nwarning options, but could be extended to others if necessary.\n\nThis macro caches its results in the 'kpsecvwarningcflags', ...\nvariables.\n\n-- Macro: KPSECOMPILERVISIBILITY\nWhen using the C or C++ compiler, try to set\n'VISIBILITYC[XX]FLAGS' to flags to hide external symbols.  Call\n'ACSUBST' for this variable.  At present this only tests for the\ncompiler option '-fvisibility=hidden', but could be extended if\nnecessary.\n\nThis macro caches its results in the 'kpsecvvisibilitycflags' or\n'kpsecvvisibilitycxxflags' variable.\n\n-- Macro: KPSECXXHACK\nProvide the configure option '--enable-cxx-runtime-hack'.  If\nenabled and when using 'g++', try to statically link with\n'libstdc++', notably improving portability of the resulting binary.\n\nThis macro caches its result in the 'kpsecvcxxhack' variable.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Macros for libraries,  Next: Macros for library and header flags,  Prev: Macros for compilers,  Up: Autoconf macros": {
            "content": "One macro for a library check:\n\n-- Macro: KPSELARGEFILE (VARIABLE, [EXTRA-DEFINE])\nCall 'ACSYSLARGEFILE' and 'ACFUNCFSEEKO' and append suitable\n'-D' flags (optionally including '-DEXTRA-DEFINE') to VARIABLE.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Macros for library and header flags,  Next: Macros for Windows,  Prev: Macros for libraries,  Up: Autoconf macros": {
            "content": "",
            "subsections": []
        },
        "Each library module 'libs/LIB' or 'texk/LIB' is supplemented by a macro": {
            "content": "'KPSELIBFLAGS' (all uppercase) that provides make variables for that\nlibrary.  E.g., for 'libs/libpng':\n\n-- Macro: KPSELIBPNGFLAGS\nProvide the configure option '--with-system-libpng'.  Set and\n'ACSUBST' 'make' variables for modules using this library (either\nan installed version or from the TeX Live tree):\n\n'LIBPNGINCLUDES'   for use in 'CPPFLAGS',\n'LIBPNGLIBS'       for use in 'LDADD',\n'LIBPNGDEPEND'     for use as a Makefile dependency,\n'LIBPNGRULE'       for the 'make' rules to rebuild the library.\n\n-- Macro: KPSEADDFLAGS (NAME)\nTemporarily extend 'CPPFLAGS' and 'LIBS' with the values required\nfor the library module 'NAME'.\n\n-- Macro: KPSERESTOREFLAGS\nRestore 'CPPFLAGS' and 'LIBS' to their original values.\n\nAs an example, the 'configure.ac' file for a hypothetical program\n'utils/foo' using 'libpng', and hence 'zlib', would contain\nKPSEZLIBFLAGS\nKPSELIBPNGFLAGS\n\nand its 'Makefile.am' would be along these lines:\nbinPROGRAMS = foo\nAMCPPFLAGS = ${LIBPNGINCLUDES} ${ZLIBINCLUDES}\nfooLDADD = ${LIBPNGLIBS} ${ZLIBLIBS}\nfooDEPENDENCIES = ${ZLIBDEPEND} ${LIBPNGDEPEND}\n## Rebuild libz\n@ZLIBRULE@\n## Rebuild libpng\n@LIBPNGRULE@\n\nIf it were necessary to examine whether certain 'zlib' or 'libpng'\nfeatures were available, 'configure.ac' should be continued this way:\nKPSEADDFLAGS([zlib])\n... # tests for 'zlib' features, if any\nKPSEADDFLAGS([libpng])\n... # tests for 'libpng' features\nKPSERESTOREFLAGS # restore 'CPPFLAGS' and 'LIBS'\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Macros for Windows,  Prev: Macros for library and header flags,  Up: Autoconf macros": {
            "content": "",
            "subsections": []
        },
        "Windows differs in several aspects from Unix-like systems, many of them": {
            "content": "due to the lack of symbolic links.\n\n-- Macro: KPSECHECKWIN32\nCheck if compiling for a Windows system.  The result is either 'no'\nfor Unix-like systems (including Cygwin), 'mingw32' for Windows\nwith GCC, or 'native' for Windows with MSVC. The result is cached\nin the 'kpsecvhavewin32' variable.\n\n-- Macro: KPSECONDWIN32\nCall 'KPSECHECKWIN32' and define the Automake conditional 'WIN32'\n('true' if the value of 'kpsecvhavewin32' is not 'no').\n\n-- Macro: KPSECONDMINGW32\nCall 'KPSECONDWIN32' and define the Automake conditional\n'MINGW32' ('true' if the value of 'kpsecvhavewin32' is\n'mingw32').\n\n-- Macro: KPSECONDWIN32WRAP\nCall 'KPSECONDWIN32' and define the Automake conditional\n'WIN32WRAP' ('true' if the standard Windows wrapper\n('texk/texlive/w32wrapper/runscript.exe') exists.  This wrapper is\nused on Windows instead of symlinks for the \"linked scripts\" (*note\nLinked scripts::).\n\n-- Macro: KPSEWIN32CALL\nCall 'KPSECONDWIN32' and check if the file\n'texk/texlive/w32wrapper/callexe.c' exists; if it does, create a\nsymlink in the build tree.  Compiling 'callexe.c' with\n'-DEXEPROG='\"FOO.exe\"'' and installing 'callexe.exe' as 'BAR.exe'\nis used on Windows instead of a symlink 'BAR->FOO' for Unix-like\nsystems.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Library modules,  Next: Program modules,  Prev: Autoconf macros,  Up: Layout and infrastructure": {
            "content": "",
            "subsections": [
                {
                    "name": "6.4 Library modules",
                    "content": ""
                }
            ]
        },
        "Here we discuss some specifics for a few of the libraries in TL, both": {
            "content": "for the details themselves, and as a way of illuminating the general\nstructure and variation.\n\n* Menu:\n\n* png library::       'libs/libpng'\n* zlib library::      'libs/zlib'\n* freetype library::  'libs/freetype2'\n* kpathsea library::  'texk/kpathsea'\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: png library,  Next: zlib library,  Up: Library modules": {
            "content": "The \"generic\" 'png' library uses the source tree in the subdirectory\n'libpng-src/', with all modifications for TL recorded in 'TLpatches/*'.",
            "subsections": []
        },
        "The 'configure.ac' fragment 'ac/withenable.ac' contains": {
            "content": "KPSEWITHLIB([libpng], [zlib])\n\nto specify the module name and indicate the dependency on 'zlib'.  A\nthird literal argument ''tree'' would specify that the library from the",
            "subsections": []
        },
        "TeX Live tree cannot be replaced by a system version.  That not being": {
            "content": "the case here, a second fragment 'ac/libpng.ac' contains\n\nKPSETRYLIB([libpng],\n[#include <png.h>],\n[pngstructp png; pngvoidp io; pngrwptr fn;\npngsetreadfn(png, io, fn);])\n\nthus providing the simple C code\n\n#include <png.h>\nint main ()\n{ pngstructp png; pngvoidp io; pngrwptr fn;\npngsetreadfn(png, io, fn);\nreturn 0; }\n\nwhich Autoconf uses to verify the usability of a system version with C\ncode.  The analogous macro 'KPSETRYLIBXX' would check using C++.",
            "subsections": []
        },
        "These fragments are included by the 'configure.ac' at the top level of": {
            "content": "TL ('Build/source/configure.ac').\n\nFor this library, like many other modules, a proxy build system for\nTL is used, consisting of our own 'configure.ac', 'Makefile.am',\n'include/Makefile.am'; the distributed build system is not used.\n(Consequently, a few generated files and auxiliary scripts are removed\nfrom the distributed source tree.)\n\nThe public headers 'png.h', 'pngconf.h', and 'pnglibconf.h' are\n\"installed\" (as symlinks) under 'include/' in the build tree exactly as\nthey are for a system version under, e.g., '/usr/include/'.\n\nThe module is supplemented by the file 'm4/kpse-libpng-flags.m4' that\ndefines the M4 macro 'KPSELIBPNGFLAGS' used by all modules depending\non this library in their 'configure.ac' to generate the 'make' variables\n'LIBPNGINCLUDES' for use in 'CPPFLAGS', 'LIBPNGLIBS' for use in\n'LDADD', 'LIBPNGDEPEND' for use as dependencies, and 'LIBPNGRULE' for\nthe 'make' rules to rebuild the library.\n\n'm4/kpse-libpng-flags.m4' also supplies the configure option\n'--with-system-libpng', which then uses 'pkg-config' to determine the\nflags required for the system library.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: zlib library,  Next: freetype library,  Prev: png library,  Up: Library modules": {
            "content": "",
            "subsections": []
        },
        "This generic library is very much analogous to 'libpng', but without the": {
            "content": "dependency on any other library.  The file 'm4/kpse-zlib-flags.m4'\nsupplies the configure option '--with-system-zlib', as well as\n'--with-zlib-includes' and '--with-zlib-libdir' to specify non-standard\nlocations of the 'zlib' headers and/or library.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: freetype library,  Next: kpathsea library,  Prev: zlib library,  Up: Library modules": {
            "content": "",
            "subsections": []
        },
        "This module uses a wrapper build system.  In contrast to the proxy build": {
            "content": "described earlier, the wrapper build has an almost trivial\n'configure.ac' and a 'Makefile.am' which invokes the 'configure' and\n'make' in the distributed source, followed by 'make install' with the TL\nbuild tree as destination.  In other words, this actually uses the build\nsystem provided by upstream (possibly patched).\n\nThe flags required for the system library are obtained through\n'freetype-config'.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: kpathsea library,  Prev: freetype library,  Up: Library modules": {
            "content": "",
            "subsections": []
        },
        "This is one of the TeX-specific libraries that are maintained as part of": {
            "content": "TeX Live (*note (kpathsea)::); the other is 'ptexenc'.  These TeX\nlibraries are Libtool libraries (static and/or shared) and are installed\nby 'make install' together with the programs.  They are, however, not\npart of the TL DVD as distributed by TeX user groups, and have never\nbeen officially released for standalone use.\n\nIt is possible, and probably useful for distro builds (*note Distro\nbuilds::), to specify the configure option '--with-system-kpathsea' in\norder to use a system version of the library.  Programs outside the TL\ntree should use 'pkg-config' for the required flags.\n\nIn addition to 'kpathsea/ac/withenable.ac' and\n'kpathsea/ac/kpathsea.ac' here there is a third fragment\n'kpathsea.ac/mktex.ac', included by both 'withenable.ac' and\n'configure.ac', which supplies configure options such as\n'--enable-mktextfm-default'.  These determine the compile time default\nof whether or not to run 'mktextfm' (and similar) to generate a missing\n'.tfm' (or whatever) file.  In any case, however, the command line\noptions '-mktex=tfm' or '-no-mktex=tfm' for the TeX-like engines\noverride this default.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Program modules,  Next: Extending TeX Live,  Prev: Library modules,  Up: Layout and infrastructure": {
            "content": "",
            "subsections": [
                {
                    "name": "6.5 Program modules",
                    "content": "As with libraries (*note Library modules::), here we discuss the details\nfor a few of the programs in TL.\n\n* Menu:\n\n* t1utils package:: 'utils/t1utils'\n* xindy package::   'utils/xindy'\n* xdvik package::   'texk/xdvik'\n* asymptote::       'utils/asymptote'\n"
                }
            ]
        },
        "File: tlbuild.info,  Node: t1utils package,  Next: xindy package,  Up: Program modules": {
            "content": "",
            "subsections": []
        },
        "Here we use the distributed source tree 't1utils-src' with modifications": {
            "content": "documented in 'TLpatches/*' and a proxy build system consisting of\n'configure.ac' and 'Makefile.am'.  The fragment 'ac/withenable.ac'\ncontains\n\nKPSEENABLEPROG([t1utils])\n\nspecifying the module name without any dependencies, and supplies the\nconfigure option '--disable-t1utils'.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: xindy package,  Next: xdvik package,  Prev: t1utils package,  Up: Program modules": {
            "content": "",
            "subsections": []
        },
        "This module uses the distributed source tree 'xindy-src/' with": {
            "content": "modifications documented in 'TLpatches/*', and a wrapper 'configure.ac'\nand 'Makefile.am' that descends into 'xindy-src'.\n\nThe 'xindy' build requires a 'make' that supports a 'VPATH' build,\ncan handle all targets, and does not refer to '${topsrcdir}' or\n'${topbuilddir}'.  The fragment 'xindy/ac/withenable.ac' contains\n\nKPSEENABLEPROG([xindy], , [disable])\nm4include(kpseTL[utils/xindy/ac/xindy.ac])\nm4include(kpseTL[utils/xindy/ac/clisp.ac])\n\nwhere 'disable' in the third argument indicates that 'xindy' is only\nbuilt if explicitly enabled by the user with 'configure --enable-xindy'\n(the need for 'clisp' makes it too painful to enable by default).\n\nThe additional fragments 'ac/xindy.ac' and 'ac/clisp.ac' specify more\n'configure' options to be seen at the top level, with 'ac/xindy.ac' also\nincluded by 'configure.ac'.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: xdvik package,  Next: asymptote,  Prev: xindy package,  Up: Program modules": {
            "content": "",
            "subsections": []
        },
        "This package is maintained as part of the TeX Live tree with sources in": {
            "content": "its own directory ('texk/xdvik/').  The fragment\n'xdvik/ac/withenable.ac' contains\n\ndnl extradirs = texk/xdvik/squeeze\nKPSEENABLEPROG([xdvik], [kpathsea freetype2], [x])\nm4include(kpseTL[texk/xdvik/ac/xdvik.ac])\n\nthus specifying dependencies on the 'kpathsea', 'freetype', and X11\nlibraries.  The M4 comment (following 'dnl') signals the subsidiary\n'squeeze/configure.ac'.  This is needed because the main executable\n'xdvi-bin' (to be installed as, e.g., 'xdvi-xaw') is for the 'host'\nsystem whereas the auxiliary program 'squeeze/squeeze' has to run on the\n'build' system; in a cross compilation, these differ.\n\nThe additional fragment 'ac/xdvik.ac' is also included by\n'configure.ac' and supplies the configure option '--with-xdvi-x-toolkit'\nalso seen at the top level.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: asymptote,  Prev: xdvik package,  Up: Program modules": {
            "content": "",
            "subsections": []
        },
        "This subdirectory contains the sources for 'asy' and 'xasy' but due to": {
            "content": "its complexity and prerequisites (e.g., OpenGL) it is not part of the TL\nbuild system.  These programs must be built and installed independently,\nbut are included on the TL DVD together with their support files.  See\n<https://tug.org/texlive/build.html#asymptote>.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Extending TeX Live,  Prev: Program modules,  Up: Layout and infrastructure": {
            "content": "",
            "subsections": [
                {
                    "name": "6.6 Extending TeX Live",
                    "content": ""
                }
            ]
        },
        "This section outlines the basic process for adding new packages to the": {
            "content": "TL build system.\n\nIn any case, a new package directory 'foo' should contain the\noriginal sources, modified only with changes necessary for TL, in\n'foo/foo-src'.  The changes should be documented in 'foo/TLpatches/*',\nand also be submitted upstream whenever reasonable.  In addition, 'foo/'\nwill need the usual Automake build-related files ('configure.ac',\n'Makefile.am', etc.  Please maintain 'foo/ChangeLog' for all TL changes.\n\n* Menu:\n\n* Adding a new program module::\n* Adding a new engine::\n* Adding a new generic library module::\n* Adding a new TeX-specific library module::\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Adding a new program module,  Next: Adding a new engine,  Up: Extending TeX Live": {
            "content": "A TeX-specific program module in a subdirectory 'texk/PROG' may use the",
            "subsections": []
        },
        "TeX-specific libraries and is included by adding its name 'PROG' to the": {
            "content": "M4 list 'kpsetexkpkgs' defined in 'm4/kpse-pkgs.m4'.\n\nA generic program module in a subdirectory 'utils/PROG' must not use\nthe TeX-specific libraries and is included by adding its name 'PROG' to\nthe M4 list 'kpseutilspkgs' in 'm4/kpse-pkgs.m4'.\n\nIn either case, the subdirectory 'texk/PROG' or 'utils/PROG' must\nprovide a fragment 'ac/withenable.ac' that contains the M4 macro\n'KPSEENABLEPROG' defined in 'm4/kpse-setup.m4' with 'PROG' as the\nmandatory first argument and three optional arguments:\n\n1. a list of required libraries from the TL tree;\n\n2. a list of options: 'disable' if this module is not to be built\nwithout the configure option '--enable-PROG', 'native' if cross\ncompilation is not possible, 'x' if the program requires X11\nlibraries;\n\n3. a comment added to the help text for the 'configure' option\n'--enable-PROG' or '--disable-PROG'.\n\nIf the module requires specific 'configure' options to be seen at the\ntop level, they should be defined in an additional fragment 'ac/PROG.ac'\nincluded from 'ac/withenable.ac' and 'configure.ac'.\n\nUsually, the new program is maintained somewhere outside of TeX Live.",
            "subsections": []
        },
        "In that case, as above, we put the upstream sources into a subdirectory": {
            "content": "'PROG-src' (e.g., 'utils/newprog/newprog-src').  We do not typically run\n'configure' in this original '...-src' directory, but only in our own\ndirectory; but we do compile using the source files in '...-src'.\n\nSo, to summarize the files that must (usually) be created inside a\nnew TL source directory ('texk/newprog' or 'utils/newprog'):\n\n'ac/withenable.ac'\nThe 'KPSEENABLEPROG' call just explained.\n\n'configure.ac'\n'Makefile.am'\nBy merging the contents of the original 'configure.ac' (if\nprovided) and a comparable program already in TL. In the above\nexample, one line that will be needed in 'configure.ac' (can be\nadded before the 'ACCONFIGFILES' at the end) is:\n\nACSUBST([NEWPROGTREE], [newprog-src])\n\nand then use '@NEWPROGTREE@' in 'Makefile.am' where needed.\n\nIn general, there is no magic recipe for this part of the job.\nIt's necessary to think about what needs to be done in the original\nvs. in TeX Live.  It's useful to look at the setup for the most\ncomparable programs already in TL that you can find.  It's also\nuseful to grep the entire 'Build/source' tree for whatever you can\nthink of to investigate how something is done.  Most of the\nTL-specific macros are defined in 'Build/source/m4/*'.\n\n'TLpatches/TL-Changes'\nFirst actions taken after getting the original source tree;\ntypically removal of derived or unused common files.\n\n'TLpatches/patch-...'\nIf any changes are needed to the original sources, record the\npatches here so they can be applied next time.  Also, send them\nupstream so that we don't have to maintain them forever.\n\n'ChangeLog'\nRecord all TL-specific changes, now and in the future.\n\nAfter populating the new TL source directory ('.../newprog/', in the\nabove), run GNU 'autoreconf' there (*note Build system tools::).  Once\nthat works, if you are the one who's eventually going to commit the new\npackage, 'svn add' the necessary files, including the generated\n'Makefile.in aclocal.m4 configure', and 'svn:ignore' the Automake cache\n'autom4te.cache'.  (This is so people checking out the TL source tree do\nnot have to run any autotools, but can simply run 'configure'.)\n\nTo reiterate: do not fail to commit the generated 'configure' and\nother files.  The m4 code in 'kpse-pkgs.m4' uses the existence of\n'configure' to determine whether to descend into (and configure) a given\nsubdirectory.\n\nThen, run the TL tool 'reautoconf' in the top-level TL\n'Build/source/' directory, to incorporate the new program into the build\ntree.  It is good to then rebuild the whole tree (e.g., using TL's\n'Build/Build' script) to get all the necessary files generated.\n\nIt will probably fail.  So then you need to keep at it until the\nprogram compiles and tests successfully.  The most efficient way is to\nrerun 'autoreconf' as needed in the new source directory\n('Build/source/.../newprog'), then 'make' in the corresponding build\ndirectory ('Build/work/.../newprog'), then 'make check', etc.  In the\nend, also make sure that the whole tree builds from scratch.\n\nAfter final success, don't forget to commit.  (Or email the TL\nmaintainers with the patch.)\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Adding a new engine,  Next: Adding a new generic library module,  Prev: Adding a new program module,  Up: Extending TeX Live": {
            "content": "",
            "subsections": []
        },
        "Adding a new TeX engine is not completely different from adding a": {
            "content": "program, but it's not all that similar, either.  In this case, the main\nwork is done by creating a new subdirectory of 'texk/web2c/' for the\nengine.  The subdirectory is conventionally named ending in 'dir', like\n'pdftexdir' and 'xetexdir', to avoid clashes with executable names.\n\nThe source files for the new engine should be put in this\n'NEWENGINEdir' subdirectory.  Also, a file\n'NEWENGINEdir/am/NEWENGINE.am' (e.g., 'pdftexdir/am/pdftex.am' is needed\nwith the Makefile fragment needed to build it.\n\nThe overall 'web2c/Makefile.am' needs to have an 'include' statement\nadded to insert that 'NEWENGINE.am' file.\n\nIn 'web2c/ac/web2c.ac', a line needs to be added in the definition of\nthe 'kpsetexprogs' variable to include it in the build.  That line\nspecifies whether the new engine is built by default, and the additional\nlibraries requires.\n\nFor examples of building engines in CWEB, you can check the existing\n'hitexdir' and 'mplibdir' directories; these are somewhat simpler than",
            "subsections": []
        },
        "LuaTeX.  Of course, every engine will have its own unique features and": {
            "content": "requirements, so existing examples will only take you so far.\n\nWeb2c is built as one \"package\", with each subdirectory's '.am'\nfragment inserted with an Automake 'include'.  This means that, for\ninstance, '$(srcdir)' is '.../web2c', not '.../webdir/enginedir'.  It is\na difficult setup to come to terms with, but the alternative is to\nrecurse into each engine subdirectory, and that would be far worse\n(*note (automake)Directories::).\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Adding a new generic library module,  Next: Adding a new TeX-specific library module,  Prev: Adding a new engine,  Up: Extending TeX Live": {
            "content": "A generic library module in a subdirectory 'libs/LIB' must not depend on",
            "subsections": []
        },
        "TeX-specific libraries, by definition.  It is included by adding its": {
            "content": "name 'LIB' to the M4 macro 'kpselibspkgs' in 'm4/kpse-pkgs.m4'--before\nany other libraries from the TeX Live tree on which it depends.\n\nAs with program modules, the subdirectory 'libs/LIB' must contain the\nsources and build system for the library (and any installable support\nprograms) and a fragment 'ac/withenable.ac' that contains the M4 macro\n'KPSEWITHLIB' defined in 'm4/kpse-setup.m4' with 'LIB' as the\nmandatory first argument and two optional arguments: a list of required\nlibraries from the TL tree, and a list of options: for libraries,\ncurrently there is only one--specify 'tree' if this library cannot be\nreplaced by a system version.\n\nIf a system version can be used, a second fragment 'ac/LIB.ac' is\nneeded, containing the M4 macro 'KPSETRYLIB' (or 'KPSETRYLIBXX')\nwith 'LIB' as the mandatory first argument and two additional arguments\nfor the Autoconf macro 'ACLANGPROGRAM' used to compile and link a\nsmall C (or C++) program as sanity check for using the system library.\n\nIn addition a file 'm4/kpse-LIB-flags' (at the top level) must define\nthe M4 macro 'KPSELIBFLAGS' (all uppercase) setting up the 'make'\nvariables 'LIBINCLUDES', 'LIBLIBS', 'LIBDEPEND', and 'LIBRULE' with\nthe values required for 'CPPFLAGS', 'LDADD', dependencies, and a\n(multi-line) 'make' rule to rebuild the library when necessary.  All of\nthat is needed for the library from the TL tree and, if supported, for a\nsystem version.\n\nIf a system library is allowed, 'KPSELIBFLAGS' also provides the\nconfigure option '--with-system-LIB' and uses the additional M4 macro\n'KPSELIBSYSTEMFLAGS' to generate the 'make' variables for a system\nlibrary.  In addition, the definition of the M4 macro\n'KPSEALLSYSTEMFLAGS' in 'm4/kpse-pkgs.m4' must be extended by the\nline:\n'ACREQUIRE([KPSELIBSYSTEMFLAGS])'\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Adding a new TeX-specific library module,  Prev: Adding a new generic library module,  Up: Extending TeX Live": {
            "content": "A TeX-specific library module in a subdirectory 'texk/LIB' may depend on\nother TeX-specific libraries but must not depend on any generic library\nfrom the TL tree.  It is included in the same general ways as a generic\nlibrary (see the previous section), with these modifications:\n\n* The library name 'LIB' is added to the M4 macro\n'kpsetexlibspkgs', which is also in 'm4/kpse-pkgs.m4'.\n\n* The fragment 'ac/withenable.ac' must use 'KPSEWITHTEXLIB'.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Configure options,  Next: Coding conventions,  Prev: Layout and infrastructure,  Up: Top": {
            "content": "",
            "subsections": []
        },
        "7 Configure options": {
            "content": "",
            "subsections": []
        },
        "Corresponding to the large number of program and library modules there": {
            "content": "are a large number 'configure' options, most of which are described\nhere.  The command\n'configure --help'\nat the top level gives an exhaustive list of all global options and a\nfew important module-specific ones, whereas, e.g.,\n'texk/lcdf-typetools/configure --help'\nalso displays the 'lcdf-typetools' specific options, which are not shown\nat the top level.\n\nThe help text also mentions several influential environment\nvariables, but for TeX Live it is better to specify them as assignments\non the command line.\n\nThe './Build' script used to make the binaries shipped with TeX Live\ninvokes the top-level 'configure' with a few additional options (*note",
            "subsections": []
        },
        "Building::).  The defaults discussed below are those for the actual": {
            "content": "'configure' script; invoking 'configure' via './Build' yields different\nresults.\n\nDefaults for most options are set at the top level and propagated\nexplicitly to all subdirectories.  Options specified on the command line\nare checked for consistency but never modified.\n\n* Menu:\n\n* Global configure options::\n* Program-specific configure options::\n* Library-specific configure options::\n* Variables for configure::\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Global configure options,  Next: Program-specific configure options,  Up: Configure options": {
            "content": "",
            "subsections": [
                {
                    "name": "7.1 Global configure options",
                    "content": "Here are the global configure options.\n\n* Menu:\n\n* --disable-native-texlive-build::\n* --prefix --bindir ...::\n* --disable-largefile::\n* --disable-missing::\n* --enable-compiler-warnings=LEVEL::\n* --enable-cxx-runtime-hack::\n* --enable-maintainer-mode::\n* --enable-multiplatform::\n* --enable-shared::\n* --enable-silent-rules::\n* --without-ln-s::\n* --without-x::\n"
                }
            ]
        },
        "File: tlbuild.info,  Node: --disable-native-texlive-build,  Next: --prefix --bindir ...,  Up: Global configure options": {
            "content": "",
            "subsections": []
        },
        "If enabled (the default), build for a TL binary distribution as shipped": {
            "content": "by the TeX user groups.  This requires GNU 'make' and implies\n'--enable-multiplatform' and '--enable-cxx-runtime-hack' (unless they\nare explicitly disabled), and enforces '--disable-shared'.\n\nIf building TL for a GNU/Linux or other distribution, this should be\ndisabled and system versions of most libraries should be used (*note\nDistro builds::).\n\nA related option, '--enable-texlive-build', is automatically passed\nto all subdirectories (and cannot be disabled).  Subdirectories that can\nalso be built independently from the TL tree (such as 'utils/xindy' and\n'texk/dvipng') but cooperate with TL can use this option to enable\nTL-specific adaptations, such as installation paths.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: --prefix --bindir ...,  Next: --disable-largefile,  Prev: --disable-native-texlive-build,  Up: Global configure options": {
            "content": "",
            "subsections": []
        },
        "These standard Autoconf options specify various installation directories": {
            "content": "as usual.  For the complete list, *note Installation directories::.\n\nAlso as usual, all values are prefixed by the value of 'DESTDIR', if\nset, on the 'make' command line (*note Installation in a temporary\nlocation: (automake)Staged Installs.).\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: --disable-largefile,  Next: --disable-missing,  Prev: --prefix --bindir ...,  Up: Global configure options": {
            "content": "",
            "subsections": []
        },
        "Omit large file support (LFS), which is needed on most 32-bit Unix": {
            "content": "systems for files with 2GB or more.  Regardless of this option, the size\nof 'DVI' and 'GF' files must always be <2GB, due to the file format\nspecifications.\n\nWith LFS, there is no fixed limit on the size of PDF files created by\n'pdftex' or PostScript files created by 'dvips'.\n\nFile: tlbuild.info,  Node: --disable-missing,  Next: --enable-compiler-warnings=LEVEL,  Prev: --disable-largefile,  Up: Global configure options\n\n",
            "subsections": []
        },
        "Immediately terminate the build process if a requested program or": {
            "content": "feature must be disabled, e.g., due to missing libraries.  This can help\nwhen figuring out a specific (sub)set of modules to enable.\n\nFile: tlbuild.info,  Node: --enable-compiler-warnings=LEVEL,  Next: --enable-cxx-runtime-hack,  Prev: --disable-missing,  Up: Global configure options\n\n\nEnable various levels of compiler warnings for C, C++, and/or",
            "subsections": []
        },
        "Objective C: the LEVEL value can be one of: 'no min yes max all'.  The": {
            "content": "default is 'yes' in 'maintainer-mode' (see below) and 'min' otherwise.\nThis option defines the variables 'WARNING[OBJ]C[XX]FLAGS', but these\nvariables are not consistently used in all library and program modules.\nAt present, these warning flags assume options from the GNU compilers.\n\nFile: tlbuild.info,  Node: --enable-cxx-runtime-hack,  Next: --enable-maintainer-mode,  Prev: --enable-compiler-warnings=LEVEL,  Up: Global configure options\n\n\nIf enabled (as it is for the native TL build), when using 'g++', try to\nstatically link with 'libstdc++', thus improving portability of the\nresulting binary.  *Note Macros for compilers::.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: --enable-maintainer-mode,  Next: --enable-multiplatform,  Prev: --enable-cxx-runtime-hack,  Up: Global configure options": {
            "content": "",
            "subsections": []
        },
        "Enable 'make' rules and dependencies not useful (and sometimes": {
            "content": "confusing) to the casual user.  This requires current versions of the\nGNU build tools (*note Build system tools::), as it automatically\nrebuilds infrastructure files as needed.  *Note 'missing' and\n'AMMAINTAINERMODE': (automake)maintainer-mode.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: --enable-multiplatform,  Next: --enable-shared,  Prev: --enable-maintainer-mode,  Up: Global configure options": {
            "content": "If enabled (as it is for the native TL build) and '--bindir=DIR' or\n'--libdir=DIR' are not specified, install executables and libraries in\nper-platform subdirectories of 'EPREFIX/bin' and 'EPREFIX/lib' where\nEPREFIX is the value given or implied for 'execprefix'.  In any case,\nthe values for 'bindir' and 'libdir' are automatically propagated to all\nsubdirectories.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: --enable-shared,  Next: --enable-silent-rules,  Prev: --enable-multiplatform,  Up: Global configure options": {
            "content": "",
            "subsections": []
        },
        "Build shared versions of the TeX-specific libraries such as": {
            "content": "'libkpathsea'.  This is not allowed for a native TL build (i.e.,\n'--disable-native-texlive-build' must also be specified).\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: --enable-silent-rules,  Next: --without-ln-s,  Prev: --enable-shared,  Up: Global configure options": {
            "content": "",
            "subsections": []
        },
        "Enable the use of less verbose build rules.  When using GNU 'make' (or": {
            "content": "any 'make' implementation supporting nested variable expansions), you\ncan specify 'V=1' on the 'make' command line to get more verbosity, or\n'V=0' to get less, regardless of this option.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: --without-ln-s,  Next: --without-x,  Prev: --enable-silent-rules,  Up: Global configure options": {
            "content": "",
            "subsections": []
        },
        "Required when using a system without a working 'ln -s' to build binaries": {
            "content": "for a Unix-like system.  However, 'make install' will not create\nanything useful, and might fail.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: --without-x,  Prev: --without-ln-s,  Up: Global configure options": {
            "content": "Disable all programs using the X Window System.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Program-specific configure options,  Next: Library-specific configure options,  Prev: Global configure options,  Up: Configure options": {
            "content": "",
            "subsections": [
                {
                    "name": "7.2 Program-specific configure options",
                    "content": "Here are (some of) the program-specific 'configure' options.\n\n* Menu:\n\n* --enable-PROG --disable-PROG::\n* --disable-all-pkgs::\n* Configure options for texk/web2c::\n* Configure options for texk/bibtex-x::\n* Configure options for texk/dvipdfm-x::\n* Configure options for texk/dvisvgm::\n* Configure options for texk/texlive::\n* Configure options for texk/xdvik::\n* Configure options for utils/xindy::\n"
                }
            ]
        },
        "File: tlbuild.info,  Node: --enable-PROG --disable-PROG,  Next: --disable-all-pkgs,  Up: Program-specific configure options": {
            "content": "Do or do not build and install the program(s) of module 'PROG'.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: --disable-all-pkgs,  Next: Configure options for texk/web2c,  Prev: --enable-PROG --disable-PROG,  Up: Program-specific configure options": {
            "content": "",
            "subsections": []
        },
        "Do not build any program modules by default--only those explicitly": {
            "content": "enabled.  This is useful when one wants to work on only a single\nprogram, which is specified with an additional '--enable' option, e.g.,\n'--enable-dvipdfm-x'.  It's still simplest to check out and configure\nthe whole source tree, but at least only the program you are interested\nin, and its dependencies, are built.  *Note Build one package::.\n\nWithout this option, all modules are built except those that are\nexplicitly disabled or specify 'disable' in their 'ac/withenable.ac'\nfragment.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Configure options for texk/web2c,  Next: Configure options for texk/bibtex-x,  Prev: --disable-all-pkgs,  Up: Program-specific configure options": {
            "content": "'--with-banner-add=STR'",
            "subsections": []
        },
        "Add 'STR' to the default version string (which is ''TeX Live YEAR'' or": {
            "content": "''Web2C YEAR'') appended to banner lines.  This is ignored for a native\nTL build, but distro builds should specify, e.g., '/SOMEDISTRO'.\n\n'--with-editor=CMD'",
            "subsections": []
        },
        "Specify the command 'CMD' to invoke from the 'e' option of TeX and": {
            "content": "friends, replacing the default 'vi +%d '%s'' for Unix or 'texworks\n--position=%d \"%s\"' for Windows.\n\n'--with-fontconfig-includes=DIR', '--with-fontconfig-libdir=DIR'",
            "subsections": []
        },
        "Building XeTeX on non-Mac systems requires the 'fontconfig' library": {
            "content": "headers and code.  If one or both of these options are given, the\nrequired flags are derived from them; otherwise, they are determined via\n'pkg-config' (if present).\n\n'--with-mf-x-toolkit'",
            "subsections": []
        },
        "Use the X toolkit ('libXt') for Metafont (the default is to use the": {
            "content": "lowest-level 'Xlib' support; it seems this has the best chance of\nworking across X installations nowadays).\n\n'--disable-dump-share'",
            "subsections": []
        },
        "Make the 'fmt'/'base' dump files architecture dependent (somewhat faster": {
            "content": "on LittleEndian architectures).\n\n'--disable-ipc'\nDisable TeX's '--ipc' option.\n\n'--disable-mf-nowin'\nDo not build a separate non-graphically-capable Metafont ('mf-nowin').\n\n'--disable-tex', '--enable-etex', ...",
            "subsections": []
        },
        "Do not or do build the various TeX, Metafont, and MetaPost engines": {
            "content": "(defaults are defined in the fragment 'texk/web2c/ac/web2c.ac').\n\n'--disable-web-progs'",
            "subsections": []
        },
        "Do not build the original WEB programs 'bibtex', ..., 'weave'.  Useful": {
            "content": "if, e.g., you only want to (re)build some engines.\n\n'--enable-auto-core'",
            "subsections": []
        },
        "This option causes TeX and Metafont to produce a core dump when a": {
            "content": "particular hacky filename is encountered, for use in creating preloaded\nbinaries.  This is rarely done nowadays.\n\n'--enable-libtool-hack'",
            "subsections": []
        },
        "If enabled (which is the default for all platforms), prevents 'libtool'": {
            "content": "from linking explicitly with dependencies of 'libfontconfig' such as\n'libexpat'.\n\n'--enable-*win'",
            "subsections": []
        },
        "Include various types of non-X window support for Metafont (EPSF output,": {
            "content": "'mftalk', old graphics terminals, ...).\n\n'--enable-tex-synctex', '--disable-etex-synctex', ...",
            "subsections": []
        },
        "Build the TeX engines with or without 'SyncTeX' support; ignored for a": {
            "content": "native TeX Live build.  Defaults are defined in\n'texk/web2c/ac/web2c.ac'.\n\n'--disable-synctex'\nDo not build the 'SyncTeX' library and tool.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Configure options for texk/bibtex-x,  Next: Configure options for texk/dvipdfm-x,  Prev: Configure options for texk/web2c,  Up: Program-specific configure options": {
            "content": "",
            "subsections": []
        },
        "The programs 'bibtex8' and 'bibtexu' have been merged into the module": {
            "content": "'bibtex-x' (extended BibTeX).\n\n'--disable-bibtex8'\nDo not build the 'bibtex8' program.\n\n'--disable-bibtexu'",
            "subsections": []
        },
        "Do not build the 'bibtexu' program (building 'bibtexu' requires 'ICU'": {
            "content": "libraries).\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Configure options for texk/dvipdfm-x,  Next: Configure options for texk/dvisvgm,  Prev: Configure options for texk/bibtex-x,  Up: Program-specific configure options": {
            "content": "",
            "subsections": []
        },
        "The former modules 'dvipdfmx' (extended DVI to PDF converter) and": {
            "content": "'xdvipdfmx' (the same, as used by XeTeX) have been merged into\n'dvipdfm-x' at the source level.  Two separate binaries are still\ncreated by default.  In addition, 'dvipdfm' is created as a symlink to\n'dvipdfmx', with backward-compatible (very slightly different) behavior.\n\n'--disable-dvipdfmx'\nDo not build the 'dvipdfmx' program or make the 'dvipdfm' symlink.\n\n'--disable-xdvipdfmx'\nDo not build the 'xdvipdfmx' program.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Configure options for texk/dvisvgm,  Next: Configure options for texk/texlive,  Prev: Configure options for texk/dvipdfm-x,  Up: Program-specific configure options": {
            "content": "'--with-system-libgs'",
            "subsections": []
        },
        "Build 'dvisvgm' using installed Ghostscript ('gs') headers and library": {
            "content": "(not allowed for a native TL build).  The default is to load the 'gs'\nlibrary at runtime if possible, else to disable support for PostScript\nspecials.\n\n'--without-libgs'",
            "subsections": []
        },
        "Build 'dvisvgm' without PostScript support at all.  Because the dynamic": {
            "content": "loading just mentioned defeats all attempts at static linking, the\nresult can crash due to library incompatibilities, e.g., on CentOS 5.\n\n'--with-libgs-includes=DIR', '--with-libgs-libdir=DIR'\nSpecify non-standard locations of the Ghostscript headers and library.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Configure options for texk/texlive,  Next: Configure options for texk/xdvik,  Prev: Configure options for texk/dvisvgm,  Up: Program-specific configure options": {
            "content": "'--disable-linked-scripts'\nDo not install the \"linked scripts\" (*note Linked scripts::), except for\nthe TL scripts required to run 'texlinks'.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Configure options for texk/xdvik,  Next: Configure options for utils/xindy,  Prev: Configure options for texk/texlive,  Up: Program-specific configure options": {
            "content": "'--with-gs=FILENAME'\nHardwire the location of Ghostscript ('gs') as called by Xdvik.\n\n'--with-xdvi-x-toolkit=KIT'",
            "subsections": []
        },
        "Use toolkit 'KIT' for 'xdvik', one of: 'motif xaw xaw3d neXtaw'.  The": {
            "content": "default is 'motif' if available, else 'xaw'.\n\n'--enable-xi2-scrolling'\nUse XInput 2.1 \"smooth scrolling\" if available (default: yes, except for\na native TL build).\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Configure options for utils/xindy,  Prev: Configure options for texk/xdvik,  Up: Program-specific configure options": {
            "content": "'--enable-xindy-rules'",
            "subsections": []
        },
        "Build and install 'xindy' rules (default: yes, except for a native TL": {
            "content": "build).\n\n'--enable-xindy-docs'",
            "subsections": []
        },
        "Build and install 'xindy' documentation (default: yes, except for a": {
            "content": "native TL build).\n\n'--with-clisp-runtime=FILENAME'",
            "subsections": []
        },
        "Specifies the full path for the Clisp runtime file ('lisp.run' or": {
            "content": "'lisp.exe') to be installed.  When specified as 'default' (the default\nfor a native TL build) the path is determined by the Clisp executable;\nthe value 'system' (not allowed for a native TL build, but the default\notherwise) indicates that 'xindy' will use the installed version of\n'clisp' (which must be identical to the one used to build 'xindy').\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Library-specific configure options,  Next: Variables for configure,  Prev: Program-specific configure options,  Up: Configure options": {
            "content": "",
            "subsections": [
                {
                    "name": "7.3 Library-specific configure options",
                    "content": ""
                }
            ]
        },
        "Here are (some of) the library-specific 'configure' options, starting": {
            "content": "with this generic one:\n\n'--with-system-LIB'\n\nUse an installed (system) version of the library 'LIB'; this option\nexists for most libraries, but is not allowed for a native TL build.",
            "subsections": []
        },
        "Using a system version implies also using the system versions of all": {
            "content": "libraries that LIB depends on.\n\nFor many libraries '--with-LIB-includes=DIR' and\n'--with-LIB-libdir=DIR' can specify non-standard search locations;\nothers use 'pkg-config' or similar to determine the required flags.\n\nThe top-level 'configure' script performs a consistency check for all\nrequired system libraries and bails out if tests fail.\n\n* Menu:\n\n* Configure options for kpathsea::\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Configure options for kpathsea,  Up: Library-specific configure options": {
            "content": "'--enable-CMD-default', '--disable-CMD-default'",
            "subsections": []
        },
        "Determine the compile time default for whether or not to run CMD, which": {
            "content": "is one of:\n'mkocp'\n(Omega compiled translation process file)\n'mkofm'\n(Omega font metrics file)\n'mktexfmt'\n(format/base dump file)\n'mktexmf'\n(Metafont source)\n'mktexpk'\n(PK bitmap font)\n'mktextex'\n(TeX source)\n'mktextfm'\n(TFM file)\n\nto generate the specified type of file dynamically.  The default can be\noverridden by the user in any case (*note kpathsea library::).\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Variables for configure,  Prev: Library-specific configure options,  Up: Configure options": {
            "content": "",
            "subsections": [
                {
                    "name": "7.4 Variables for configure",
                    "content": ""
                }
            ]
        },
        "The values for these variables can be specified as 'configure' arguments": {
            "content": "of the form 'VAR=VALUE'.  They can also be defined in the environment,\nbut that might not work for cross compilations.\n\n'CC'\n'CXX'\n'CPPFLAGS'\nAnd plenty more.  As usual with Autoconf, these variables specify\nthe name (or full path) of compilers, preprocessor flags, and\nsimilar.  *Note (autoconf)Preset Output Variables::.\n\n'CLISP'\nName (or full path) of the 'clisp' executable, used to build\n'xindy'.\n\n'FT2CONFIG'\n'ICUCONFIG'\n'PKGCONFIG'\nThese specify the name (or path) for the 'freetype-config',\n'icu-config', and 'pkg-config' commands used to determine the flags\nrequired for system versions of 'libfreetype', the ICU libraries,\nand other libraries, respectively.\n\n'KPSEWHICH'\nName (or path) of an installed 'kpsewhich' binary, used by 'make\ncheck' to determine the location of, e.g., 'cmbx10.tfm'.\n\n'MAKE'\n'SED'\nAnd more.  Name (or path) of the 'make', 'sed', and similar\nprograms; used at the top level and propagated to all\nsubdirectories.\n\n'PERL'\n'LATEX'\n'PDFLATEX'\nName (or full path) for the 'perl', 'latex', and 'pdflatex'\ncommands used, e.g., to build the 'xindy' documentation.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Coding conventions,  Next: Continuous integration,  Prev: Configure options,  Up: Top": {
            "content": "",
            "subsections": []
        },
        "8 Coding conventions": {
            "content": "Ideally, building all of TeX Live with '--enable-compiler-warnings=max'\nshould produce no (GCC) compiler warnings at all.  In spite of\nconsiderable efforts into that direction we are still far from that goal\nand there are reasons that we may never fully reach it.  Below are some\nrules about declarations of functions or variables and the use of\n'const'.  These rules should be applied to the code maintained in the",
            "subsections": []
        },
        "TeX Live tree and for other packages whose maintainers are willing to": {
            "content": "accept patches.\n\n* Menu:\n\n* Declarations and definitions::\n* Const::\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Declarations and definitions,  Next: Const,  Up: Coding conventions": {
            "content": "",
            "subsections": [
                {
                    "name": "8.1 Declarations and definitions",
                    "content": "C standards\n...........\n"
                }
            ]
        },
        "The TeX Live build system no longer supports pre-ANSI C compilers.  Thus": {
            "content": "all function prototypes and definitions must conform to the ANSI C\nstandard (including 'void' in the declaration of C functions with no\nparameters).  On the other hand, TL is built for a wide variety of\nsystems, not all of which support the C99 standard.  Therefore using C99\nfeatures should be avoided if that can easily be done.  In particular, C\ncode must not contain declarations after statements or C++-style\ncomments.\n\nIf some C99 (or later) constructs must be used, the module should\nverify that they are available and otherwise provide an alternative.",
            "subsections": []
        },
        "For example, the module 'texk/chktex' uses the C99 function 'stpcpy()'": {
            "content": "that may or may not be available on a particular system.  It uses\n'ACCHECKDECLS([stpcpy])' in 'configure.ac' to test this, and provides\na perhaps less efficient alternative (in the file 'Utility.h'):\n\n#if !(defined HAVEDECLSTPCPY && HAVEDECLSTPCPY)\nstatic inline char *stpcpy(char *dest, const char *src)\n{\nreturn strcpy(dest, src) + strlen(src);\n}\n#endif\n",
            "subsections": []
        },
        "Static functions": {
            "content": "................\n",
            "subsections": []
        },
        "Functions used in only one file should be declared 'static'; they": {
            "content": "require no prototype except in forward declarations.\n",
            "subsections": []
        },
        "Extern functions": {
            "content": "................\n",
            "subsections": []
        },
        "Functions not declared 'static', usually because they are used in": {
            "content": "several files, require an ('extern') prototype in exactly one header\nfile, which is included in the file defining the function and in all\nfiles using that function--this is the only way to guarantee consistency\nbetween definition and use.  There should be no 'extern' declarations\nsprinkled throughout the C code (with or without comments as to where\nthat function is defined).\n",
            "subsections": []
        },
        "Variable declarations": {
            "content": ".....................\n",
            "subsections": []
        },
        "The declaration of global variables follows analogous rules: they are": {
            "content": "either declared 'static' if used in only one file or declared 'extern'\nin exactly one header and instantiated in exactly one file.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Const,  Prev: Declarations and definitions,  Up: Coding conventions": {
            "content": "",
            "subsections": [
                {
                    "name": "8.2 Const",
                    "content": "The 'const' feature of C is valuable, but easy to mis-use.\n"
                }
            ]
        },
        "Function parameters": {
            "content": "...................\n",
            "subsections": []
        },
        "Ideally, a function parameter not modified by the function should be": {
            "content": "declared as 'const'.  This is important in particular for strings\n('char*') because the actual arguments are often string literals.  It is\nperfectly legitimate and safe to use a type 'char*' value for a type\n'const char*' variable (in an assignment, as initializer, as function\nargument, or as return value).  It is equally safe to use a type\n'char' value for a type 'const char*const*' variable, but not for a\ntype 'const char' variable since that might cause modification of a\nquantity supposed to be constant.\n\nGetting all 'const' qualifiers right can get quite involved but can\nalmost always be done.  There are only a couple notable exceptions: the\nX11 headers are full of declarations that ought to use 'const' but do\nnot; at one time, 'libfreetype' also did not fully specify 'const', but\nthis has not been checked recently.\n",
            "subsections": []
        },
        "What must be avoided with 'const'": {
            "content": ".................................\n\nThe GCC compiler warnings \"assignment discards qualifiers...\" and\nanalogous warnings for \"initialization\", \"passing arg\", or \"return\" must\nbe strenuously avoided in our own code.  The only exception is when they\nare caused by X11 declarations or other third party code.\n",
            "subsections": []
        },
        "What should be avoided with 'const'": {
            "content": "...................................\n\nA type cast, e.g., from 'const char*' to 'char*' does not solve any\nproblems; depending on warning options, it may only hide them.",
            "subsections": []
        },
        "Therefore such casts should be avoided whenever possible and otherwise": {
            "content": "must be carefully analyzed to make sure that they cannot cause the\nmodification of quantities supposed to be constant.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Continuous integration,  Next: install-tl,  Prev: Coding conventions,  Up: Top": {
            "content": "",
            "subsections": []
        },
        "9 Continuous integration": {
            "content": "",
            "subsections": []
        },
        "The TeX Live sources are subjected to continuous integration testing on": {
            "content": "Travis-CI (<https://travis-ci.org/TeX-Live/texlive-source>) via a\ngit-svn mirror of the sources that is pushed to Github\n(<https://github.com/TeX-Live/texlive-source>).  The git-svn mirror is\nupdated (currently) at 30 minute intervals, and only the last commit\npushed is tested on Travis-CI.\n\n* Menu:\n\n* Transfer from Subversion to Github::\n* Automatic update of the Git mirror::\n* CI testing on Travis-CI::\n* Releases on Github::\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Transfer from Subversion to Github,  Next: Automatic update of the Git mirror,  Up: Continuous integration": {
            "content": "",
            "subsections": [
                {
                    "name": "9.1 Transfer from Subversion to Github",
                    "content": "The git-svn program (<https://git-scm.com/docs/git-svn>) is used to\ncheck out the subtree 'Build/source' of the canonical Subversion\nrepository.  The author index file used is not maintained in either Git\nor Subversion but can be provided on request.\n\nThe initial checkout was done by invoking\ngit svn --authors-file usermap clone \\\nsvn://USER@tug.org/texlive/trunk/Build/source\n\nwhere the 'usermap' file maps Subversion user names to name and emails\nof the authors.  Anonymous checkout is also possible:\ngit svn --authors-file usermap clone \\\nsvn://tug.org/texlive/trunk/Build/source\n\nIn the following, we will use admin to refer to a user who has\nread/write access to the TeX Live subversion repository, and is also an\nadministrator of the ''TeX-Live'' team at Github.  The above initial\ncheckout has been carried out by admin on the server 'texlive.info'.\n\nOn Github, a new git repository named 'texlive-source' was created by\nadmin within the 'TeX-Live' \"organization\"\n(<https://github.com/TeX-Live>).  The remote was added to the checkout\nwith 'git remote add origin git@github.com:TeX-Live/texlive-source.git'.\n\nTo automate the update on Github, a new ssh key was generated and\nadded to the 'texlive-source' repository on Github as deployment key."
                }
            ]
        },
        "Thus, pushes using this key can only go to the 'texlive-source'": {
            "content": "repository and not anywhere else.\n\nThe usage of 'git-svn' requires a strict discipline to keep a linear\nhistory in the master branch.  Since we are aiming at a pure mirror\nfacility on Github, we have decided to further restrict the 'master'\nbranch of the 'texlive-source' repository on Github to changes by\nadmin.\n\nThis setup allows other developers to branch off 'master' and push\ntheir branches to the Github repository, but all updates need to come\nfrom the local 'master' (not the one on Github) to Subversion, back to\n'master' on 'texlive.info', and from there to Github.\n",
            "subsections": []
        },
        "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": {
            "content": "",
            "subsections": [
                {
                    "name": "9.2 Automatic update of the Git mirror",
                    "content": "admin has installed a cron job on 'texlive.info' running every 30\nminute which essentially runs 'git svn rebase' and 'git push' in the\n'master' branch of the checkout.  The first command fetches the changes\nfrom the Subversion repository and updates the 'master' branch with\nthem, and the second pushes changes (if any) to Github.\n"
                }
            ]
        },
        "File: tlbuild.info,  Node: CI testing on Travis-CI,  Next: Releases on Github,  Prev: Automatic update of the Git mirror,  Up: Continuous integration": {
            "content": "",
            "subsections": [
                {
                    "name": "9.3 CI testing on Travis-CI",
                    "content": ""
                }
            ]
        },
        "The 'source' tree of TeX Live contains a top-level file '.travis.yml'": {
            "content": "which controls the automatic testing on Travis-CI. admin has\nregistered with Travis-CI and allowed access to the Github's 'TeX-Live'\norganization's 'texlive-source' repository.  The default settings are to\nbuild the last commit of each push.  No further action is necessary on\nTravis-CI.\n\nIf changes have been pushed via the cron job above, Travis-CI will\nautomatically checkout the last pushed commit and try building it.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: Releases on Github,  Prev: CI testing on Travis-CI,  Up: Continuous integration": {
            "content": "",
            "subsections": [
                {
                    "name": "9.4 Releases on Github",
                    "content": "Given a git checkout of 'texlive-source':\n\ngit pull\ngit tag build-svnNNNN\ngit push --tags\n\nand the result will appear at\n<https://github.com/TeX-Live/texlive-source/releases>.  Releases can\nalso be made manually from that web page (see 'tl-update-bindir' for\nhints).\n"
                }
            ]
        },
        "File: tlbuild.info,  Node: install-tl,  Next: tlmgr,  Prev: Continuous integration,  Up: Top": {
            "content": "",
            "subsections": []
        },
        "Appendix A install-tl": {
            "content": "* Menu:\n\n* install-tl NAME::\n* install-tl SYNOPSIS::\n* install-tl DESCRIPTION::\n* install-tl REFERENCES::\n* install-tl EXAMPLES::\n* install-tl OPTIONS::\n* install-tl PROFILES::\n* install-tl ENVIRONMENT VARIABLES::\n* install-tl DIRECTORY TREES::\n* install-tl BUGS::\n* install-tl AUTHORS AND COPYRIGHT::\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: install-tl NAME,  Next: install-tl SYNOPSIS,  Up: install-tl": {
            "content": "",
            "subsections": [
                {
                    "name": "A.1 install-tl NAME",
                    "content": "install-tl - TeX Live cross-platform installer\n"
                }
            ]
        },
        "File: tlbuild.info,  Node: install-tl SYNOPSIS,  Next: install-tl DESCRIPTION,  Prev: install-tl NAME,  Up: install-tl": {
            "content": "",
            "subsections": [
                {
                    "name": "A.2 install-tl SYNOPSIS",
                    "content": "install-tl [option]...\n\ninstall-tl-windows.bat [option]...\n"
                }
            ]
        },
        "File: tlbuild.info,  Node: install-tl DESCRIPTION,  Next: install-tl REFERENCES,  Prev: install-tl SYNOPSIS,  Up: install-tl": {
            "content": "",
            "subsections": [
                {
                    "name": "A.3 install-tl DESCRIPTION",
                    "content": ""
                }
            ]
        },
        "This installer creates a runnable TeX Live installation from various": {
            "content": "media, including over the network, from local hard disk, a DVD, etc.",
            "subsections": []
        },
        "The installer works on all platforms supported by TeX Live.  For": {
            "content": "information on initially downloading TeX Live, see\n<https://tug.org/texlive/acquire.html>.\n\nThe basic idea of TeX Live installation is for you to choose one of\nthe top-level schemes, each of which is defined as a different set of\ncollections and packages, where a collection is a set of packages,\nand a package is what contains actual files.  Each package is in exactly\none collection, while schemes can contain any combination of packages\nand collections.\n\nWithin the installer, you can choose a scheme, and further customize\nthe set of collections to install, but not the set of the packages.  To\nwork at the package level, use 'tlmgr' (reference just below) after the\ninitial installation is complete.\n\nThe default is 'scheme-full', which installs everything, and this is\nhighly recommended.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: install-tl REFERENCES,  Next: install-tl EXAMPLES,  Prev: install-tl DESCRIPTION,  Up: install-tl": {
            "content": "",
            "subsections": [
                {
                    "name": "A.4 REFERENCES",
                    "content": ""
                }
            ]
        },
        "Post-installation configuration, package updates, and more, are handled": {
            "content": "through *tlmgr*(1), the TeX Live Manager\n(<https://tug.org/texlive/tlmgr.html>).\n\nThe most up-to-date version of this installer documentation is on the\nInternet at <https://tug.org/texlive/doc/install-tl.html>.\n\nFor step-by-step instructions, see\n<https://tug.org/texlive/quickinstall.html>.\n\nFor the full documentation of TeX Live, see\n<https://tug.org/texlive/doc>.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: install-tl EXAMPLES,  Next: install-tl OPTIONS,  Prev: install-tl REFERENCES,  Up: install-tl": {
            "content": "",
            "subsections": [
                {
                    "name": "A.5 install-tl EXAMPLES",
                    "content": ""
                }
            ]
        },
        "With no options, 'install-tl' drops you into an interactive menu where": {
            "content": "essentially all default settings can be changed.  With options, you can\ninitialize the settings in various ways, or perform the installation\nwithout interaction.  Some examples:\n\n'install-tl --paper=letter'\n\nInitialize paper size setting.  The only values allowed are\n'letter' and (the default) 'a4'.\n\n'install-tl --scheme' scheme\n\nInitialize the installation scheme; the default is 'full'.  For a\nlist of schemes, see the interactive 'S' menu.\n\n'install-tl --no-interaction'\n\nPerform the installation immediately after parsing options, without\nentering the interactive menu.\n\n'install-tl --profile' texlive.profile\n\nInstall, without interaction, according to the given TL profile\nfile; see *note PROFILES: install-tl PROFILES. below.  To\ninitialize from the profile and then enter the interactive menu,\nadd '--init-from-profile'.\n\nFull documentation follows.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: install-tl OPTIONS,  Next: install-tl PROFILES,  Prev: install-tl EXAMPLES,  Up: install-tl": {
            "content": "",
            "subsections": [
                {
                    "name": "A.6 install-tl OPTIONS",
                    "content": ""
                }
            ]
        },
        "As usual, all options can be specified in any order, and with either a": {
            "content": "leading '-' or '--'.  An argument value can be separated from its option\nby either a space or '='.\n\nThe options relating to customization of the installation can also be\nselected in the interactive installation menus (GUI or text).\n\n*-gui* [[=]module]\n\n*-no-gui*\n\nIf no module is given, starts the Tcl/Tk (see below) GUI\ninstaller.\n\nIf module is given loads the given installer module.  Currently\nthe following modules are supported:\n\n'text'\n\nThe text mode user interface (default on Unix systems,\nincluding Macs).  Same as the '-no-gui' option.\n\n'tcl' (or \"perltk\" or \"wizard\" or \"expert\" or nothing)\n\nThe Tcl/Tk user interface (default on Windows).  It starts\nwith a small number of configuration options, roughly\nequivalent to what the former wizard option offers, but a\nbutton 'Advanced' takes you to a screen with roughly the same\noptions as the former 'perltk' interface.\n\nThe default GUI requires Tcl/Tk.  This was standard on Macs, but\nhas been removed in the latest macOS releases.  It's often already\ninstalled on GNU/Linux, or can be easily installed through a distro\npackage manager.  For Windows, TeX Live provides a Tcl/Tk runtime.\n\n*-lang* llcode\n\nBy default, the Tcl GUI uses the language detection built into\nTcl/Tk.  If that fails you can select a different language by\ngiving this option with a language code (based on ISO 639-1).\nCurrently supported (but not necessarily completely translated)\nare: English (en, default), Czech (cs), German (de), French (fr),\nItalian (it), Japanese (ja), Dutch (nl), Polish (pl), Brazilian\nPortuguese (ptBR), Russian (ru), Slovak (sk), Slovenian (sl),\nSerbian (sr), Ukrainian (uk), Vietnamese (vi), simplified Chinese\n(zhCN), and traditional Chinese (zhTW).\n\n*-repository* url|path\n\nSpecify the package repository to be used as the source of the\ninstallation.  In short, this can be a directory name or a url\nusing http(s), ftp, or scp.  The documentation for 'tlmgr' has the\ndetails (<https://tug.org/texlive/doc/tlmgr.html#OPTIONS>).\n\nFor installation, the default is to pick a mirror automatically,\nusing <https://mirror.ctan.org/systems/texlive/tlnet>; the chosen\nmirror is then used for the entire download.  You can use the\nspecial argument 'ctan' as an abbreviation for this.  (See\n<https://ctan.org> for more about CTAN and its mirrors.)\n\nAfter installation is complete, you can use that installation as\nthe repository for another installation.  If you chose to install\nless than the full scheme containing all packages, the list of\navailable schemes will be adjusted accordingly.\n\n*-select-repository*\n\nThis option allows you to choose a particular mirror from the\ncurrent list of active CTAN mirrors.  This option is supported in\nthe 'text' and 'gui' installer modes, and will also offer to\ninstall from local media if available, or from a repository\nspecified on the command line.  It's useful when the (default)\nautomatic redirection does not choose a good host for you.\n\n*-all-options*\n\nNormally options not relevant to the current platform are not shown\n(e.g., when running on Unix, Windows-specific options are omitted).\nGiving this command line option allows configuring such \"foreign\"\nsettings.\n\n*-custom-bin* path\n\nIf you have built your own set of TeX Live binaries (e.g., because\nprecompiled binaries were not provided by TL for your platform),\nthis option allows you to specify the path to a directory where\nthe binaries for the current system are present.  The installation\nwill continue as usual, but at the end all files from path are\ncopied over to 'bin/custom/' under your installation directory and\nthis 'bin/custom/' directory is what will be added to the path for\nthe post-install actions.  To install multiple custom binary sets,\nmanually rename 'custom' before doing each.\n\nFor more information on custom binaries, see\n<https://tug.org/texlive/custom-bin.html>.  For general information\non building TeX Live, see <https://tug.org/texlive/build.html>.\n\n*-debug-fakenet*\n\nPretend we're doing a network install.  This is for the sole\npurpose of testing the code to handle broken downloads, via moving\npackage files aside in a tlnet mirror hierarchy.\n\n*-debug-setup-vars*\n\nPrint final values of directory variables; for more debugging\ninformation on how they were set, also specify '-v'.\n\n*-debug-translation*\n\nIn the former Perl/Tk GUI modes, this option reported any missing,\nor more likely untranslated, messages to standard error.  Not yet\nimplemented for the Tcl interface.  Helpful for translators to see\nwhat remains to be done.\n\n*-force-platform* platform\n\nInstead of auto-detecting the current platform, use platform.\nBinaries for this platform must be present in 'bin/'platform'/'\nand they must be runnable, or installation will fail.\n'-force-arch' is a synonym.\n\n*-help*, *--help*, *-?*\n\nDisplay this help and exit.  (This help is also on the web at\n<https://tug.org/texlive/doc/install-tl.html>).  Sometimes the\n'perldoc' and/or 'PAGER' programs on the system have problems,\npossibly resulting in control characters being literally output.\nThis can't always be detected, but you can set the 'NOPERLDOC'\nenvironment variable and 'perldoc' will not be used.\n\n*-in-place*\n\nThis is a quick-and-dirty installation option in case you already\nhave an rsync or svn checkout of TeX Live.  It will use the\ncheckout as-is and will just do the necessary post-install.  Be\nwarned that the file 'tlpkg/texlive.tlpdb' may be rewritten, that\nremoval has to be done manually, and that the only realistic way to\nmaintain this installation is to redo it from time to time.  This\noption is not available via the installer interfaces.  USE AT YOUR\nOWN RISK.\n\n*-init-from-profile* profilefile\n\nSimilar to *-profile* (see *note PROFILES: install-tl PROFILES.\nbelow), but only initializes the installation configuration from\nprofilefile and then starts a normal interactive session.\nEnvironment variables are not ignored.\n\n*-logfile* file\n\nWrite both all messages (informational, debugging, warnings) to\nfile, in addition to standard output or standard error.\n\nIf this option is not given, the installer will create a log file\nin the root of the writable installation tree, for example,\n'/usr/local/texlive/YYYY/install-tl.log' for the YYYY release.\n\n*-no-cls*\n\nFor the text mode installer only: do not clear the screen when\nentering a new menu.  For debugging.\n\n*-no-continue*\n\nQuit early on installation failure of a non-core package.\n\nBy default, a few core packages are installed first; then, a failed\ninstallation of any other (non-core) package is noted, but does not\nstop the installation.  Any such failed packages are retried, once.\n\nIf the retry also fails, by default the installer proceeds to\ncompletion anyway, with the idea that it was a transient network\nproblem and reinstallation will succeed later.  If this option is\nspecified, and the retry fails, the installer aborts.\n\n*-no-doc-install*\n\n*-no-src-install*\n\nDo not install the documentation resp.  source package files, both\nfor the immediate installation and for future updates.  After\ninstallation, inclusion of the doc/src files can be re-enabled via\n'tlmgr':\n\ntlmgr option docfiles 1\ntlmgr option srcfiles 1\n\nIf you later find that you want the doc/src files for a package\nthat has been installed without them, you can get them like this\n(using the 'fontspec' package as the example):\n\ntlmgr install --reinstall --with-doc --with-src fontspec\n\nThe source files mentioned here are those relating to TeX packages,\nsuch as '.dtx' files.  The sources that are compiled to make the\nbinaries are available separately: see\n<https://tug.org/texlive/svn/>.\n\n*-no-installation*\n\nDo not perform any installation.  This is for debugging the\ninitialization and setup routines without touching the disk.\n\n*-no-interaction*\n\nDo not enter the interactive menu; immediately perform the\ninstallation after initialization and option parsing.  Also omit\nthe check for a previous installation and asking about importing\nprevious settings.\n\n*-no-persistent-downloads*\n\n*-persistent-downloads*\n\nFor network installs, activating this option makes the installer\ntry to set up a persistent connection using the 'LWP' Perl module.\nThis opens only one connection between your computer and the server\nper session and reuses it, instead of initiating a new download for\neach package, which typically yields a significant speed-up.\n\nThis option is turned on by default, and the installation program\nwill fall back to using 'wget' if this is not possible.  To disable\nusage of LWP and persistent connections, use\n'-no-persistent-downloads'.\n\n*-no-verify-downloads*\n\nBy default, if a GnuPG 'gpg' binary is found in PATH, downloads are\nverified against a cryptographic signature.  This option disables\nsuch verification.  The full description is in the Crytographic\nVerification section of the 'tlmgr' documentation, e.g.,\n<https://tug.org/texlive/doc/tlmgr.html#CRYPTOGRAPHIC-VERIFICATION>\n\n*-non-admin*\n\nFor Windows only: configure for the current user, not for all\nusers.\n\n*-paper* 'a4'*|*'letter'\n\nSet the default paper size for all TeX Live programs, as specified.\nThe default is 'a4'.  The paper size can be set after installation\nwith the 'tlmgr paper' command.\n\n*-portable*\n\nInstall for portable use, e.g., on a USB stick.  See the\n'instoptportable' description below for details.\n\n*-print-platform*\n\nPrint the TeX Live identifier for the detected platform\n(hardware/operating system) combination to standard output, and\nexit.  '-print-arch' is a synonym.\n\n*-profile* profilefile\n\nLoad profilefile and do the installation with no user\ninteraction, that is, a batch (unattended) install.  Environment\nvariables are ignored.  See *note PROFILES: install-tl PROFILES.\nbelow.\n\n*-q*\n\nOmit normal informational messages.\n\n*-scheme* scheme\n\nSchemes are the highest level of package grouping in TeX Live; the\ndefault is to use the 'full' scheme, which includes everything.\nThis option overrides that default.  The scheme argument value\nmay optionally have a prefix 'scheme-'.  The list of supported\nscheme names depends on what your package repository provides; see\nthe interactive menu list.\n\n*-texdir* dir\n\nSpecify the system installation directory; the default is\n'/usr/local/texlive/YYYY' for release YYYY. Specifying this option\nalso causes the 'TEXMFLOCAL', 'TEXMFSYSCONFIG', and 'TEXMFSYSVAR'\ndirectories to be set as subdirectories of dir, so they don't\nhave to be set individually.\n\nThere is a brief summary of these directories trees at *note\nDIRECTORY TREES: install-tl DIRECTORY TREES. below; for details on\nthe trees set up by default, and their intended usage, see the main\nTeX Live documentation at <https://tug.org/texlive/doc>.\n\n*-texuserdir* dir\n\nSpecify the user installation directory; the default is\n'~/.texliveYYYY' (except on Macs, where there is no leading dot).\nSpecifying this also causes the 'TEXMFHOME', 'TEXMFCONFIG', and\n'TEXMFVAR' directories to be set as subdirectories of dir.\n\n*-texmflocal* dir\n\nSpecify the 'TEXMFLOCAL' directory; the default is\n'/usr/local/texlive/texmf-local', that is, one level up from the\nmain installation.  This is so locally-installed packages can be\neasily used across releases, which is usually desirable.\nSpecifying the '-texdir' option changes this, putting 'TEXMFLOCAL'\nunder the main tree.  The '-texmflocal' option can be used to\nspecify an explicit directory.\n\nAnything installed here must follow the TeX directory structure\n(TDS), e.g., 'TEXMFHOME/tex/latex/mypkg/mypkg.sty'.  TDS reference:\n<https://tug.org/tds>.\n\n*-texmfhome* dir\n\nSpecify the 'TEXMFHOME' directory; the default is '~/texmf', except\non Macs, where it is '~/Library/texmf'.  Analogously to\n'TEXMFLOCAL', the '-texuserdir' option changes this default.\n\nAlso as with 'TEXMFLOCAL', anything installed here must follow the\nTDS.\n\n*-texmfsysconfig* dir\n\n*-texmfsysvar* dir\n\nSpecify the 'TEXMFSYSCONFIG' and 'TEXMFSYSVAR' system directories.\n\n*-texmfconfig* dir\n\n*-texmfvar* dir\n\nSpecify the 'TEXMFCONFIG' and 'TEXMFVAR' user directories.  The\ndefaults are '~/.texliveYYYY/texmf-{config,var}', except on Macs,\nwhere the leading dot is omitted ('~/texliveYYYY/...').\n\n*-v*\n\nInclude verbose debugging messages; repeat for maximum debugging:\n'-v -v'.  (Further repeats are accepted but ignored.)\n\n*-version*, *--version*\n\nOutput version information and exit.  If '-v' is also given, the\nversions of the TeX Live modules used are also reported.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: install-tl PROFILES,  Next: install-tl ENVIRONMENT VARIABLES,  Prev: install-tl OPTIONS,  Up: install-tl": {
            "content": "",
            "subsections": [
                {
                    "name": "A.7 PROFILES",
                    "content": "A profile file normally contains all the values needed to perform an\ninstallation.  After a normal installation has finished, a profile for\nthat exact installation is written to the file 'tlpkg/texlive.profile'."
                }
            ]
        },
        "In addition, from the text menu one can select 'P' to save the current": {
            "content": "setup as a profile at any time.  These are small text files; feel free\nto peruse and edit them according to your needs.\n\nSuch a profile file can be given as the argument to '-profile', for\nexample to redo the exact same installation on a different system.",
            "subsections": []
        },
        "Alternatively, you can use a custom profile, most easily created by": {
            "content": "starting from a generated one and changing values.  An empty profile\nfile will cause the installer to use the defaults.\n\nAs mentioned above, the installer only supports selection by scheme\nand collections, not individual packages, so packages cannot be\nspecified in profile files either.  Use 'tlmgr' to work at the package\nlevel.\n\nWithin a profile file, each line consists of\n\nvariable [value]\n\nexcept for comment lines starting with '#'.  The possible variable\nnames are listed below.  Values, when present, are either '0' or '1' for\nbooleans, or strings (which must be specified without any quote\ncharacters).  Leading whitespace is ignored.\n\nIf the variable 'selectedscheme' is defined and no collection\nvariables at all are defined, then the collections required by the\nspecified scheme (which might change over time) are installed, without\nexplicitly listing them.  This eases maintenance of profile files.  If\nany collections are specified in a profile, though, then the scheme is\nignored and all desired collections must be given explicitly.\n\nFor example, a line\n\nselectedscheme scheme-small\n\nalong with definitions for the installation directories (given below\nunder \"path options\") suffices to install the \"small\" scheme with all\ndefault options.  The schemes are described in the 'S' menu in the text\ninstaller, or equivalent.\n\nIn addition to 'selectedscheme', here are the other variable names\nsupported in a profile:\n\n*collection options* (prefix 'collection-')\n\nCollections are specified with a variable name with the prefix\n'collection-' followed by a collection name; there is no value.  For\ninstance, 'collection-basic'.  The collections are described in the 'C'\nmenu.\n\nSchemes and collections (and packages) are ultimately defined by the\nfiles in the 'tlpkg/tlpsrc/' source directory.\n\n*path options*\n\nIt is best to define all of these, even though they may not be used\nin a given installation, so as to avoid unintentionally getting a\ndefault value that could cause problems later.\n\nTEXDIR\nTEXMFLOCAL\nTEXMFSYSCONFIG\nTEXMFSYSVAR\nTEXMFCONFIG\nTEXMFVAR\nTEXMFHOME\n\n*installer options* (prefix 'instopt')\n\n'instoptadjustpath' (default 0 on Unix, 1 on Windows)\n\nAdjust 'PATH' environment variable.\n\n'instoptadjustrepo' (default 1)\n\nSet remote repository to a multiplexed CTAN mirror after\ninstallation; see '-repository' above.\n\n'instoptletter' (default 0)\n\nSet letter size paper as the default, instead of a4.\n\n'instoptportable' (default 0)\n\nInstall for portable use, e.g., on a USB stick, without touching\nthe host system.  Specifically, this forces the user directories\n'TEXMFHOME', 'TEXMFCONFIG', 'TEXMFVAR' to be identical to the\nsystem directories 'TEXMFLOCAL', 'TEXMFSYSCONFIG', 'TEXMFSYSVAR',\nrespectively (regardless of other options and environment\nvariable.)\n\nIn addition, on Windows, it disables the desktop integration, path\nadjustment, and file associations actions usually performed.\n\n'instoptwrite18restricted' (default 1)\n\nEnable '\\write18' for a restricted set of programs.\n\n*tlpdb options* (prefix 'tlpdbopt')\n\nThe definitive list is given in 'tlpkg/TeXLive/TLConfig.pm', in the\nhash '%TeXLive::TLConfig::TLPDBOptions', together with explanations.\nAll items given there except for 'tlpdboptlocation' can be specified.\nHere is the current list:\n\ntlpdboptautobackup\ntlpdboptbackupdir\ntlpdboptcreateformats\ntlpdboptdesktopintegration\ntlpdboptfileassocs\ntlpdboptgenerateupdmap\ntlpdboptinstalldocfiles\ntlpdboptinstallsrcfiles\ntlpdboptpostcode\ntlpdboptsysbin\ntlpdboptsysinfo\ntlpdboptsysman\ntlpdboptw32multiuser\n\n*platform options* (prefix 'binary')\n\nFor each supported platform in TeX Live (directories under 'bin/'),\nthe variable 'binary'PLATFORM can be set with value 1.  For example:\n\nbinaryx8664-linux 1\n\nIf no 'binary' settings are made, the default is whatever the\ncurrent machine is running.\n\nIn releases before 2017, many profile variables had different names\n(not documented here; see the 'install-tl' source).  They are accepted\nand transformed to the names given above.  When a profile is written,\nthe names above are always used.\n\nFor more details on all of the above options, consult the TeX Live\ninstallation manual, linked from <https://tug.org/texlive/doc>.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: install-tl ENVIRONMENT VARIABLES,  Next: install-tl DIRECTORY TREES,  Prev: install-tl PROFILES,  Up: install-tl": {
            "content": "",
            "subsections": [
                {
                    "name": "A.8 ENVIRONMENT VARIABLES",
                    "content": ""
                }
            ]
        },
        "For ease in scripting and debugging, 'install-tl' looks for the": {
            "content": "following environment variables.  They are not of interest for normal\nuser installations.\n\n'NOPERLDOC'\n\nDon't try to run the '--help' message through 'perldoc'.\n\n'TEXLIVEDOWNLOADER'\n\n'TLDOWNLOADPROGRAM'\n\n'TLDOWNLOADARGS'\n\nThese override the normal choice of a download program; see the\n'tlmgr' documentation, e.g.,\n<https://tug.org/texlive/doc/tlmgr.html#ENVIRONMENT-VARIABLES>.\n\n'TEXLIVEINSTALLENVNOCHECK'\n\nOmit the check for environment variables containing the string\n'tex'.  People developing TeX-related software are likely to have\nmany such variables.\n\n'TEXLIVEINSTALLNOCONTEXTCACHE'\n\nOmit creating the ConTeXt cache.  This is useful for\nredistributors.\n\n'TEXLIVEINSTALLNODISKCHECK'\n\nIf set to 1, omit free disk space check.  By default, if a\nPOSIX-compliant 'df' program (supporting '-Pk') is available, the\ninstaller checks for available disk space in the selected\ninstallation location, and will abort installation if there is\ninsufficient disk space, plus a margin of 100MB. An equivalent\ncheck is made on Windows (not involving 'df').\n\n'TEXLIVEINSTALLNORESUME'\n\nOmit check for installing on top of a previous installation and\nthen asking about importing previous settings.\n\n'TEXLIVEINSTALLNOWELCOME'\n\nOmit printing the welcome message after successful installation,\ne.g., when testing.\n\n'TEXLIVEINSTALLPAPER'\n\nSet the default paper size for all relevant programs; must be\neither 'letter' or 'a4'.  The default is 'a4'.\n\n'TEXLIVEINSTALLPREFIX'\n\n'TEXLIVEINSTALLTEXMFCONFIG'\n\n'TEXLIVEINSTALLTEXMFVAR'\n\n'TEXLIVEINSTALLTEXMFHOME'\n\n'TEXLIVEINSTALLTEXMFLOCAL'\n\n'TEXLIVEINSTALLTEXMFSYSCONFIG'\n\n'TEXLIVEINSTALLTEXMFSYSVAR'\n\nSpecify the respective directories.  'TEXLIVEINSTALLPREFIX'\ndefaults to '/usr/local/texlive'.  All the defaults can be seen by\nrunning the installer interactively and then typing 'D' for the\ndirectory menu.\n\nThe various command line options for specifying directories\noverride these environment variables; since specifying both is\nusually accidental, a warning is given if the values are different.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: install-tl DIRECTORY TREES,  Next: install-tl BUGS,  Prev: install-tl ENVIRONMENT VARIABLES,  Up: install-tl": {
            "content": "",
            "subsections": [
                {
                    "name": "A.9 DIRECTORY TREES",
                    "content": ""
                }
            ]
        },
        "There are a plethora of ways to specify the plethora of directory trees": {
            "content": "used by TeX Live.  By far the simplest, and recommended, approach is not\nto change anything.  The defaults suffice for the vast majority of\ninstallations.\n\nBut, for the sake of explanation, here is a table of the trees and\nthe command line options that change them.  The first group of three are\nsystem directories, and the second group of three are user directories;\nthe two groups are quite analogous.\n\n+----------------+--------------------------------------+--------------+------------------+\n|    tree        | default                              | group change | single change    |\n+----------------+--------------------------------------+--------------+------------------+\n| TEXMFLOCAL     | /usr/local/texlive/texmf-local       | --texdir     | --texmflocal     |\n| TEXMFSYSVAR    | /usr/local/texlive/YYYY/texmf-var    | --texdir     | --texmfsysvar    |\n| TEXMFSYSCONFIG | /usr/local/texlive/YYYY/texmf-config | --texdir     | --texmfsysconfig |\n+----------------+--------------------------------------+--------------+------------------+\n| TEXMFHOME      | ~/texmf                              | --texuserdir | --texmfhome      |\n| TEXMFVAR       | ~/.texliveYYYY/texmf-var             | --texuserdir | --texmfvar       |\n| TEXMFCONFIG    | ~/.texliveYYYY/texmf-config          | --texuserdir | --texmfconfig    |\n+----------------+--------------------------------------+--------------+------------------+\n\nIn addition, as mentioned in the previous section, each tree has an\nenvironment variable 'TEXLIVEINSTALL'tree which overrides the\ndefault; command line and profile settings both override environment\nvariable settings.\n\nThe defaults vary slightly on Macs, as explained above in *note\nOPTIONS: install-tl OPTIONS.\n\nFor the user trees, the default value uses '~', and this is left as a\nliteral '~' in 'texmf.cnf'.  That way, each user can have their own\n'TEXMFHOME', etc., as intended.  On the other hand, for the system\ntrees, if '~' is used during the installation, this is assumed to simply\nbe a typing shorthand, and the expanded home directory is written in\n'texmf.cnf', since it doesn't make sense to have user-specific system\ndirectories.\n\nFor more on the directory trees and their intended usage, see the\nmain TeX Live documentation at <https://tug.org/texlive/doc>.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: install-tl BUGS,  Next: install-tl AUTHORS AND COPYRIGHT,  Prev: install-tl DIRECTORY TREES,  Up: install-tl": {
            "content": "",
            "subsections": [
                {
                    "name": "A.10 install-tl BUGS",
                    "content": ""
                }
            ]
        },
        "The 'install-tl' script copies itself into the installed tree.  Usually,": {
            "content": "it can be run from there, using the installed tree as the source for\nanother installation.  Occasionally, however, there may be\nincompatibilities in the code of the new 'install-tl' and the\ninfrastructure, resulting in (probably) inscrutable Perl errors.  The\nway forward is to run 'install-tl' out of the installer package\n('install-tl-unx.tar.gz' or 'install-tl.zip') instead of the\ninstallation.  Feel free to also report the issue; usually the code can\nbe easily synced up again.\n\nBy the way, do not try to use 'install-tl' to adjust options or\ninstalled packages in an existing installed tree.  Use 'tlmgr' instead.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: install-tl AUTHORS AND COPYRIGHT,  Prev: install-tl BUGS,  Up: install-tl": {
            "content": "",
            "subsections": [
                {
                    "name": "A.11 AUTHORS AND COPYRIGHT",
                    "content": ""
                }
            ]
        },
        "This script and its documentation were written for the TeX Live": {
            "content": "distribution (<https://tug.org/texlive>) and both are licensed under the\nGNU General Public License Version 2 or later.\n\n$Id: tlmgr.pl 66236 2023-02-27 21:44:33Z karl $\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr,  Next: Index,  Prev: install-tl,  Up: Top": {
            "content": "",
            "subsections": []
        },
        "Appendix B tlmgr": {
            "content": "* Menu:\n\n* tlmgr NAME::\n* tlmgr SYNOPSIS::\n* tlmgr DESCRIPTION::\n* tlmgr EXAMPLES::\n* tlmgr OPTIONS::\n* tlmgr ACTIONS::\n* tlmgr CONFIGURATION FILE FOR TLMGR::\n* tlmgr CRYPTOGRAPHIC VERIFICATION::\n* tlmgr USER MODE::\n* tlmgr MULTIPLE REPOSITORIES::\n* tlmgr GUI FOR TLMGR::\n* tlmgr MACHINE-READABLE OUTPUT::\n* tlmgr ENVIRONMENT VARIABLES::\n* tlmgr AUTHORS AND COPYRIGHT::\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr NAME,  Next: tlmgr SYNOPSIS,  Up: tlmgr": {
            "content": "",
            "subsections": [
                {
                    "name": "B.1 tlmgr NAME",
                    "content": "tlmgr - the native TeX Live Manager\n"
                }
            ]
        },
        "File: tlbuild.info,  Node: tlmgr SYNOPSIS,  Next: tlmgr DESCRIPTION,  Prev: tlmgr NAME,  Up: tlmgr": {
            "content": "",
            "subsections": [
                {
                    "name": "B.2 tlmgr SYNOPSIS",
                    "content": "tlmgr [option...]  action [option...]  [operand...]\n"
                }
            ]
        },
        "File: tlbuild.info,  Node: tlmgr DESCRIPTION,  Next: tlmgr EXAMPLES,  Prev: tlmgr SYNOPSIS,  Up: tlmgr": {
            "content": "",
            "subsections": [
                {
                    "name": "B.3 tlmgr DESCRIPTION",
                    "content": "*tlmgr* manages an existing TeX Live installation, both packages and\nconfiguration options.  For information on initially downloading and\ninstalling TeX Live, see <https://tug.org/texlive/acquire.html>.\n\nThe most up-to-date version of this documentation (updated nightly\nfrom the development sources) is available at\n<https://tug.org/texlive/tlmgr.html>, along with procedures for updating\n'tlmgr' itself and information about test versions.\n\nTeX Live is organized into a few top-level schemes, each of which\nis specified as a different set of collections and packages, where a\ncollection is a set of packages, and a package is what contains actual\nfiles.  Schemes typically contain a mix of collections and packages, but\neach package is included in exactly one collection, no more and no less.\nA TeX Live installation can be customized and managed at any level.\n\nSee <https://tug.org/texlive/doc> for all the TeX Live documentation\navailable.\n"
                }
            ]
        },
        "File: tlbuild.info,  Node: tlmgr EXAMPLES,  Next: tlmgr OPTIONS,  Prev: tlmgr DESCRIPTION,  Up: tlmgr": {
            "content": "",
            "subsections": [
                {
                    "name": "B.4 tlmgr EXAMPLES",
                    "content": ""
                }
            ]
        },
        "After successfully installing TeX Live, here are a few common operations": {
            "content": "with 'tlmgr':\n\n'tlmgr option repository ctan'\n\n'tlmgr option repository https://mirror.ctan.org/systems/texlive/tlnet'\n\nTell 'tlmgr' to use a nearby CTAN mirror for future updates; useful\nif you installed TeX Live from the DVD image and want to have\ncontinuing updates.  The two commands are equivalent; 'ctan' is\njust an alias for the given url.\n\nCaveat: 'mirror.ctan.org' resolves to many different hosts, and\nthey are not perfectly synchronized; we recommend updating only\ndaily (at most), and not more often.  You can choose a particular\nmirror if problems; the list of all CTAN mirrors with the status of\neach is at <https://ctan.org/mirrors/mirmon>.\n\n'tlmgr update --list'\n\nReport what would be updated without actually updating anything.\n\n'tlmgr update --all'\n\nMake your local TeX installation correspond to what is in the\npackage repository (typically useful when updating from CTAN).\n\n'tlmgr info' what\n\nDisplay detailed information about a package what, such as the\ninstallation status and description, of searches for what in all\npackages.\n\nFor all the capabilities and details of 'tlmgr', please read the\nfollowing voluminous information.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr OPTIONS,  Next: tlmgr ACTIONS,  Prev: tlmgr EXAMPLES,  Up: tlmgr": {
            "content": "",
            "subsections": [
                {
                    "name": "B.5 tlmgr OPTIONS",
                    "content": ""
                }
            ]
        },
        "The following options to 'tlmgr' are global options, not specific to any": {
            "content": "action.  All options, whether global or action-specific, can be given\nanywhere on the command line, and in any order.  The first non-option\nargument will be the main action.  In all cases, '--'option and\n'-'option are equivalent, and an '=' is optional between an option\nname and its value.\n\n*--repository* url|path\n\nSpecify the package repository from which packages should be\ninstalled or updated, either a local directory or network location,\nas below.  This overridesthe default package repository found in\nthe installation's TeX Live Package Database (a.k.a.  the TLPDB,\nwhich is given entirely in the file 'tlpkg/texlive.tlpdb').\n\nThis '--repository' option changes the location only for the\ncurrent run; to make a permanent change, use 'option repository'\n(see the *note option: tlmgr option. action).\n\nAs an example, you can choose a particular CTAN mirror with\nsomething like this:\n\n-repository http://ctan.example.org/its/ctan/dir/systems/texlive/tlnet\n\nOf course a real hostname and its particular top-level CTAN\ndirectory have to be specified.  The list of CTAN mirrors is\navailable at <https://ctan.org/mirrors/mirmon>.\n\nHere's an example of using a local directory:\n\n-repository /local/TL/repository\n\nFor backward compatibility and convenience, '--location' and\n'--repo' are accepted as aliases for this option.\n\nLocations can be specified as any of the following:\n\n'/some/local/dir'\n\n'file:/some/local/dir'\n\nEquivalent ways of specifying a local directory.\n\n'ctan'\n\n'https://mirror.ctan.org/systems/texlive/tlnet'\n\nPick a CTAN mirror automatically, trying for one that is both\nnearby and up-to-date.  The chosen mirror is used for the\nentire download.  The bare 'ctan' is merely an alias for the\nfull url.  (See <https://ctan.org> for more about CTAN and its\nmirrors.)\n\n'http://server/path/to/tlnet'\n\nStandard HTTP. If the (default) LWP method is used, persistent\nconnections are supported.  TL can also use 'curl' or 'wget'\nto do the downloads, or an arbitrary user-specified program,\nas described in the 'tlmgr' documentation\n(<https://tug.org/texlive/doc/tlmgr.html#ENVIRONMENT-VARIABLES>).\n\n'https://server/path/to/tlnet'\n\nAgain, if the (default) LWP method is used, this supports\npersistent connections.  Unfortunately, some versions of\n'wget' and 'curl' do not support https, and even when 'wget'\nsupports https, certificates may be rejected even when the\ncertificate is fine, due to a lack of local certificate roots.\nThe simplest workaround for this problem is to use http or\nftp.\n\n'ftp://server/path/to/tlnet'\n\nIf the (default) LWP method is used, persistent connections\nare supported.\n\n'user@machine:/path/to/tlnet'\n\n'scp://user@machine/path/to/tlnet'\n\n'ssh://user@machine/path/to/tlnet'\n\nThese forms are equivalent; they all use 'scp' to transfer\nfiles.  Using 'ssh-agent' is recommended.  (Info:\n<https://en.wikipedia.org/wiki/OpenSSH>,\n<https://en.wikipedia.org/wiki/Ssh-agent>.)\n\nIf the repository is on the network, trailing '/' characters and/or\ntrailing '/tlpkg' and/or '/archive' components are ignored.\n\n*--gui* [action]\n\nTwo notable GUI front-ends for 'tlmgr', 'tlshell' and 'tlcockpit',\nare started up as separate programs; see their own documentation.\n\n'tlmgr' itself has a graphical interface as well as the command\nline interface.  You can give the option to invoke it, '--gui',\ntogether with an action to be brought directly into the respective\nscreen of the GUI. For example, running\n\ntlmgr --gui update\n\nstarts you directly at the update screen.  If no action is given,\nthe GUI will be started at the main screen.  See *note GUI FOR\nTLMGR: tlmgr GUI FOR TLMGR.\n\nHowever, the native GUI requires Perl/TK, which is no longer\nincluded in TeX Live's Perl distribution for Windows.  You may find\n'tlshell' or 'tlcockpit' easier to work with.\n\n*--gui-lang* llcode\n\nBy default, the GUI tries to deduce your language from the\nenvironment (on Windows via the registry, on Unix via\n'LCMESSAGES').  If that fails you can select a different language\nby giving this option with a language code (based on ISO 639-1).\nCurrently supported (but not necessarily completely translated)\nare: English (en, default), Czech (cs), German (de), French (fr),\nItalian (it), Japanese (ja), Dutch (nl), Polish (pl),\nBrazilian Portuguese (ptBR), Russian (ru), Slovak (sk),\nSlovenian (sl), Serbian (sr), Ukrainian (uk), Vietnamese (vi),\nsimplified Chinese (zhCN), and traditional Chinese (zhTW).\n\ntlshell shares its message catalog with tlmgr.\n\n*--command-logfile* file\n\n'tlmgr' logs the output of all programs invoked (mktexlr, mtxrun,\nfmtutil, updmap) to a separate log file, by default\n'TEXMFSYSVAR/web2c/tlmgr-commands.log'.  This option allows you to\nspecify a different file for the log.\n\n*--debug-translation*\n\nIn GUI mode, this switch tells 'tlmgr' to report any untranslated\n(or missing) messages to standard error.  This can help translators\nto see what remains to be done.\n\n*--machine-readable*\n\nInstead of the normal output intended for human consumption, write\n(to standard output) a fixed format more suitable for machine\nparsing.  See the *note MACHINE-READABLE OUTPUT: tlmgr\nMACHINE-READABLE OUTPUT. section below.\n\n*--no-execute-actions*\n\nSuppress the execution of the execute actions as defined in the\ntlpsrc files.  Documented only for completeness, as this is only\nuseful in debugging.\n\n*--package-logfile* file\n\n'tlmgr' logs all package actions (install, remove, update, failed\nupdates, failed restores) to a separate log file, by default\n'TEXMFSYSVAR/web2c/tlmgr.log'.  This option allows you to specify a\ndifferent file for the log.\n\n*--pause*\n\nThis option makes 'tlmgr' wait for user input before exiting.\nUseful on Windows to avoid disappearing command windows.\n\n*--persistent-downloads*\n\n*--no-persistent-downloads*\n\nFor network-based installations, this option (on by default) makes\n'tlmgr' try to set up a persistent connection (using the 'LWP' Perl\nmodule).  The idea is to open and reuse only one connection per\nsession between your computer and the server, instead of initiating\na new download for each package.\n\nIf this is not possible, 'tlmgr' will fall back to using 'wget'.\nTo disable these persistent connections, use\n'--no-persistent-downloads'.\n\n*--pin-file*\n\nChange the pinning file location from\n'TEXMFLOCAL/tlpkg/pinning.txt' (see *note Pinning: tlmgr Pinning.\nbelow).  Documented only for completeness, as this is only useful\nin debugging.\n\n*--usermode*\n\nActivates user mode for this run of 'tlmgr'; see *note USER MODE:\ntlmgr USER MODE. below.\n\n*--usertree* dir\n\nUses dir for the tree in user mode; see *note USER MODE: tlmgr\nUSER MODE. below.\n\n*--verify-repo=[none|main|all]*\n\nDefines the level of verification done: If 'none' is specified, no\nverification whatsoever is done.  If 'main' is given and a working\nGnuPG ('gpg') binary is available, all repositories are checked,\nbut only the main repository is required to be signed.  If 'all' is\ngiven, then all repositories need to be signed.  See *note\nCRYPTOGRAPHIC VERIFICATION: tlmgr CRYPTOGRAPHIC VERIFICATION. below\nfor details.\n\nThe standard options for TeX Live programs are also accepted:\n'--help/-h/-?', '--version', '-q' (no informational messages), '-v'\n(debugging messages, can be repeated).  For the details about these, see\nthe 'TeXLive::TLUtils' documentation.\n\nThe '--version' option shows version information about the TeX Live\nrelease and about the 'tlmgr' script itself.  If '-v' is also given,\nrevision number for the loaded TeX Live Perl modules are shown, too.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr ACTIONS,  Next: tlmgr CONFIGURATION FILE FOR TLMGR,  Prev: tlmgr OPTIONS,  Up: tlmgr": {
            "content": "",
            "subsections": [
                {
                    "name": "B.6 ACTIONS",
                    "content": "* Menu:\n\n* tlmgr help::\n* tlmgr version::\n* tlmgr backup::\n* tlmgr candidates pkg::\n* tlmgr check [option...] [depends|executes|files|runfiles|texmfdbs|all]::\n* tlmgr conf::\n* tlmgr dump-tlpdb [option...] [--json]::\n* tlmgr generate::\n* tlmgr gui::\n* tlmgr info::\n* tlmgr init-usertree::\n* tlmgr install [option...] pkg...::\n* tlmgr key::\n* tlmgr list::\n* tlmgr option::\n* tlmgr paper::\n* tlmgr path::\n* tlmgr pinning::\n* tlmgr platform::\n* tlmgr postaction::\n* tlmgr print-platform::\n* tlmgr print-platform-info::\n* tlmgr remove [option...] pkg...::\n* tlmgr repository::\n* tlmgr restore::\n* tlmgr search::\n* tlmgr shell::\n* tlmgr show::\n* tlmgr uninstall::\n* tlmgr update [option...] [pkg...]::\n"
                }
            ]
        },
        "File: tlbuild.info,  Node: tlmgr help,  Next: tlmgr version,  Up: tlmgr ACTIONS": {
            "content": "",
            "subsections": []
        },
        "Display this help information and exit (same as '--help', and on the web": {
            "content": "at <https://tug.org/texlive/doc/tlmgr.html>).  Sometimes the 'perldoc'\nand/or 'PAGER' programs on the system have problems, resulting in\ncontrol characters being literally output.  This can't always be\ndetected, but you can set the 'NOPERLDOC' environment variable and\n'perldoc' will not be used.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr version,  Next: tlmgr backup,  Prev: tlmgr help,  Up: tlmgr ACTIONS": {
            "content": "Gives version information (same as '--version').\n\nIf '-v' has been given the revisions of the used modules are\nreported, too.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr backup,  Next: tlmgr candidates pkg,  Prev: tlmgr version,  Up: tlmgr ACTIONS": {
            "content": "*backup [option...] --all*\n\n*backup [option...] pkg...*\n\nIf the '--clean' option is not specified, this action makes a\nbackup of the given packages, or all packages given '--all'.  These\nbackups are saved to the value of the '--backupdir' option, if that\nis an existing and writable directory.  If '--backupdir' is not\ngiven, the 'backupdir' option setting in the TLPDB is used, if\npresent.  If both are missing, no backups are made.  (The installer\nsets 'backupdir' to '.../tlpkg/backups', under the TL root\ninstallation directory, so it is usually defined; see the *note\noption: tlmgr option. description for more information.)\n\nIf the '--clean' option is specified, backups are pruned (removed)\ninstead of saved.  The optional integer value N may be specified\nto set the number of backups that will be retained when cleaning.\nIf 'N' is not given, the value of the 'autobackup' option is used.\nIf both are missing, an error is issued.  For more details of\nbackup pruning, see the 'option' action.\n\nOptions:\n\n*--backupdir* directory\n\nOverrides the 'backupdir' option setting in the TLPDB. The\ndirectory argument is required and must specify an existing,\nwritable directory where backups are to be placed.\n\n*--all*\n\nIf '--clean' is not specified, make a backup of all packages\nin the TeX Live installation; this will take quite a lot of\nspace and time.  If '--clean' is specified, all packages are\npruned.\n\n*--clean*[=N]\n\nInstead of making backups, prune the backup directory of old\nbackups, as explained above.  The optional integer argument\nN overrides the 'autobackup' option set in the TLPDB. You\nmust use '--all' or a list of packages together with this\noption, as desired.\n\n*--dry-run*\n\nNothing is actually backed up or removed; instead, the actions\nto be performed are written to the terminal.\n\nFile: tlbuild.info,  Node: tlmgr candidates pkg,  Next: tlmgr check [option...] [depends|executes|files|runfiles|texmfdbs|all],  Prev: tlmgr backup,  Up: tlmgr ACTIONS\n\n\nShows the available candidate repositories for package pkg.  See *note\nMULTIPLE REPOSITORIES: tlmgr MULTIPLE REPOSITORIES. below.\n\nFile: tlbuild.info,  Node: tlmgr check [option...] [depends|executes|files|runfiles|texmfdbs|all],  Next: tlmgr conf,  Prev: tlmgr candidates pkg,  Up: tlmgr ACTIONS\n\n\nExecute one (or all) check(s) of the consistency of the installation.",
            "subsections": []
        },
        "If no problems are found, there will be no output.  (To get a view of": {
            "content": "what is being done, run 'tlmgr -v check'.)\n\n*depends*\n\nLists those packages which occur as dependencies in an installed\ncollection, but are themselves not installed, and those packages\nwhich are not contained in any collection.\n\nIf you call 'tlmgr check collections' this test will be carried out\ninstead since former versions for 'tlmgr' called it that way.\n\n*executes*\n\nCheck that the files referred to by 'execute' directives in the TeX\nLive Database are present.\n\n*files*\n\nChecks that all files listed in the local TLPDB ('texlive.tlpdb')\nare actually present, and lists those missing.\n\n*runfiles*\n\nList those filenames that are occurring more than one time in the\nrunfiles sections, except for known duplicates.\n\n*texmfdbs*\n\nChecks related to the 'ls-R' files.  If you have defined new trees,\nor changed the 'TEXMF' or 'TEXMFDBS' variables, it can't hurt to\nrun this.  It checks that:\n\n- all items in 'TEXMFDBS' have the '!!' prefix.\n\n- all items in 'TEXMFBDS' have an 'ls-R' file (if they exist at all).\n\n- all items in 'TEXMF' with '!!' are listed in 'TEXMFDBS'.\n\n- all items in 'TEXMF' with an 'ls-R' file are listed in 'TEXMFDBS'.\n\nOptions:\n\n*--use-svn*\n\nUse the output of 'svn status' instead of listing the files; for\nchecking the TL development repository.  (This is run nightly.)\n\nFile: tlbuild.info,  Node: tlmgr conf,  Next: tlmgr dump-tlpdb [option...] [--json],  Prev: tlmgr check [option...] [depends|executes|files|runfiles|texmfdbs|all],  Up: tlmgr ACTIONS\n\n\n*conf [texmf|tlmgr|updmap [--conffile file] [--delete] [key [value]]]*\n\n*conf auxtrees [--conffile file] [show|add|remove] [value]*\n\nWith only 'conf', show general configuration information for TeX\nLive, including active configuration files, path settings, and\nmore.  This is like running 'texconfig conf', but works on all\nsupported platforms.\n\nWith one of 'conf texmf', 'conf tlmgr', or 'conf updmap', shows all\nkey/value pairs (i.e., all settings) as saved in 'ROOT/texmf.cnf',\nthe user-specific 'tlmgr' configuration file (see below), or the\nfirst found (via 'kpsewhich') 'updmap.cfg' file, respectively.\n\nIf key is given in addition, shows the value of only that key\nin the respective file.  If option --delete is also given, the\nvalue in the given configuration file is entirely removed (not just\ncommented out).\n\nIf value is given in addition, key is set to value in the\nrespective file.  No error checking is done!\n\nThe 'PATH' value shown by 'conf' is as used by 'tlmgr'.  The\ndirectory in which the 'tlmgr' executable is found is automatically\nprepended to the PATH value inherited from the environment.\n\nHere is a practical example of changing configuration values.  If\nthe execution of (some or all) system commands via '\\write18' was\nleft enabled during installation, you can disable it afterwards:\n\ntlmgr conf texmf shellescape 0\n\nThe subcommand 'auxtrees' allows adding and removing arbitrary\nadditional texmf trees, completely under user control.  'auxtrees\nshow' shows the list of additional trees, 'auxtrees add' tree\nadds a tree to the list, and 'auxtrees remove' tree removes a\ntree from the list (if present).  The trees should not contain an\n'ls-R' file (or files will not be found if the 'ls-R' becomes\nstale).  This works by manipulating the Kpathsea variable\n'TEXMFAUXTREES', in (by default) 'ROOT/texmf.cnf'.  Example:\n\ntlmgr conf auxtrees add /quick/test/tree\ntlmgr conf auxtrees remove /quick/test/tree\n\nIn all cases the configuration file can be explicitly specified via\nthe option '--conffile' file, e.g., if you don't want to change\nthe system-wide configuration.\n\nWarning: The general facility for changing configuration values is\nhere, but tinkering with settings in this way is strongly\ndiscouraged.  Again, no error checking on either keys or values is\ndone, so any sort of breakage is possible.\n\nFile: tlbuild.info,  Node: tlmgr dump-tlpdb [option...] [--json],  Next: tlmgr generate,  Prev: tlmgr conf,  Up: tlmgr ACTIONS\n\n",
            "subsections": []
        },
        "Dump complete local or remote TLPDB to standard output, as-is.  The": {
            "content": "output is analogous to the '--machine-readable' output; see *note\nMACHINE-READABLE OUTPUT: tlmgr MACHINE-READABLE OUTPUT. section.\n\nOptions:\n\n*--local*\n\nDump the local TLPDB.\n\n*--remote*\n\nDump the remote TLPDB.\n\n*--json*\n\nInstead of dumping the actual content, the database is dumped as\nJSON. For the format of JSON output see\n'tlpkg/doc/JSON-formats.txt', format definition 'TLPDB'.\n\nExactly one of '--local' and '--remote' must be given.\n\nIn either case, the first line of the output specifies the repository\nlocation, in this format:\n\n\"location-url\" \"\\t\" location\n\nwhere 'location-url' is the literal field name, followed by a tab,\nand location is the file or url to the repository.\n\nLine endings may be either LF or CRLF depending on the current\nplatform.\n\nFile: tlbuild.info,  Node: tlmgr generate,  Next: tlmgr gui,  Prev: tlmgr dump-tlpdb [option...] [--json],  Up: tlmgr ACTIONS\n\n\n*generate [option...] language*\n\n*generate [option...] language.dat*\n\n*generate [option...] language.def*\n\n*generate [option...] language.dat.lua*\n\nThe 'generate' action overwrites any manual changes made in the\nrespective files: it recreates them from scratch based on the\ninformation of the installed packages, plus local adaptions.  The TeX",
            "subsections": []
        },
        "Live installer and 'tlmgr' routinely call 'generate' for all of these": {
            "content": "files.\n\nFor managing your own fonts, please read the 'updmap --help'\ninformation and/or <https://tug.org/fonts/fontinstall.html>.\n\nFor managing your own formats, please read the 'fmtutil --help'\ninformation.\n\nIn more detail: 'generate' remakes any of the configuration files\n'language.dat', 'language.def', and 'language.dat.lua' from the\ninformation present in the local TLPDB, plus locally-maintained files.\n\nThe locally-maintained files are 'language-local.dat',\n'language-local.def', or 'language-local.dat.lua', searched for in\n'TEXMFLOCAL' in the respective directories.  If local additions are\npresent, the final file is made by starting with the main file, omitting\nany entries that the local file specifies to be disabled, and finally\nappending the local file.\n\n(Historical note: The formerly supported 'updmap-local.cfg' and\n'fmtutil-local.cnf' are no longer read, since 'updmap' and 'fmtutil' now\nreads and supports multiple configuration files.  Thus, local additions\ncan and should be put into an 'updmap.cfg' of 'fmtutil.cnf' file in\n'TEXMFLOCAL'.  The 'generate updmap' and 'generate fmtutil' actions no\nlonger exist.)\n\nLocal files specify entries to be disabled with a comment line,\nnamely one of these:\n\n%!NAME\n--!NAME\n\nwhere 'language.dat' and 'language.def' use '%', and\n'language.dat.lua' use '--'.  In all cases, the name is the respective\nformat name or hyphenation pattern identifier.  Examples:\n\n%!german\n--!usenglishmax\n\n(Of course, you're not likely to actually want to disable those\nparticular items.  They're just examples.)\n\nAfter such a disabling line, the local file can include another entry\nfor the same item, if a different definition is desired.  In general,\nexcept for the special disabling lines, the local files follow the same\nsyntax as the master files.\n\nThe form 'generate language' recreates all three files\n'language.dat', 'language.def', and 'language.dat.lua', while the forms\nwith an extension recreates only that given language file.\n\nOptions:\n\n*--dest* outputfile\n\nspecifies the output file (defaults to the respective location in\n'TEXMFSYSVAR').  If '--dest' is given to 'generate language', it\nserves as a basename onto which '.dat' will be appended for the\nname of the 'language.dat' output file, '.def' will be appended to\nthe value for the name of the 'language.def' output file, and\n'.dat.lua' to the name of the 'language.dat.lua' file.  (This is\njust to avoid overwriting; if you want a specific name for each\noutput file, we recommend invoking 'tlmgr' twice.)\n\n*--localcfg* localconffile\n\nspecifies the (optional) local additions (defaults to the\nrespective location in 'TEXMFLOCAL').\n\n*--rebuild-sys*\n\ntells 'tlmgr' to run necessary programs after config files have\nbeen regenerated.  These are: 'fmtutil-sys --all' after 'generate\nfmtutil', 'fmtutil-sys --byhyphen .../language.dat' after 'generate\nlanguage.dat', and 'fmtutil-sys --byhyphen .../language.def' after\n'generate language.def'.\n\nThese subsequent calls cause the newly-generated files to actually\ntake effect.  This is not done by default since those calls are\nlengthy processes and one might want to made several related\nchanges in succession before invoking these programs.\n\nThe respective locations are as follows:\n\ntex/generic/config/language.dat (and language-local.dat)\ntex/generic/config/language.def (and language-local.def)\ntex/generic/config/language.dat.lua (and language-local.dat.lua)\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr gui,  Next: tlmgr info,  Prev: tlmgr generate,  Up: tlmgr ACTIONS": {
            "content": "Start the graphical user interface.  See *GUI* below.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr info,  Next: tlmgr init-usertree,  Prev: tlmgr gui,  Up: tlmgr ACTIONS": {
            "content": "*info [option...] pkg...*\n\n*info [option...] collections*\n\n*info [option...] schemes*\n\nWith no argument, lists all packages available at the package\nrepository, prefixing those already installed with 'i'.\n\nWith the single word 'collections' or 'schemes' as the argument,\nlists the request type instead of all packages.\n\nWith any other arguments, display information about pkg: the\nname, category, short and long description, sizes, installation\nstatus, and TeX Live revision number.  If pkg is not locally\ninstalled, searches in the remote installation source.\n\nFor normal packages (not collections or schemes), the sizes of the\nfour groups of files (run/src/doc/bin files) are shown separately.\nFor collections, the cumulative size is shown, including all\ndirectly-dependent packages (but not dependent collections).  For\nschemes, the cumulative size is also shown, including all\ndirectly-dependent collections and packages.\n\nIf pkg is not found locally or remotely, the search action is\nused and lists matching packages and files.\n\nIt also displays information taken from the TeX Catalogue, namely\nthe package version, date, and license.  Consider these, especially\nthe package version, as approximations only, due to timing skew of\nthe updates of the different pieces.  By contrast, the 'revision'\nvalue comes directly from TL and is reliable.\n\nThe former actions 'show' and 'list' are merged into this action,\nbut are still supported for backward compatibility.\n\nOptions:\n\n*--list*\n\nIf the option '--list' is given with a package, the list of\ncontained files is also shown, including those for\nplatform-specific dependencies.  When given with schemes and\ncollections, '--list' outputs their dependencies in a similar\nway.\n\n*--only-installed*\n\nIf this option is given, the installation source will not be\nused; only locally installed packages, collections, or schemes\nare listed.\n\n*--only-remote*\n\nOnly list packages from the remote repository.  Useful when\nchecking what is available in a remote repository using 'tlmgr\n--repo ... --only-remote info'.  Note that '--only-installed'\nand '--only-remote' cannot both be specified.\n\n*--data 'item1,item2,...'*\n\nIf the option '--data' is given, its argument must be a comma\nor colon separated list of field names from: 'name',\n'category', 'localrev', 'remoterev', 'shortdesc', 'longdesc',\n'installed', 'size', 'relocatable', 'depends', 'cat-version',\n'cat-date', 'cat-license', plus various 'cat-contact-*' fields\n(see below).\n\nThe 'cat-*' fields all come from the TeX Catalogue\n(<https://ctan.org/pkg/catalogue>).  For each, there are two\nmore variants with prefix 'l' and 'r', e.g., 'lcat-version'\nand 'rcat-version', which indicate the local and remote\ninformation, respectively.  The variants without 'l' and 'r'\nshow the most current one, which is normally the remote value.\n\nThe requested packages' information is listed in CSV format,\none package per line, and the column information is given by\nthe 'itemN'.  The 'depends' column contains the names of all\nthe dependencies separated by ':' characters.\n\nAt this writing, the 'cat-contact-*' fields include: 'home',\n'repository', 'support', 'bugs', 'announce', 'development'.\nEach may be empty or a url value.  A brief description is on\nthe CTAN upload page for new packages:\n<https://ctan.org/upload>.\n\n*--json*\n\nIn case '--json' is specified, the output is a JSON encoded\narray where each array element is the JSON representation of a\nsingle 'TLPOBJ' but with additional information.  For details\nsee 'tlpkg/doc/JSON-formats.txt', format definition:\n'TLPOBJINFO'.  If both '--json' and '--data' are given,\n'--json' takes precedence.\n\nFile: tlbuild.info,  Node: tlmgr init-usertree,  Next: tlmgr install [option...] pkg...,  Prev: tlmgr info,  Up: tlmgr ACTIONS\n\n",
            "subsections": []
        },
        "Sets up a texmf tree for so-called user mode management, either the": {
            "content": "default user tree ('TEXMFHOME'), or one specified on the command line\nwith '--usertree'.  See *note USER MODE: tlmgr USER MODE. below.\n\nFile: tlbuild.info,  Node: tlmgr install [option...] pkg...,  Next: tlmgr key,  Prev: tlmgr init-usertree,  Up: tlmgr ACTIONS\n\n",
            "subsections": []
        },
        "Install each pkg given on the command line, if it is not already": {
            "content": "installed.  It does not touch existing packages; see the 'update' action\nfor how to get the latest version of a package.\n\nBy default this also installs all packages on which the given pkgs\nare dependent.  Options:\n\n*--dry-run*\n\nNothing is actually installed; instead, the actions to be performed\nare written to the terminal.\n\n*--file*\n\nInstead of fetching a package from the installation repository, use\nthe package files given on the command line.  These files must be\nstandard TeX Live package files (with contained tlpobj file).\n\n*--force*\n\nIf updates to 'tlmgr' itself (or other parts of the basic\ninfrastructure) are present, 'tlmgr' will bail out and not perform\nthe installation unless this option is given.  Not recommended.\n\n*--no-depends*\n\nDo not install dependencies.  (By default, installing a package\nensures that all dependencies of this package are fulfilled.)\n\n*--no-depends-at-all*\n\nNormally, when you install a package which ships binary files the\nrespective binary package will also be installed.  That is, for a\npackage 'foo', the package 'foo.i386-linux' will also be installed\non an 'i386-linux' system.  This option suppresses this behavior,\nand also implies '--no-depends'.  Don't use it unless you are sure\nof what you are doing.\n\n*--reinstall*\n\nReinstall a package (including dependencies for collections) even\nif it already seems to be installed (i.e, is present in the TLPDB).\nThis is useful to recover from accidental removal of files in the\nhierarchy.\n\nWhen re-installing, only dependencies on normal packages are\nfollowed (i.e., not those of category Scheme or Collection).\n\n*--with-doc*\n\n*--with-src*\n\nWhile not recommended, the 'install-tl' program provides an option\nto omit installation of all documentation and/or source files.  (By\ndefault, everything is installed.)  After such an installation, you\nmay find that you want the documentation or source files for a\ngiven package after all.  You can get them by using these options\nin conjunction with '--reinstall', as in (using the 'fontspec'\npackage as the example):\n\ntlmgr install --reinstall --with-doc --with-src fontspec\n\nThis action does not automatically add new symlinks in system\ndirectories; you need to run 'tlmgr path add' (*note path: tlmgr path.)\nyourself if you are using this feature and want new symlinks added.\n\nFile: tlbuild.info,  Node: tlmgr key,  Next: tlmgr list,  Prev: tlmgr install [option...] pkg...,  Up: tlmgr ACTIONS\n\n\n*key list*\n\n*key add file*\n\n*key remove keyid*\n\nThe action 'key' allows listing, adding and removing additional GPG\nkeys to the set of trusted keys, that is, those that are used to\nverify the TeX Live databases.\n\nWith the 'list' argument, 'key' lists all keys.\n\nThe 'add' argument requires another argument, either a filename or\n'-' for stdin, from which the key is added.  The key is added to\nthe local keyring 'GNUPGHOME/repository-keys.gpg', which is\nnormally 'tlpkg/gpg/repository-keys.gpg'.\n\nThe 'remove' argument requires a key id and removes the requested\nid from the local keyring.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr list,  Next: tlmgr option,  Prev: tlmgr key,  Up: tlmgr ACTIONS": {
            "content": "Synonym for *note info: tlmgr info.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr option,  Next: tlmgr paper,  Prev: tlmgr list,  Up: tlmgr ACTIONS": {
            "content": "*option [--json] [show]*\n\n*option [--json] showall|help*\n\n*option key [value]*\n\nThe first form, 'show', shows the global TeX Live settings currently\nsaved in the TLPDB with a short description and the 'key' used for\nchanging it in parentheses.\n\nThe second form, 'showall', is similar, but also shows options which\ncan be defined but are not currently set to any value ('help' is a\nsynonym).\n\nBoth 'show...' forms take an option '--json', which dumps the option\ninformation in JSON format.  In this case, both forms dump the same\ndata.  For the format of the JSON output see\n'tlpkg/doc/JSON-formats.txt', format definition 'TLOPTION'.\n\nIn the third form, with key, if value is not given, the setting\nfor key is displayed.  If value is present, key is set to value.\n\nPossible values for key are (run 'tlmgr option showall' for the\ndefinitive list):\n\nrepository (default package repository),\nformats    (generate formats at installation or update time),\npostcode   (run postinst code blobs)\ndocfiles   (install documentation files),\nsrcfiles   (install source files),\nbackupdir  (default directory for backups),\nautobackup (number of backups to keep).\nsysbin    (directory to which executables are linked by the path action)\nsysman    (directory to which man pages are linked by the path action)\nsysinfo   (directory to which Info files are linked by the path action)\ndesktopintegration (Windows-only: create Start menu shortcuts)\nfileassocs (Windows-only: change file associations)\nmultiuser  (Windows-only: install for all users)\n\nOne common use of 'option' is to permanently change the installation\nto get further updates from the Internet, after originally installing\nfrom DVD. To do this, you can run\n\ntlmgr option repository https://mirror.ctan.org/systems/texlive/tlnet\n\nThe 'install-tl' documentation has more information about the\npossible values for 'repository'.  (For backward compatibility,\n'location' can be used as a synonym for 'repository'.)\n\nIf 'formats' is set (this is the default), then formats are\nregenerated when either the engine or the format files have changed.",
            "subsections": []
        },
        "Disable this only when you know how and want to regenerate formats": {
            "content": "yourself whenever needed (which is often, in practice).\n\nThe 'postcode' option controls execution of per-package\npostinstallation action code.  It is set by default, and again disabling\nis not likely to be of interest except to developers doing debugging.\n\nThe 'docfiles' and 'srcfiles' options control the installation of\ntheir respective file groups (documentation, sources; grouping is\napproximate) per package.  By default both are enabled (1).  Either or\nboth can be disabled (set to 0) if disk space is limited or for minimal\ntesting installations, etc.  When disabled, the respective files are not\ndownloaded at all.\n\nThe options 'autobackup' and 'backupdir' determine the defaults for\nthe actions 'update', 'backup' and 'restore'.  These three actions need\na directory in which to read or write the backups.  If '--backupdir' is\nnot specified on the command line, the 'backupdir' option value is used\n(if set).  The TL installer sets 'backupdir' to '.../tlpkg/backups',\nunder the TL root installation directory.\n\nThe 'autobackup' option (de)activates automatic generation of\nbackups.  Its value is an integer.  If the 'autobackup' value is '-1',\nno backups are removed.  If 'autobackup' is 0 or more, it specifies the\nnumber of backups to keep.  Thus, backups are disabled if the value is\n0.  In the '--clean' mode of the 'backup' action this option also\nspecifies the number to be kept.  The default value is 1, so that\nbackups are made, but only one backup is kept.\n\nTo setup 'autobackup' to '-1' on the command line, use:\n\ntlmgr option -- autobackup -1\n\nThe '--' avoids having the '-1' treated as an option.  (The '--'\nstops parsing for options at the point where it appears; this is a\ngeneral feature across most Unix programs.)\n\nThe 'sysbin', 'sysman', and 'sysinfo' options are used on Unix\nsystems to control the generation of links for executables, Info files\nand man pages.  See the 'path' action for details.\n\nThe last three options affect behavior on Windows installations.  If\n'desktopintegration' is set, then some packages will install items in a\nsub-folder of the Start menu for 'tlmgr gui', documentation, etc.  If\n'fileassocs' is set, Windows file associations are made (see also the\n'postaction' action).  Finally, if 'multiuser' is set, then adaptions to\nthe registry and the menus are done for all users on the system instead\nof only the current user.  All three options are on by default.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr paper,  Next: tlmgr path,  Prev: tlmgr option,  Up: tlmgr ACTIONS": {
            "content": "*paper [a4|letter]*\n\n*<[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [papersize|--list]*>\n\n*paper --json*\n\nWith no arguments ('tlmgr paper'), shows the default paper size\nsetting for all known programs.\n\nWith one argument (e.g., 'tlmgr paper a4'), sets the default for all\nknown programs to that paper size.\n\nWith a program given as the first argument and no paper size\nspecified (e.g., 'tlmgr dvips paper'), shows the default paper size for\nthat program.\n\nWith a program given as the first argument and a paper size as the\nlast argument (e.g., 'tlmgr dvips paper a4'), set the default for that\nprogram to that paper size.\n\nWith a program given as the first argument and '--list' given as the\nlast argument (e.g., 'tlmgr dvips paper --list'), shows all valid paper\nsizes for that program.  The first size shown is the default.\n\nIf '--json' is specified without other options, the paper setup is\ndumped in JSON format.  For the format of JSON output see\n'tlpkg/doc/JSON-formats.txt', format definition 'TLPAPER'.\n\nIncidentally, this syntax of having a specific program name before\nthe 'paper' keyword is unusual.  It is inherited from the longstanding\n'texconfig' script, which supports other configuration settings for some\nprograms, notably 'dvips'.  'tlmgr' does not support those extra\nsettings.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr path,  Next: tlmgr pinning,  Prev: tlmgr paper,  Up: tlmgr ACTIONS": {
            "content": "*path [--windowsmode=user|admin] add*\n\n*path [--windowsmode=user|admin] remove*\n\nOn Unix, adds or removes symlinks for executables, man pages, and\ninfo pages in the system directories specified by the respective\noptions (see the *note option: tlmgr option. description above).\nDoes not change any initialization files, either system or\npersonal.  Furthermore, any executables added or removed by future\nupdates are not taken care of automatically; this command must be\nrerun as needed.\n\nOn Windows, the registry part where the binary directory is added\nor removed is determined in the following way:\n\nIf the user has admin rights, and the option '--windowsmode' is not\ngiven, the setting w32multiuser determines the location (i.e.,\nif it is on then the system path, otherwise the user path is\nchanged).\n\nIf the user has admin rights, and the option '--windowsmode' is\ngiven, this option determines the path to be adjusted.\n\nIf the user does not have admin rights, and the option\n'--windowsmode' is not given, and the setting w32multiuser is\noff, the user path is changed, while if the setting\nw32multiuser is on, a warning is issued that the caller does\nnot have enough privileges.\n\nIf the user does not have admin rights, and the option\n'--windowsmode' is given, it must be 'user' and the user path will\nbe adjusted.  If a user without admin rights uses the option\n'--windowsmode admin' a warning is issued that the caller does not\nhave enough privileges.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr pinning,  Next: tlmgr platform,  Prev: tlmgr path,  Up: tlmgr ACTIONS": {
            "content": "The 'pinning' action manages the pinning file, see *note Pinning: tlmgr\nPinning. below.\n\n'pinning show'\n\nShows the current pinning data.\n\n'pinning add' repo pkgglob...\n\nPins the packages matching the pkgglob(s) to the repository\nrepo.\n\n'pinning remove' repo pkgglob...\n\nAny packages recorded in the pinning file matching the <pkgglob>s\nfor the given repository repo are removed.\n\n'pinning remove repo --all'\n\nRemove all pinning data for repository repo.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr platform,  Next: tlmgr postaction,  Prev: tlmgr pinning,  Up: tlmgr ACTIONS": {
            "content": "*platform list|add|remove platform...*\n\n*platform set platform*\n\n*platform set auto*\n\n'platform list' lists the TeX Live names of all the platforms\n(a.k.a.  architectures), ('i386-linux', ...)  available at the\npackage repository.\n\n'platform add' platform...  adds the executables for each given\nplatform platform to the installation from the repository.\n\n'platform remove' platform...  removes the executables for each\ngiven platform platform from the installation, but keeps the\ncurrently running platform in any case.\n\n'platform set' platform switches TeX Live to always use the given\nplatform instead of auto detection.\n\n'platform set auto' switches TeX Live to auto detection mode for\nplatform.\n\nPlatform detection is needed to select the proper 'xz' and 'wget'\nbinaries that are shipped with TeX Live.\n\n'arch' is a synonym for 'platform'.\n\nOptions:\n\n*--dry-run*\n\nNothing is actually installed; instead, the actions to be\nperformed are written to the terminal.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr postaction,  Next: tlmgr print-platform,  Prev: tlmgr platform,  Up: tlmgr ACTIONS": {
            "content": "*postaction [option...] install [shortcut|fileassoc|script] [pkg...]*\n\n*postaction [option...] remove [shortcut|fileassoc|script] [pkg...]*\n\nCarry out the postaction 'shortcut', 'fileassoc', or 'script' given\nas the second required argument in install or remove mode (which is\nthe first required argument), for either the packages given on the\ncommand line, or for all if '--all' is given.\n\nOptions:\n\n*--windowsmode=[user|admin]*\n\nIf the option '--windowsmode' is given the value 'user', all\nactions will only be carried out in the user-accessible parts\nof the registry/filesystem, while the value 'admin' selects\nthe system-wide parts of the registry for the file\nassociations.  If you do not have enough permissions, using\n'--windowsmode=admin' will not succeed.\n\n*--fileassocmode=[1|2]*\n\n'--fileassocmode' specifies the action for file associations.\nIf it is set to 1 (the default), only new associations are\nadded; if it is set to 2, all associations are set to the TeX\nLive programs.  (See also 'option fileassocs'.)\n\n*--all*\n\nCarry out the postactions for all packages\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr print-platform,  Next: tlmgr print-platform-info,  Prev: tlmgr postaction,  Up: tlmgr ACTIONS": {
            "content": "",
            "subsections": []
        },
        "Print the TeX Live identifier for the detected platform": {
            "content": "(hardware/operating system) combination to standard output, and exit.\n'--print-arch' is a synonym.\n\nFile: tlbuild.info,  Node: tlmgr print-platform-info,  Next: tlmgr remove [option...] pkg...,  Prev: tlmgr print-platform,  Up: tlmgr ACTIONS\n\n",
            "subsections": []
        },
        "Print the TeX Live platform identifier, TL platform long name, and": {
            "content": "original output from guess.\n\nFile: tlbuild.info,  Node: tlmgr remove [option...] pkg...,  Next: tlmgr repository,  Prev: tlmgr print-platform-info,  Up: tlmgr ACTIONS\n\n",
            "subsections": []
        },
        "Remove each pkg specified.  Removing a collection removes all package": {
            "content": "dependencies (unless '--no-depends' is specified), but not any\ncollection dependencies of that collection.  However, when removing a\npackage, dependencies are never removed.  Options:\n\n*--all*\n\nUninstalls all of TeX Live, asking for confirmation unless\n'--force' is also specified.\n\n*--backup*\n\n*--backupdir* directory\n\nThese options behave just as with the *note update: tlmgr update\n[option...] [pkg...]. action (q.v.), except they apply to\nmaking backups of packages before they are removed.  The default is\nto make such a backup, that is, to save a copy of packages before\nremoval.\n\nThe *note restore: tlmgr restore. action explains how to restore\nfrom a backup.\n\n*--no-depends*\n\nDo not remove dependent packages.\n\n*--no-depends-at-all*\n\nSee above under *note install: tlmgr install [option...]\npkg.... (and beware).\n\n*--force*\n\nBy default, removal of a package or collection that is a dependency\nof another collection or scheme is not allowed.  With this option,\nthe package will be removed unconditionally.  Use with care.\n\nA package that has been removed using the '--force' option because\nit is still listed in an installed collection or scheme will not be\nupdated, and will be mentioned as 'forcibly removed' in the output\nof 'tlmgr update --list'.\n\n*--dry-run*\n\nNothing is actually removed; instead, the actions to be performed\nare written to the terminal.\n\nExcept with '--all', this 'remove' action does not automatically\nremove symlinks to executables from system directories; you need to run\n'tlmgr path remove' (*note path: tlmgr path.) yourself if you remove an\nindividual package with a symlink in a system directory.\n\nFile: tlbuild.info,  Node: tlmgr repository,  Next: tlmgr restore,  Prev: tlmgr remove [option...] pkg...,  Up: tlmgr ACTIONS\n\n\n*repository list*\n\n*repository list path|url|tag*\n\n*repository add path [tag]*\n\n*repository remove path|tag*\n\n*repository set path[#tag] [path[#tag] ...]*\n\n*repository status*\n\nThis action manages the list of repositories.  See *note\n(MULTIPLEREPOSITORIES):: below for detailed explanations.\n\nThe first form, 'repository list', lists all configured\nrepositories and the respective tags if set.  If a path, url, or\ntag is given after the 'list' keyword, it is interpreted as the\nsource from which to initialize a TL database and lists the\ncontained packages.  This can also be an otherwise-unused\nrepository, either local or remote.  If the option\n'--with-platforms' is specified in addition, for each package the\navailable platforms (if any) are also listed.\n\nThe form 'repository add' adds a repository (optionally attaching a\ntag) to the list of repositories, while 'repository remove' removes\na repository, either by full path/url, or by tag.\n\nThe form 'repository set' sets the list of available repositories\nto the items given on the command line, overwriting previous\nsettings.\n\nThe form 'repository status' reports the verification status of the\nloaded repositories with the format of one repository per line with\nfields separated by a single space:\n\nThe tag (which can be the same as the url);\n\n= the url;\n\n= iff machine-readable output is specified, the verification\ncode (a number);\n\n= a textual description of the verification status, as the\nlast field extending to the end of line.\n\nThat is, in normal (not machine-readable) output, the third field\n(numeric verification status) is not present.\n\nIn all cases, one of the repositories must be tagged as 'main';\notherwise, all operations will fail!\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr restore,  Next: tlmgr search,  Prev: tlmgr repository,  Up: tlmgr ACTIONS": {
            "content": "*restore [option...] pkg [rev]*\n\n*restore [option...] --all*\n\nRestore a package from a previously-made backup.\n\nIf '--all' is given, try to restore the latest revision of all\npackage backups found in the backup directory.\n\nOtherwise, if neither pkg nor rev are given, list the available\nbackup revisions for all packages.  With pkg given but no rev,\nlist all available backup revisions of pkg.\n\nWhen listing available packages, 'tlmgr' shows the revision, and in\nparenthesis the creation time if available (in format yyyy-mm-dd\nhh:mm).\n\nIf (and only if) both pkg and a valid revision number rev are\nspecified, try to restore the package from the specified backup.\n\nOptions:\n\n*--all*\n\nTry to restore the latest revision of all package backups\nfound in the backup directory.  Additional non-option\narguments (like pkg) are not allowed.\n\n*--backupdir* directory\n\nSpecify the directory where the backups are to be found.  If\nnot given it will be taken from the configuration setting in\nthe TLPDB.\n\n*--dry-run*\n\nNothing is actually restored; instead, the actions to be\nperformed are written to the terminal.\n\n*--force*\n\nDon't ask questions.\n\n*--json*\n\nWhen listing backups, the option '--json' turn on JSON output.\nThe format is an array of JSON objects ('name', 'rev',\n'date').  For details see 'tlpkg/doc/JSON-formats.txt', format\ndefinition: 'TLBACKUPS'.  If both '--json' and '--data' are\ngiven, '--json' takes precedence.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr search,  Next: tlmgr shell,  Prev: tlmgr restore,  Up: tlmgr ACTIONS": {
            "content": "*search [option...] what*\n\n*search [option...] --file what*\n\n*search [option...] --all what*\n\nBy default, search the names, short descriptions, and long\ndescriptions of all locally installed packages for the argument\nwhat, interpreted as a (Perl) regular expression.\n\nOptions:\n\n*--file*\n\nList all filenames containing what.\n\n*--all*\n\nSearch everything: package names, descriptions and filenames.\n\n*--global*\n\nSearch the TeX Live Database of the installation medium,\ninstead of the local installation.\n\n*--word*\n\nRestrict the search of package names and descriptions (but not\nfilenames) to match only full words.  For example, searching\nfor 'table' with this option will not output packages\ncontaining the word 'tables' (unless they also contain the\nword 'table' on its own).\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr shell,  Next: tlmgr show,  Prev: tlmgr search,  Up: tlmgr ACTIONS": {
            "content": "",
            "subsections": []
        },
        "Starts an interactive mode, where tlmgr prompts for commands.  This can": {
            "content": "be used directly, or for scripting.  The first line of output is\n'protocol' n, where n is an unsigned number identifying the protocol\nversion (currently 1).\n\nIn general, tlmgr actions that can be given on the command line\ntranslate to commands in this shell mode.  For example, you can say\n'update --list' to see what would be updated.  The TLPDB is loaded the\nfirst time it is needed (not at the beginning), and used for the rest of\nthe session.\n\nBesides these actions, a few commands are specific to shell mode:\n\nprotocol\n\nPrint 'protocol n', the current protocol version.\n\nhelp\n\nPrint pointers to this documentation.\n\nversion\n\nPrint tlmgr version information.\n\nquit, end, bye, byebye, EOF\n\nExit.\n\nrestart\n\nRestart 'tlmgr shell' with the original command line; most useful\nwhen developing 'tlmgr'.\n\nload [local|remote]\n\nExplicitly load the local or remote, respectively, TLPDB.\n\nsave\n\nSave the local TLPDB, presumably after other operations have\nchanged it.\n\nget [var] =item set [var [val]]\n\nGet the value of var, or set it to val.  Possible var names:\n'debug-translation', 'machine-readable', 'no-execute-actions',\n'require-verification', 'verify-downloads', 'repository', and\n'prompt'.  All except 'repository' and 'prompt' are booleans,\ntaking values 0 and 1, and behave like the corresponding command\nline option.  The 'repository' variable takes a string, and sets\nthe remote repository location.  The 'prompt' variable takes a\nstring, and sets the current default prompt.\n\nIf var or then val is not specified, it is prompted for.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr show,  Next: tlmgr uninstall,  Prev: tlmgr shell,  Up: tlmgr ACTIONS": {
            "content": "Synonym for *note info: tlmgr info.\n\nFile: tlbuild.info,  Node: tlmgr uninstall,  Next: tlmgr update [option...] [pkg...],  Prev: tlmgr show,  Up: tlmgr ACTIONS\n\n\nSynonym for *note remove: tlmgr remove [option...] pkg....\n\nFile: tlbuild.info,  Node: tlmgr update [option...] [pkg...],  Prev: tlmgr uninstall,  Up: tlmgr ACTIONS\n\n",
            "subsections": []
        },
        "Updates the packages given as arguments to the latest version available": {
            "content": "at the installation source.  Either '--all' or at least one pkg name\nmust be specified.  Options:\n\n*--all*\n\nUpdate all installed packages except for 'tlmgr' itself.  If\nupdates to 'tlmgr' itself are present, this gives an error, unless\nalso the option '--force' or '--self' is given.  (See below.)\n\nIn addition to updating the installed packages, during the update\nof a collection the local installation is (by default) synchronized\nto the status of the collection on the server, for both additions\nand removals.\n\nThis means that if a package has been removed on the server (and\nthus has also been removed from the respective collection), 'tlmgr'\nwill remove the package in the local installation.  This is called\n\"auto-remove\" and is announced as such when using the option\n'--list'.  This auto-removal can be suppressed using the option\n'--no-auto-remove' (not recommended, see option description).\n\nAnalogously, if a package has been added to a collection on the\nserver that is also installed locally, it will be added to the\nlocal installation.  This is called \"auto-install\" and is announced\nas such when using the option '--list'.  This auto-installation can\nbe suppressed using the option '--no-auto-install' (also not\nrecommended).\n\nAn exception to the collection dependency checks (including the\nauto-installation of packages just mentioned) are those that have\nbeen \"forcibly removed\" by you, that is, you called 'tlmgr remove\n--force' on them.  (See the 'remove' action documentation.)  To\nreinstall any such forcibly removed packages use\n'--reinstall-forcibly-removed'.\n\nTo reiterate: automatic removals and additions are entirely\ndetermined by comparison of collections.  Thus, if you manually\ninstall an individual package 'foo' which is later removed from the\nserver, 'tlmgr' will not notice and will not remove it locally.\n(It has to be this way, without major rearchitecture work, because\nthe tlpdb does not record the repository from which packages come\nfrom.)\n\nIf you want to exclude some packages from the current update run\n(e.g., due to a slow link), see the '--exclude' option below.\n\n*--self*\n\nUpdate 'tlmgr' itself (that is, the infrastructure packages) if\nupdates to it are present.  On Windows this includes updates to the\nprivate Perl interpreter shipped inside TeX Live.\n\nIf this option is given together with either '--all' or a list of\npackages, then 'tlmgr' will be updated first and, if this update\nsucceeds, the new version will be restarted to complete the rest of\nthe updates.\n\nIn short:\n\ntlmgr update --self        # update infrastructure only\ntlmgr update --self --all  # update infrastructure and all packages\ntlmgr update --force --all # update all packages but *not* infrastructure\n# ... this last at your own risk, not recommended!\n\n*--dry-run*\n\nNothing is actually installed; instead, the actions to be performed\nare written to the terminal.  This is a more detailed report than\n'--list'.\n\n*--list* [pkg]\n\nConcisely list the packages which would be updated, newly\ninstalled, or removed, without actually changing anything.  If\n'--all' is also given, all available updates are listed.  If\n'--self' is given, but not '--all', only updates to the critical\npackages (tlmgr, texlive infrastructure, perl on Windows, etc.)\nare listed.  If neither '--all' nor '--self' is given, and in\naddition no pkg is given, then '--all' is assumed (thus, 'tlmgr\nupdate --list' is the same as 'tlmgr update --list --all').  If\nneither '--all' nor '--self' is given, but specific package names\nare given, those packages are checked for updates.\n\n*--exclude* pkg\n\nExclude pkg from the update process.  If this option is given\nmore than once, its arguments accumulate.\n\nAn argument pkg excludes both the package pkg itself and all\nits related platform-specific packages pkg.ARCH. For example,\n\ntlmgr update --all --exclude a2ping\n\nwill not update 'a2ping', 'a2ping.i386-linux', or any other\n'a2ping.'ARCH package.\n\nIf this option specifies a package that would otherwise be a\ncandidate for auto-installation, auto-removal, or reinstallation of\na forcibly removed package, 'tlmgr' quits with an error message.\nExcludes are not supported in these circumstances.\n\nThis option can also be set permanently in the tlmgr config file\nwith the key 'update-exclude'.\n\n*--no-auto-remove* [pkg...]\n\nBy default, 'tlmgr' tries to remove packages in an existing\ncollection which have disappeared on the server, as described above\nunder '--all'.  This option prevents such removals, either for all\npackages (with '--all'), or for just the given pkg names.  This\ncan lead to an inconsistent TeX installation, since packages are\nnot infrequently renamed or replaced by their authors.  Therefore\nthis is not recommended.\n\n*--no-auto-install* [pkg...]\n\nUnder normal circumstances 'tlmgr' will install packages which are\nnew on the server, as described above under '--all'.  This option\nprevents any such automatic installation, either for all packages\n(with '--all'), or the given pkg names.\n\nFurthermore, after the 'tlmgr' run using this has finished, the\npackages that would have been auto-installed will be considered as\nforcibly removed.  So, if 'foobar' is the only new package on the\nserver, then\n\ntlmgr update --all --no-auto-install\n\nis equivalent to\n\ntlmgr update --all\ntlmgr remove --force foobar\n\nAgain, since packages are sometimes renamed or replaced, using this\noption is not recommended.\n\n*--reinstall-forcibly-removed*\n\nUnder normal circumstances 'tlmgr' will not install packages that\nhave been forcibly removed by the user; that is, removed with\n'remove --force', or whose installation was prohibited by\n'--no-auto-install' during an earlier update.\n\nThis option makes 'tlmgr' ignore the forcible removals and\nre-install all such packages.  This can be used to completely\nsynchronize an installation with the server's idea of what is\navailable:\n\ntlmgr update --reinstall-forcibly-removed --all\n\n*--backup*\n\n*--backupdir* directory\n\nThese two options control the creation of backups of packages\nbefore updating; that is, backing up packages as currently\ninstalled.  If neither option is given, no backup will made.  If\n'--backupdir' is given and specifies a writable directory then a\nbackup will be made in that location.  If only '--backup' is given,\nthen a backup will be made to the directory previously set via the\n*note option: tlmgr option. action (see below).  If both are given\nthen a backup will be made to the specified directory.\n\nYou can also set options via the *note option: tlmgr option. action\nto automatically make backups for all packages, and/or keep only a\ncertain number of backups.\n\n'tlmgr' always makes a temporary backup when updating packages, in\ncase of download or other failure during an update.  In contrast,\nthe purpose of this '--backup' option is to save a persistent\nbackup in case the actual content of the update causes problems,\ne.g., introduces an TeX incompatibility.\n\nThe *note restore: tlmgr restore. action explains how to restore\nfrom a backup.\n\n*--no-depends*\n\nIf you call for updating a package normally all depending packages\nwill also be checked for updates and updated if necessary.  This\nswitch suppresses this behavior.\n\n*--no-depends-at-all*\n\nSee above under *note install: tlmgr install [option...]\npkg.... (and beware).\n\n*--force*\n\nForce update of normal packages, without updating 'tlmgr' itself\n(unless the '--self' option is also given).  Not recommended.\n\nAlso, 'update --list' is still performed regardless of this option.\n\nIf the package on the server is older than the package already\ninstalled (e.g., if the selected mirror is out of date), 'tlmgr' does\nnot downgrade.  Also, packages for uninstalled platforms are not\ninstalled.\n\n'tlmgr' saves one copy of the main 'texlive.tlpdb' file used for an\nupdate with a suffix representing the repository url, as in\n'tlpkg/texlive.tlpdb.main.'long-hash-string.  Thus, even when many\nmirrors are used, only one main 'tlpdb' backup is kept.  For non-main\nrepositories, which do not generally have (m)any mirrors, no pruning of\nbackups is done.\n\nThis action does not automatically add or remove new symlinks in\nsystem directories; you need to run 'tlmgr' *note path: tlmgr path.\nyourself if you are using this feature and want new symlinks added.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr CONFIGURATION FILE FOR TLMGR,  Next: tlmgr CRYPTOGRAPHIC VERIFICATION,  Prev: tlmgr ACTIONS,  Up: tlmgr": {
            "content": "",
            "subsections": [
                {
                    "name": "B.7 CONFIGURATION FILE FOR TLMGR",
                    "content": "'tlmgr' reads two configuration files: one is system-wide, in\n'TEXMFSYSCONFIG/tlmgr/config', and the other is user-specific, in\n'TEXMFCONFIG/tlmgr/config'.  The user-specific one is the default for\nthe 'conf tlmgr' action.  (Run 'kpsewhich -var-value=TEXMFSYSCONFIG' or\n'... TEXMFCONFIG ...' to see the actual directory names.)\n\nA few defaults corresponding to command-line options can be set in\nthese configuration files.  In addition, the system-wide file can\ncontain a directive to restrict the allowed actions.\n\nIn these config files, empty lines and lines starting with # are\nignored.  All other lines must look like:\n\nkey = value\n\nwhere the spaces are optional but the '=' is required.\n\nThe allowed keys are:\n\n'auto-remove =' 0 or 1 (default 1), same as command-line option.\n\n'gui-expertmode =' 0 or 1 (default 1). This switches between the full GUI and a simplified GUI with only the most common settings.\n\n'gui-lang =' llcode, with a language code value as with the command-line option.\n\n'no-checksums =' 0 or 1 (default 0, see below).\n\n'persistent-downloads =' 0 or 1 (default 1), same as command-line option.\n\n'require-verification =' 0 or 1 (default 0), same as command-line option.\n\n'tkfontscale =' floating-point number (default 1.0); scaling factor for fonts in the Tk-based frontends.\n\n'update-exclude =' comma-separated list of packages (no spaces allowed). Same as the command line option '--exclude' for the 'update' action.\n\n'verify-downloads =' 0 or 1 (default 1), same as command-line option.\n\nThe system-wide config file can contain one additional key:\n\n'allowed-actions =' action1[,action2,...] The value is a comma-separated list (no spaces) 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 '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.\n\nFinally, the 'no-checksums' key needs more explanation.  By default,\npackage checksums computed and stored on the server (in the TLPDB) are\ncompared to checksums computed locally after downloading.\n'no-checksums' disables this process.  The checksum algorithm is\nSHA-512.  Your system must have one of (looked for in this order) the"
                }
            ]
        },
        "Perl 'Digest::SHA' module, the 'openssl' program": {
            "content": "(<https://openssl.org>), the 'sha512sum' program (from GNU Coreutils,\n<https://www.gnu.org/software/coreutils>), or finally the 'shasum'\nprogram (just to support old Macs).  If none of these are available, a\nwarning is issued and 'tlmgr' proceeds without checking checksums.\n'no-checksums' avoids the warning.  (Incidentally, other SHA\nimplementations, such as the pure Perl and pure Lua modules, are much\ntoo slow to be usable in our context.)\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr CRYPTOGRAPHIC VERIFICATION,  Next: tlmgr USER MODE,  Prev: tlmgr CONFIGURATION FILE FOR TLMGR,  Up: tlmgr": {
            "content": "",
            "subsections": [
                {
                    "name": "B.8 CRYPTOGRAPHIC VERIFICATION",
                    "content": "'tlmgr' and 'install-tl' perform cryptographic verification if possible."
                }
            ]
        },
        "If verification is performed and successful, the programs report": {
            "content": "'(verified)' after loading the TLPDB; otherwise, they report '(not\nverified)'.  But either way, by default the installation and/or updates\nproceed normally.\n\nIf a program named 'gpg' is available (that is, found in 'PATH'), by\ndefault cryptographic signatures will be checked: we require the main\nrepository be signed, but not any additional repositories.  If 'gpg' is\nnot available, by default signatures are not checked and no verification\nis carried out, but 'tlmgr' still proceeds normally.\n\nThe behavior of the verification can be controlled by the command\nline and config file option 'verify-repo' which takes one of the\nfollowing values: 'none', 'main', or 'all'.  With 'none', no\nverification whatsoever is attempted.  With 'main' (the default)\nverification is required only for the main repository, and only if 'gpg'\nis available; though attempted for all, missing signatures of subsidiary\nrepositories will not result in an error.  Finally, in the case of\n'all', 'gpg' must be available and all repositories need to be signed.\n\nIn all cases, if a signature is checked and fails to verify, an error\nis raised.\n\nCryptographic verification requires checksum checking (described just\nabove) to succeed, and a working GnuPG ('gpg') program (see below for\nsearch method).  Then, unless cryptographic verification has been\ndisabled, a signature file ('texlive.tlpdb.*.asc') of the checksum file\nis downloaded and the signature verified.  The signature is created by\nthe TeX Live Distribution GPG key 0x0D5E5D9106BAB6BC, which in turn is\nsigned by Karl Berry's key 0x0716748A30D155AD and Norbert Preining's key\n0x6CACA448860CDC13.  All of these keys are obtainable from the standard\nkey servers.\n\nAdditional trusted keys can be added using the 'key' action.\n\n* Menu:\n\n* tlmgr Configuration of GnuPG invocation::\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr Configuration of GnuPG invocation,  Up: tlmgr CRYPTOGRAPHIC VERIFICATION": {
            "content": "",
            "subsections": []
        },
        "The executable used for GnuPG is searched as follows: If the environment": {
            "content": "variable 'TLGNUPG' is set, it is tested and used; otherwise 'gpg' is\nchecked; finally 'gpg2' is checked.\n\nFurther adaptation of the 'gpg' invocation can be made using the two\nenvironment variables 'TLGNUPGHOME', which is passed to 'gpg' as the\nvalue for '--homedir', and 'TLGNUPGARGS', which replaces the default\noptions '--no-secmem-warning --no-permission-warning'.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr USER MODE,  Next: tlmgr MULTIPLE REPOSITORIES,  Prev: tlmgr CRYPTOGRAPHIC VERIFICATION,  Up: tlmgr": {
            "content": "",
            "subsections": [
                {
                    "name": "B.9 USER MODE",
                    "content": "'tlmgr' provides a restricted way, called \"user mode\", to manage\narbitrary texmf trees in the same way as the main installation.  For\nexample, this allows people without write permissions on the\ninstallation location to update/install packages into a tree of their\nown.\n\n'tlmgr' is switched into user mode with the command line option\n'--usermode'.  It does not switch automatically, nor is there any\nconfiguration file setting for it.  Thus, this option has to be\nexplicitly given every time user mode is to be activated.\n\nThis mode of 'tlmgr' works on a user tree, by default the value of\nthe 'TEXMFHOME' variable.  This can be overridden with the command line\noption '--usertree'.  In the following when we speak of the user tree we\nmean either 'TEXMFHOME' or the one given on the command line.\n\nNot all actions are allowed in user mode; 'tlmgr' will warn you and\nnot carry out any problematic actions.  Currently not supported (and\nprobably will never be) is the 'platform' action.  The 'gui' action is\ncurrently not supported, but may be in a future release.\n\nSome 'tlmgr' actions don't need any write permissions and thus work\nthe same in user mode and normal mode.  Currently these are: 'check',\n'help', 'list', 'print-platform', 'print-platform-info', 'search',\n'show', 'version'.\n\nOn the other hand, most of the actions dealing with package\nmanagement do need write permissions, and thus behave differently in\nuser mode, as described below: 'install', 'update', 'remove', 'option',\n'paper', 'generate', 'backup', 'restore', 'uninstall', 'symlinks'.\n\nBefore using 'tlmgr' in user mode, you have to set up the user tree\nwith the 'init-usertree' action.  This creates usertree'/web2c' and\nusertree'/tlpkg/tlpobj', and a minimal\nusertree'/tlpkg/texlive.tlpdb'.  At that point, you can tell 'tlmgr'\nto do the (supported) actions by adding the '--usermode' command line\noption.\n\nIn user mode the file usertree'/tlpkg/texlive.tlpdb' contains only\nthe packages that have been installed into the user tree using 'tlmgr',\nplus additional options from the \"virtual\" package\n'00texlive.installation' (similar to the main installation's\n'texlive.tlpdb').\n\nAll actions on packages in user mode can only be carried out on\npackages that are known as 'relocatable'.  This excludes all packages\ncontaining executables and a few other core packages.  Of the 2500 or so\npackages currently in TeX Live the vast majority are relocatable and can\nbe installed into a user tree.\n\nDescription of changes of actions in user mode:\n\n* Menu:\n\n* tlmgr User mode install::\n* tlmgr User mode backup, restore, remove, update::\n* tlmgr User mode generate, option, paper::\n* tlmgr User mode logs::\n\nFile: tlbuild.info,  Node: tlmgr User mode install,  Next: tlmgr User mode backup, restore, remove, update,  Up: tlmgr USER MODE\n\n"
                }
            ]
        },
        "In user mode, the 'install' action checks that the package and all": {
            "content": "dependencies are all either relocated or already installed in the system\ninstallation.  If this is the case, it unpacks all containers to be\ninstalled into the user tree (to repeat, that's either 'TEXMFHOME' or\nthe value of '--usertree') and add the respective packages to the user\ntree's 'texlive.tlpdb' (creating it if need be).\n\nCurrently installing a collection in user mode installs all dependent\npackages, but in contrast to normal mode, does not install dependent\ncollections.  For example, in normal mode 'tlmgr install\ncollection-context' would install 'collection-basic' and other\ncollections, while in user mode, only the packages mentioned in\n'collection-context' are installed.\n\nIf a package shipping map files is installed in user mode, a backup\nof the user's 'updmap.cfg' in 'USERTREE/web2c/' is made, and then this\nfile regenerated from the list of installed packages.\n\nFile: 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\n\n",
            "subsections": []
        },
        "In user mode, these actions check that all packages to be acted on are": {
            "content": "installed in the user tree before proceeding; otherwise, they behave\njust as in normal mode.\n\nFile: tlbuild.info,  Node: tlmgr User mode generate, option, paper,  Next: tlmgr User mode logs,  Prev: tlmgr User mode backup, restore, remove, update,  Up: tlmgr USER MODE\n\n",
            "subsections": []
        },
        "In user mode, these actions operate only on the user tree's": {
            "content": "configuration files and/or 'texlive.tlpdb'.\n\nFile: tlbuild.info,  Node: tlmgr User mode logs,  Prev: tlmgr User mode generate, option, paper,  Up: tlmgr USER MODE\n\n\nIn user mode, 'tlmgr.log' and <tlmgr-commands.log> are written in the\n'TEXMFVAR/web2c/' directlry instead of 'TEXMFSYSVAR/web2c/'.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr MULTIPLE REPOSITORIES,  Next: tlmgr GUI FOR TLMGR,  Prev: tlmgr USER MODE,  Up: tlmgr": {
            "content": "",
            "subsections": [
                {
                    "name": "B.10 MULTIPLE REPOSITORIES",
                    "content": "The main TeX Live repository contains a vast array of packages."
                }
            ]
        },
        "Nevertheless, additional local repositories can be useful to provide": {
            "content": "locally-installed resources, such as proprietary fonts and house styles.",
            "subsections": []
        },
        "Also, alternative package repositories distribute packages that cannot": {
            "content": "or should not be included in TeX Live, for whatever reason.\n\nThe simplest and most reliable method is to temporarily set the\ninstallation source to any repository (with the '-repository' or 'option\nrepository' command line options), and perform your operations.\n\nWhen you are using multiple repositories over a sustained length of\ntime, however, explicitly switching between them becomes inconvenient.",
            "subsections": []
        },
        "Thus, it's possible to tell 'tlmgr' about additional repositories you": {
            "content": "want to use.  The basic command is 'tlmgr repository add'.  The rest of\nthis section explains further.\n\nWhen using multiple repositories, one of them has to be set as the\nmain repository, which distributes most of the installed packages.  When\nyou switch from a single repository installation to a multiple\nrepository installation, the previous sole repository will be set as the\nmain repository.\n\nBy default, even if multiple repositories are configured, packages\nare still only installed from the main repository.  Thus, simply\nadding a second repository does not actually enable installation of\nanything from there.  You also have to specify which packages should be\ntaken from the new repository, by specifying so-called \"pinning\" rules,\ndescribed next.\n\n* Menu:\n\n* tlmgr Pinning::\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr Pinning,  Up: tlmgr MULTIPLE REPOSITORIES": {
            "content": "",
            "subsections": []
        },
        "When a package 'foo' is pinned to a repository, a package 'foo' in any": {
            "content": "other repository, even if it has a higher revision number, will not be\nconsidered an installable candidate.\n\nAs mentioned above, by default everything is pinned to the main\nrepository.  Let's now go through an example of setting up a second\nrepository and enabling updates of a package from it.\n\nFirst, check that we have support for multiple repositories, and have\nonly one enabled (as is the case by default):\n\n$ tlmgr repository list\nList of repositories (with tags if set):\n/var/www/norbert/tlnet\n\nOk.  Let's add the 'tlcontrib' repository (this is a real repository\nhosted at <http://contrib.texlive.info>) with the tag 'tlcontrib':\n\n$ tlmgr repository add http://contrib.texlive.info/current tlcontrib\n\nCheck the repository list again:\n\n$ tlmgr repository list\nList of repositories (with tags if set):\nhttp://contrib.texlive.info/current (tlcontrib)\n/var/www/norbert/tlnet (main)\n\nNow we specify a pinning entry to get the package 'classico' from\n'tlcontrib':\n\n$ tlmgr pinning add tlcontrib classico\n\nCheck that we can find 'classico':\n\n$ tlmgr show classico\npackage:     classico\n...\nshortdesc:   URW Classico fonts\n...\n\n- install 'classico':\n\n$ tlmgr install classico\ntlmgr: package repositories:\n...\n[1/1,  ??:??/??:??] install: classico @tlcontrib [737k]\n\nIn the output here you can see that the 'classico' package has been\ninstalled from the 'tlcontrib' repository ('@tlcontrib').\n\nFinally, 'tlmgr pinning' also supports removing certain or all\npackages from a given repository:\n\n$ tlmgr pinning remove tlcontrib classico # remove just classico\n$ tlmgr pinning remove tlcontrib --all    # take nothing from tlcontrib\n\nA summary of 'tlmgr pinning' actions is given above.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr GUI FOR TLMGR,  Next: tlmgr MACHINE-READABLE OUTPUT,  Prev: tlmgr MULTIPLE REPOSITORIES,  Up: tlmgr": {
            "content": "",
            "subsections": [
                {
                    "name": "B.11 GUI FOR TLMGR",
                    "content": ""
                }
            ]
        },
        "The graphical user interface for 'tlmgr' requires Perl/Tk": {
            "content": "<https://search.cpan.org/search?query=perl%2Ftk>.  For Unix-based\nsystems Perl/Tk (as well as Perl of course) has to be installed outside\nof TL. <https://tug.org/texlive/distro.html#perltk> has a list of\ninvocations for some distros.  For Windows the necessary modules are no\nlonger shipped within TeX Live, so you'll have to have an external Perl\navailable that includes them.\n\nWe are talking here about the GUI built into tlmgr itself, not about\nthe other tlmgr GUIs, which are: tlshell (Tcl/Tk-based), tlcockpit\n(Java-based) and, only on Macs, TeX Live Utility.  These are invoked as\nseparate programs.\n\nThe GUI mode of tlmgr is started with the invocation 'tlmgr gui';\nassuming Tk is loadable, the graphical user interface will be shown.",
            "subsections": []
        },
        "The main window contains a menu bar, the main display, and a status area": {
            "content": "where messages normally shown on the console are displayed.\n\nWithin the main display there are three main parts: the 'Display\nconfiguration' area, the list of packages, and the action buttons.\n\nAlso, at the top right the currently loaded repository is shown; this\nalso acts as a button and when clicked will try to load the default\nrepository.  To load a different repository, see the 'tlmgr' menu item.\n\nFinally, the status area at the bottom of the window gives additional\ninformation about what is going on.\n\n* Menu:\n\n* tlmgr Main display::\n* tlmgr Menu bar::\n* tlmgr GUI options::\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr Main display,  Next: tlmgr Menu bar,  Up: tlmgr GUI FOR TLMGR": {
            "content": "* Menu:\n\n* tlmgr Display configuration area::\n* tlmgr Package list area::\n* tlmgr Main display action buttons::\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr Display configuration area,  Next: tlmgr Package list area,  Up: tlmgr Main display": {
            "content": "B.11.1.1 Display configuration area\n...................................\n",
            "subsections": []
        },
        "The first part of the main display allows you to specify (filter) which": {
            "content": "packages are shown.  By default, all are shown.  Changes here are\nreflected right away.\n",
            "subsections": []
        },
        "Status": {
            "content": "Select whether to show all packages (the default), only those\ninstalled, only those not installed, or only those with update\navailable.\n",
            "subsections": []
        },
        "Category": {
            "content": "Select which categories are shown: packages, collections, and/or\nschemes.  These are briefly explained in the *note DESCRIPTION:\ntlmgr DESCRIPTION. section above.\n",
            "subsections": []
        },
        "Match": {
            "content": "Select packages matching for a specific pattern.  By default, this\nsearches both descriptions and filenames.  You can also select a\nsubset for searching.\n",
            "subsections": []
        },
        "Selection": {
            "content": "Select packages to those selected, those not selected, or all.\nHere, \"selected\" means that the checkbox in the beginning of the\nline of a package is ticked.\n",
            "subsections": []
        },
        "Display configuration buttons": {
            "content": "To the right there are three buttons: select all packages, select\nnone (a.k.a.  deselect all), and reset all these filters to the\ndefaults, i.e., show all available.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr Package list area,  Next: tlmgr Main display action buttons,  Prev: tlmgr Display configuration area,  Up: tlmgr Main display": {
            "content": "B.11.1.2 Package list area\n..........................\n",
            "subsections": []
        },
        "The second are of the main display lists all installed packages.  If a": {
            "content": "repository is loaded, those that are available but not installed are\nalso listed.\n\nDouble clicking on a package line pops up an informational window\nwith further details: the long description, included files, etc.\n\nEach line of the package list consists of the following items:\n\na checkbox\n\nUsed to select particular packages; some of the action buttons (see\nbelow) work only on the selected packages.\n\npackage name\n\nThe name (identifier) of the package as given in the database.\n\nlocal revision (and version)\n\nIf the package is installed the TeX Live revision number for the\ninstalled package will be shown.  If there is a catalogue version\ngiven in the database for this package, it will be shown in\nparentheses.  However, the catalogue version, unlike the TL\nrevision, is not guaranteed to reflect what is actually installed.\n\nremote revision (and version)\n\nIf a repository has been loaded the revision of the package in the\nrepository (if present) is shown.  As with the local column, if a\ncatalogue version is provided it will be displayed.  And also as\nwith the local column, the catalogue version may be stale.\n\nshort description\n\nThe short description of the package.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr Main display action buttons,  Prev: tlmgr Package list area,  Up: tlmgr Main display": {
            "content": "B.11.1.3 Main display action buttons\n....................................\n\nBelow the list of packages are several buttons:\n",
            "subsections": []
        },
        "Update all installed": {
            "content": "This calls 'tlmgr update --all', i.e., tries to update all\navailable packages.  Below this button is a toggle to allow\nreinstallation of previously removed packages as part of this\naction.\n\nThe other four buttons only work on the selected packages, i.e.,\nthose where the checkbox at the beginning of the package line is\nticked.\n",
            "subsections": []
        },
        "Update": {
            "content": "Update only the selected packages.\n",
            "subsections": []
        },
        "Install": {
            "content": "Install the selected packages; acts like 'tlmgr install', i.e.,\nalso installs dependencies.  Thus, installing a collection installs\nall its constituent packages.\n",
            "subsections": []
        },
        "Remove": {
            "content": "Removes the selected packages; acts like 'tlmgr remove', i.e., it\nwill also remove dependencies of collections (but not dependencies\nof normal packages).\n",
            "subsections": []
        },
        "Backup": {
            "content": "Makes a backup of the selected packages; acts like 'tlmgr backup'.\nThis action needs the option 'backupdir' set (see 'Options -'\nGeneral>).\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr Menu bar,  Next: tlmgr GUI options,  Prev: tlmgr Main display,  Up: tlmgr GUI FOR TLMGR": {
            "content": "The following entries can be found in the menu bar:\n\n'tlmgr' menu\n\nThe items here load various repositories: the default as specified\nin the TeX Live database, the default network repository, the\nrepository specified on the command line (if any), and an\narbitrarily manually-entered one.  Also has the so-necessary 'quit'\noperation.\n\n'Options menu'\n\nProvides access to several groups of options: 'Paper'\n(configuration of default paper sizes), 'Platforms' (only on Unix,\nconfiguration of the supported/installed platforms), 'GUI Language'\n(select language used in the GUI interface), and 'General'\n(everything else).\n\nSeveral toggles are also here.  The first is 'Expert options',\nwhich is set by default.  If you turn this off, the next time you\nstart the GUI a simplified screen will be shown that display only\nthe most important functionality.  This setting is saved in the\nconfiguration file of 'tlmgr'; see *note CONFIGURATION FILE FOR\nTLMGR: tlmgr CONFIGURATION FILE FOR TLMGR. for details.\n\nThe other toggles are all off by default: for debugging output, to\ndisable the automatic installation of new packages, and to disable\nthe automatic removal of packages deleted from the server.  Playing\nwith the choices of what is or isn't installed may lead to an\ninconsistent TeX Live installation; e.g., when a package is\nrenamed.\n\n'Actions menu'\n\nProvides access to several actions: update the filename database\n(aka 'ls-R', 'mktexlsr', 'texhash'), rebuild all formats\n('fmtutil-sys --all'), update the font map database ('updmap-sys'),\nrestore from a backup of a package, and use of symbolic links in\nsystem directories (not on Windows).\n\nThe final action is to remove the entire TeX Live installation\n(also not on Windows).\n\n'Help menu'\n\nProvides access to the TeX Live manual (also on the web at\n<https://tug.org/texlive/doc.html>) and the usual \"About\" box.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr GUI options,  Prev: tlmgr Menu bar,  Up: tlmgr GUI FOR TLMGR": {
            "content": "",
            "subsections": []
        },
        "Some generic Perl/Tk options can be specified with 'tlmgr gui' to": {
            "content": "control the display:\n\n'-background' color\n\nSet background color.\n\n'-font \"' fontname fontsize '\"'\n\nSet font, e.g., 'tlmgr gui -font \"helvetica 18\"'.  The argument to\n'-font' must be quoted, i.e., passed as a single string.\n\n'-foreground' color\n\nSet foreground color.\n\n'-geometry' geomspec\n\nSet the X geometry, e.g., 'tlmgr gui -geometry 1024x512-0+0'\ncreates the window of (approximately) the given size in the\nupper-right corner of the display.\n\n'-xrm' xresource\n\nPass the arbitrary X resource string xresource.\n\nA few other obscure options are recognized but not mentioned here.\nSee the Perl/Tk documentation (<https://search.cpan.org/perldoc?Tk>) for\nthe complete list, and any X documentation for general information.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr MACHINE-READABLE OUTPUT,  Next: tlmgr ENVIRONMENT VARIABLES,  Prev: tlmgr GUI FOR TLMGR,  Up: tlmgr": {
            "content": "",
            "subsections": [
                {
                    "name": "B.12 MACHINE-READABLE OUTPUT",
                    "content": ""
                }
            ]
        },
        "With the '--machine-readable' option, 'tlmgr' writes to stdout in the": {
            "content": "fixed line-oriented format described here, and the usual informational\nmessages for human consumption are written to stderr (normally they are\nwritten to stdout).  The idea is that a program can get all the\ninformation it needs by reading stdout.\n\nCurrently this option only applies to the *note update: tlmgr update\n[option...] [pkg...], *note install: tlmgr install [option...]\npkg..., and *note option: tlmgr option. actions.\n\n* Menu:\n\n* tlmgr Machine-readable update and install output::\n* tlmgr Machine-readable option output::\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr Machine-readable update and install output,  Next: tlmgr Machine-readable option output,  Up: tlmgr MACHINE-READABLE OUTPUT": {
            "content": "The output format is as follows:\n\nfieldname \"\\t\" value\n...\n\"end-of-header\"\npkgname status localrev serverrev size runtime esttot\n...\n\"end-of-updates\"\nother output from post actions, not in machine readable form\n\nThe header section currently has two fields: 'location-url' (the\nrepository source from which updates are being drawn), and 'total-bytes'\n(the total number of bytes to be downloaded).\n\nThe localrev and serverrev fields for each package are the\nrevision numbers in the local installation and server repository,\nrespectively.  The size field is the number of bytes to be downloaded,\ni.e., the size of the compressed tar file for a network installation,\nnot the unpacked size.  The runtime and esttot fields are only present\nfor updated and auto-install packages, and contain the currently passed\ntime since start of installation/updates and the estimated total time.\n\nLine endings may be either LF or CRLF depending on the current\nplatform.\n\n'location-url' location\n\nThe location may be a url (including 'file:///foo/bar/...'), or a\ndirectory name ('/foo/bar').  It is the package repository from\nwhich the new package information was drawn.\n\n'total-bytes' count\n\nThe count is simply a decimal number, the sum of the sizes of all\nthe packages that need updating or installing (which are listed\nsubsequently).\n\nThen comes a line with only the literal string 'end-of-header'.\n\nEach following line until a line with literal string 'end-of-updates'\nreports on one package.  The fields on each line are separated by a tab.\nHere are the fields.\n\npkgname\n\nThe TeX Live package identifier, with a possible platform suffix\nfor executables.  For instance, 'pdftex' and 'pdftex.i386-linux'\nare given as two separate packages, one on each line.\n\nstatus\n\nThe status of the package update.  One character, as follows:\n\n'd'\n\nThe package was removed on the server.\n\n'f'\n\nThe package was removed in the local installation, even though\na collection depended on it.  (E.g., the user ran 'tlmgr\nremove --force'.)\n\n'u'\n\nNormal update is needed.\n\n'r'\n\nReversed non-update: the locally-installed version is newer\nthan the version on the server.\n\n'a'\n\nAutomatically-determined need for installation, the package is\nnew on the server and is (most probably) part of an installed\ncollection.\n\n'i'\n\nPackage will be installed and isn't present in the local\ninstallation (action install).\n\n'I'\n\nPackage is already present but will be reinstalled (action\ninstall).\n\nlocalrev\n\nThe revision number of the installed package, or '-' if it is not\npresent locally.\n\nserverrev\n\nThe revision number of the package on the server, or '-' if it is\nnot present on the server.\n\nsize\n\nThe size in bytes of the package on the server.  The sum of all the\npackage sizes is given in the 'total-bytes' header field mentioned\nabove.\n\nruntime\n\nThe run time since start of installations or updates.\n\nesttot\n\nThe estimated total time.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr Machine-readable option output,  Prev: tlmgr Machine-readable update and install output,  Up: tlmgr MACHINE-READABLE OUTPUT": {
            "content": "The output format is as follows:\n\nkey \"\\t\" value\n\nIf a value is not saved in the database the string '(not set)' is\nshown.\n\nIf you are developing a program that uses this output, and find that\nchanges would be helpful, do not hesitate to write the mailing list.\n",
            "subsections": []
        },
        "File: tlbuild.info,  Node: tlmgr ENVIRONMENT VARIABLES,  Next: tlmgr AUTHORS AND COPYRIGHT,  Prev: tlmgr MACHINE-READABLE OUTPUT,  Up: tlmgr": {
            "content": "",
            "subsections": [
                {
                    "name": "B.13 ENVIRONMENT VARIABLES",
                    "content": "'tlmgr' uses many of the standard TeX environment variables, as reported\nby, e.g., 'tlmgr conf' (*note conf: tlmgr conf.).\n\nIn addition, for ease in scripting and debugging, 'tlmgr' looks for\nthe following environment variables.  These are not of interest for\nnormal user installations.\n\n'TEXLIVECOMPRESSOR'\n\nThis variable allows selecting a different compressor program for\nbackups and intermediate rollback containers.  The order of\nselection is:\n\n1. If the environment variable 'TEXLIVECOMPRESSOR' is defined,\nuse it; abort if it doesn't work.  Possible values: 'lz4',\n'gzip', 'xz'.  The necessary options are added internally.\n\n2. If lz4 is available (either from the system or TL) and\nworking, use that.\n\n3. If gzip is available (from the system) and working, use that.\n\n4. If xz is available (either from the system or TL) and working,\nuse that.\n\nlz4 and gzip are faster in creating tlmgr's local backups, hence\nthey are preferred.  The unconditional use of xz for the tlnet\ncontainers is unaffected, to minimize download sizes.\n\n'TEXLIVEDOWNLOADER'\n\n'TLDOWNLOADPROGRAM'\n\n'TLDOWNLOADARGS'\n\nThese options allow selecting different download programs then the\nones automatically selected by the installer.  The order of\nselection is:\n\n1. If the environment variable 'TEXLIVEDOWNLOADER' is defined,\nuse it; abort if the specified program doesn't work.  Possible\nvalues: 'lwp', 'curl', 'wget'.  The necessary options are\nadded internally.\n\n2. If the environment variable 'TLDOWNLOADPROGRAM' is defined\n(can be any value), use it together with 'TLDOWNLOADARGS';\nabort if it doesn't work.\n\n3. If LWP is available and working, use that (by far the most\nefficient method, as it supports persistent downloads).\n\n4. If curl is available (from the system) and working, use that.\n\n5. If wget is available (either from the system or TL) and\nworking, use that.\n\nTL provides 'wget' binaries for platforms where necessary, so some\ndownload method should always be available.\n\n'TEXLIVEPREFEROWN'\n\nBy default, compression and download programs provided by the\nsystem, i.e., found along 'PATH' are preferred over those shipped\nwith TeX Live.\n\nThis can create problems with systems that are too old, and so can\nbe overridden by setting the environment variable\n'TEXLIVEPREFEROWN' to 1.  In this case, executables shipped with\nTL will be preferred.\n\nExtra compression/download programs not provided by TL, such as\ngzip, lwp, and curl, are still checked for on the system and used\nif available, per the above.  'TEXLIVEPREFEROWN' only applies\nwhen the program being checked for is shipped with TL, namely the\nlz4 and xz compressors and wget downloader.\n\nException: on Windows, the 'tar.exe' shipped with TL is always\nused, regardless of any setting.\n"
                }
            ]
        },
        "File: tlbuild.info,  Node: tlmgr AUTHORS AND COPYRIGHT,  Prev: tlmgr ENVIRONMENT VARIABLES,  Up: tlmgr": {
            "content": "",
            "subsections": [
                {
                    "name": "B.14 AUTHORS AND COPYRIGHT",
                    "content": ""
                }
            ]
        },
        "File: tlbuild.info,  Node: Index,  Prev: tlmgr,  Up: Top": {
            "content": "",
            "subsections": []
        },
        "Index": {
            "content": "* Menu:\n\n* $@ target in normal make rules:        Prerequisites.       (line  13)\n* --bindir configure option:             --prefix --bindir ....\n(line   6)\n* --bindir configure option <1>:         --enable-multiplatform.\n(line   6)\n* --build=HOST:                          Cross configuring.   (line   6)\n* --disable-all-packages:                Build one package.   (line   6)\n* --disable-all-pkgs:                    --disable-all-pkgs.  (line   6)\n* --disable-bibtex8:                     Configure options for texk/bibtex-x.\n(line   9)\n* --disable-bibtexu:                     Configure options for texk/bibtex-x.\n(line  12)\n* --disable-dump-share:                  Configure options for texk/web2c.\n(line  27)\n* --disable-dvipdfmx:                    Configure options for texk/dvipdfm-x.\n(line  12)\n* --disable-etex-synctex:                Configure options for texk/web2c.\n(line  59)\n* --disable-ipc:                         Configure options for texk/web2c.\n(line  31)\n* --disable-largefile:                   --disable-largefile. (line   6)\n* --disable-linked-scripts:              Configure options for texk/texlive.\n(line   6)\n* --disable-mf-nowin:                    Configure options for texk/web2c.\n(line  34)\n* --disable-missing:                     --disable-missing.   (line   6)\n* --disable-native-texlive-build:        --disable-native-texlive-build.\n(line   6)\n* --disable-PROG:                        --enable-PROG --disable-PROG.\n(line   6)\n* --disable-synctex:                     Configure options for texk/web2c.\n(line  64)\n* --disable-tex:                         Configure options for texk/web2c.\n(line  37)\n* --disable-web-progs:                   Configure options for texk/web2c.\n(line  41)\n* --disable-xdvipdfmx:                   Configure options for texk/dvipdfm-x.\n(line  15)\n* --enable-*win for Metafont window support: Configure options for texk/web2c.\n(line  55)\n* --enable-auto-core:                    Configure options for texk/web2c.\n(line  45)\n* --enable-compiler-warnings=LEVEL:      --enable-compiler-warnings=LEVEL.\n(line   6)\n* --enable-cxx-runtime-hack:             Macros for compilers.\n(line  29)\n* --enable-etex:                         Configure options for texk/web2c.\n(line  37)\n* --enable-libtool-hack:                 Configure options for texk/web2c.\n(line  50)\n* --enable-maintainer-mode:              Build system tools.  (line  28)\n* --enable-maintainer-mode <1>:          --enable-maintainer-mode.\n(line   6)\n* --enable-missing to ignore dependencies: Build one package. (line  94)\n* --enable-mktextfm-default:             kpathsea library.    (line  18)\n* --enable-multiplatform:                --enable-multiplatform.\n(line   6)\n* --enable-PROG:                         --enable-PROG --disable-PROG.\n(line   6)\n* --enable-shared:                       --enable-shared.     (line   6)\n* --enable-silent-rules:                 --enable-silent-rules.\n(line   6)\n* --enable-tex-synctex:                  Configure options for texk/web2c.\n(line  59)\n* --enable-texlive-build:                --disable-native-texlive-build.\n(line  15)\n* --enable-xi2-scrolling:                Configure options for texk/xdvik.\n(line  13)\n* --enable-xindy-docs:                   Configure options for utils/xindy.\n(line  10)\n* --enable-xindy-rules:                  Configure options for utils/xindy.\n(line   6)\n* --host=HOST:                           Cross configuring.   (line   6)\n* --libdir configure option:             --enable-multiplatform.\n(line   6)\n* --no-print-directory GNU make option:  Build one engine.    (line  56)\n* --prefix configure option:             --prefix --bindir ....\n(line   6)\n* --with-banner-add=STR:                 Configure options for texk/web2c.\n(line   6)\n* --with-clisp-runtime=FILENAME:         Configure options for utils/xindy.\n(line  14)\n* --with-editor=CMD:                     Configure options for texk/web2c.\n(line  11)\n* --with-fontconfig-includes=DIR:        Configure options for texk/web2c.\n(line  16)\n* --with-fontconfig-libdir=DIR:          Configure options for texk/web2c.\n(line  16)\n* --with-gs=FILENAME:                    Configure options for texk/xdvik.\n(line   6)\n* --with-LIB-includes=DIR, -libdir:      Library-specific configure options.\n(line  16)\n* --with-libgs-includes, -libdir:        Configure options for texk/dvisvgm.\n(line  17)\n* --with-system-kpathsea:                kpathsea library.    (line  13)\n* --with-system-LIB:                     Adding a new generic library module.\n(line  34)\n* --with-system-LIB <1>:                 Library-specific configure options.\n(line   9)\n* --with-system-libgs:                   Configure options for texk/dvisvgm.\n(line   6)\n* --with-xdvi-x-toolkit:                 xdvik package.       (line  21)\n* --with-xdvi-x-toolkit=KIT:             Configure options for texk/xdvik.\n(line   9)\n* --without-libgs:                       Configure options for texk/dvisvgm.\n(line  12)\n* --without-ln-s:                        --without-ln-s.      (line   6)\n* --without-x:                           --without-x.         (line   6)\n* -C configure option:                   Build in parallel.   (line  11)\n* -j make option:                        Build in parallel.   (line   6)\n* ac/withenable.ac:                      Adding a new program module.\n(line  42)\n* adapting TeX Live for distros:         Distro builds.       (line  54)\n* adding a new engine:                   Adding a new engine. (line   6)\n* adding a new generic library:          Adding a new generic library module.\n(line   6)\n* adding a new program:                  Adding a new program module.\n(line   6)\n* adding a new TeX-specific library:     Adding a new TeX-specific library module.\n(line   6)\n* adding to TeX Live:                    Extending TeX Live.  (line   6)\n* am/ top-level directory:               Top-level directories.\n(line  14)\n* ANSI C:                                Declarations and definitions.\n(line   6)\n* ApplicationServices Mac framework, required by xetex: Prerequisites.\n(line  40)\n* asymptote:                             Linked scripts.      (line  23)\n* asymptote <1>:                         asymptote.           (line   6)\n* Autoconf:                              Overview of build system.\n(line   6)\n* autoconf macros:                       Autoconf macros.     (line   6)\n* Automake:                              Overview of build system.\n(line   6)\n* autoreconf, for new program:           Adding a new program module.\n(line  76)\n* biber:                                 Linked scripts.      (line  23)\n* bibtex-x:                              Configure options for texk/bibtex-x.\n(line   6)\n* bibtex8:                               Configure options for texk/bibtex-x.\n(line   6)\n* bibtexu:                               Configure options for texk/bibtex-x.\n(line   6)\n* BSD distro:                            Distro builds.       (line   6)\n* build directory, required:             Building.            (line  17)\n* build iteration:                       Build iteration.     (line   6)\n* build on demand:                       Build one package.   (line   6)\n* build one engine:                      Build one engine.    (line   6)\n* build one package:                     Build one package.   (line   6)\n* Build script:                          Building.            (line   6)\n* build system, design of:               Overview of build system.\n(line   6)\n* build-aux/ top-level directory:        Top-level directories.\n(line  30)\n* BUILDCC, BUILDCFLAGS, ...:             Cross configuring.   (line  42)\n* building:                              Building.            (line   6)\n* building a distribution:               Build distribution.  (line   6)\n* building in parallel:                  Build in parallel.   (line   6)\n* C++11, removing dependent sources:     Build one package.   (line  85)\n* C++11, required:                       Prerequisites.       (line  17)\n* C, ANSI, required:                     Declarations and definitions.\n(line   6)\n* C99, avoided:                          Declarations and definitions.\n(line   6)\n* cache file, for configure:             Build in parallel.   (line  11)\n* cache for configure:                   Build in parallel.   (line   6)\n* callexe.c:                             Macros for Windows.  (line  32)\n* CC:                                    Variables for configure.\n(line  10)\n* CC=C-COMPILER:                         Build one package.   (line  77)\n* CCBUILD:                              Cross problems.      (line  13)\n* ChangeLog:                             Adding a new program module.\n(line  73)\n* chktex:                                Declarations and definitions.\n(line  18)\n* clisp:                                 Variables for configure.\n(line  18)\n* CLISP:                                 Variables for configure.\n(line  17)\n* CLISP <1>:                             Configure options for utils/xindy.\n(line  14)\n* clisp, required by xindy:              Prerequisites.       (line  44)\n* Cocoa Mac framework, required by xetex: Prerequisites.      (line  40)\n* coding conventions:                    Coding conventions.  (line   6)\n* compilers, C and C++11:                Prerequisites.       (line   6)\n* config.guess, config.sub, ...:         Top-level directories.\n(line  30)\n* configure options:                     Configure options.   (line   6)\n* configure options, for bibtex-x:       Configure options for texk/bibtex-x.\n(line   6)\n* configure options, for dvipdfm-x:      Configure options for texk/dvipdfm-x.\n(line   6)\n* configure options, for dvisvgm:        Configure options for texk/dvisvgm.\n(line   6)\n* configure options, for kpathsea:       Configure options for kpathsea.\n(line   6)\n* configure options, for texk/texlive:   Configure options for texk/texlive.\n(line   6)\n* configure options, for web2c:          Configure options for texk/web2c.\n(line   6)\n* configure options, for xdvik:          Configure options for texk/xdvik.\n(line   6)\n* configure options, for xindy:          Configure options for utils/xindy.\n(line   6)\n* configure options, global:             Global configure options.\n(line   6)\n* configure options, library-specific:   Library-specific configure options.\n(line   6)\n* configure options, program-specific:   Program-specific configure options.\n(line   6)\n* configure problems, work around by removing: Build one package.\n(line 106)\n* configure variables:                   Variables for configure.\n(line   6)\n* configure.ac:                          Adding a new program module.\n(line  45)\n* configuring, for cross compilation:    Cross configuring.   (line   6)\n* const:                                 Const.               (line   6)\n* continuous integration:                Continuous integration.\n(line   6)\n* conventions, coding:                   Coding conventions.  (line   6)\n* CPPFLAGS:                              Variables for configure.\n(line  12)\n* cross compilation:                     Cross compilation.   (line   6)\n* cross compilation configuring:         Cross configuring.   (line   6)\n* cross compilation problems:            Cross problems.      (line   6)\n* cross compilation, with host binary:   xdvik package.       (line  14)\n* ctangle:                               Cross problems.      (line  26)\n* CXX:                                   Variables for configure.\n(line  11)\n* CXX=C++-COMPILER:                      Build one package.   (line  77)\n* declarations and definitions, in source code: Declarations and definitions.\n(line   6)\n* declarations before statements, avoiding: Declarations and definitions.\n(line   6)\n* dependencies, with several output files: Build in parallel. (line   6)\n* DESTDIR:                               --prefix --bindir ....\n(line   9)\n* directories, for installation:         Installation directories.\n(line   6)\n* directories, top-level:                Top-level directories.\n(line   6)\n* discards qualifiers warning:           Const.               (line  30)\n* dist and distcheck targets for make:   Build distribution.  (line   6)\n* distribution tarball, making:          Build distribution.  (line   6)\n* distro, building for:                  Distro builds.       (line   6)\n* dvipdfm-x:                             Configure options for texk/dvipdfm-x.\n(line   6)\n* dvipdfmx:                              Configure options for texk/dvipdfm-x.\n(line   6)\n* dvisvgm:                               Configure options for texk/dvisvgm.\n(line   6)\n* dvisvgm, requires C++11:               Prerequisites.       (line  17)\n* engine, adding new:                    Adding a new engine. (line   6)\n* engine, building one:                  Build one engine.    (line   6)\n* environment variables, for configure:  Configure options.   (line  16)\n* execprefix:                           --enable-multiplatform.\n(line   6)\n* extending TeX Live:                    Extending TeX Live.  (line   6)\n* extern functions:                      Declarations and definitions.\n(line  41)\n* flags, macros for library and header:  Macros for library and header flags.\n(line   6)\n* fontconfig library, required by xetex: Prerequisites.       (line  40)\n* freetype cross compiling:              Cross problems.      (line  13)\n* freetype library:                      freetype library.    (line   6)\n* FreeType, requires gmake:              Prerequisites.       (line  13)\n* freetype-config:                       freetype library.    (line  13)\n* freetype-config <1>:                   Variables for configure.\n(line  24)\n* FT2CONFIG:                            Variables for configure.\n(line  21)\n* gcc, default compilers:                Build one package.   (line  77)\n* general setup macros:                  General setup macros.\n(line   6)\n* generic library module, adding:        Adding a new generic library module.\n(line   6)\n* Ghostscript location for Xdvik:        Configure options for texk/xdvik.\n(line   6)\n* git-svn:                               Transfer from Subversion to Github.\n(line   6)\n* global configure options:              Global configure options.\n(line   6)\n* gmake, required:                       Prerequisites.       (line  13)\n* GNU make, required:                    Prerequisites.       (line  13)\n* GNU tools, needed for building:        Build system tools.  (line   6)\n* GNU/Linux distro:                      Distro builds.       (line   6)\n* Gnulib, used for common files:         Top-level directories.\n(line  30)\n* HarfBuzz, requires C++11:              Prerequisites.       (line  17)\n* ICU cross compiling:                   Cross problems.      (line  20)\n* ICU libraries:                         Variables for configure.\n(line  24)\n* ICU, requires C++11:                   Prerequisites.       (line  17)\n* icu-config:                            Variables for configure.\n(line  24)\n* ICUCONFIG:                            Variables for configure.\n(line  22)\n* infrastructure, tools needed for:      Build system tools.  (line   6)\n* inst/ top-level directory:             Top-level directories.\n(line  39)\n* install-tl, TeX Live installer:        Installing.          (line   8)\n* installation directories:              Installation directories.\n(line   6)\n* installing:                            Installing.          (line   6)\n* interprocess communication:            Configure options for texk/web2c.\n(line  31)\n* introduction:                          Introduction.        (line   6)\n* iteration through sources, by configure and make: Build iteration.\n(line   6)\n* kpathsea library:                      kpathsea library.    (line   6)\n* kpathsea.ac:                           kpathsea library.    (line  18)\n* kpse-libpng-flags.m4:                  png library.         (line  45)\n* kpse-pkgs.m4:                          Overview of build system.\n(line  30)\n* kpse-zlib-flags.m4:                    zlib library.        (line   6)\n* kpsewhich:                             Variables for configure.\n(line  30)\n* KPSEWHICH:                             Variables for configure.\n(line  29)\n* KPSEADDFLAGS:                        Macros for library and header flags.\n(line  20)\n* KPSEALLSYSTEMFLAGS:                 Adding a new generic library module.\n(line  34)\n* KPSEBASIC:                            General setup macros.\n(line   8)\n* KPSECHECKLATEX:                      Macros for programs. (line   8)\n* KPSECHECKPDFLATEX:                   Macros for programs. (line  15)\n* KPSECHECKPERL:                       Macros for programs. (line  18)\n* KPSECHECKWIN32:                      Macros for Windows.  (line   9)\n* KPSECOMMON:                           General setup macros.\n(line  16)\n* KPSECOMPILERVISIBILITY:              Macros for compilers.\n(line  18)\n* KPSECOMPILERWARNINGS:                Macros for compilers.\n(line   8)\n* KPSECONDMINGW32:                     Macros for Windows.  (line  19)\n* KPSECONDWIN32:                       Macros for Windows.  (line  15)\n* KPSECONDWIN32WRAP:                  Macros for Windows.  (line  24)\n* kpsecvcxxhack:                      Macros for compilers.\n(line  33)\n* kpsecvhavewin32:                    Macros for Windows.  (line  10)\n* kpsecvvisibilityc[xx]flags:         Macros for compilers.\n(line  25)\n* kpsecvwarningcflags:                Macros for compilers.\n(line  15)\n* KPSECXXHACK:                         Macros for compilers.\n(line  28)\n* KPSEENABLEPROG:                      Adding a new program module.\n(line  14)\n* KPSELARGEFILE:                        Macros for libraries.\n(line   8)\n* KPSELIBPNGFLAGS:                     Macros for library and header flags.\n(line  10)\n* KPSELIBPNGFLAGS <1>:                 png library.         (line  45)\n* kpselibspkgs:                        Adding a new generic library module.\n(line   6)\n* KPSELIBFLAGS:                        Macros for library and header flags.\n(line   6)\n* KPSELIBFLAGS <1>:                    Adding a new generic library module.\n(line  26)\n* KPSELIBSYSTEMFLAGS:                 Adding a new generic library module.\n(line  34)\n* KPSEPROGLEX:                         Macros for programs. (line  21)\n* KPSERESTOREFLAGS:                    Macros for library and header flags.\n(line  24)\n* kpsetexkpkgs:                        Adding a new program module.\n(line   6)\n* kpsetexlibspkgs:                     Adding a new TeX-specific library module.\n(line  11)\n* KPSETRYLIB:                          png library.         (line  17)\n* KPSETRYLIB <1>:                      Adding a new generic library module.\n(line  20)\n* KPSETRYLIBXX:                        png library.         (line  30)\n* KPSETRYLIBXX <1>:                    Adding a new generic library module.\n(line  20)\n* kpseutilspkgs:                       Adding a new program module.\n(line  10)\n* KPSEWIN32CALL:                       Macros for Windows.  (line  31)\n* KPSEWITHLIB:                         Adding a new generic library module.\n(line  11)\n* KPSEWITHTEXLIB:                      Adding a new TeX-specific library module.\n(line  14)\n* large file support:                    --disable-largefile. (line   6)\n* LATEX:                                 Variables for configure.\n(line  40)\n* layout of sources:                     Layout and infrastructure.\n(line   6)\n* LFS (large file support):              --disable-largefile. (line   6)\n* libexpat, dependency of libfontconfig: Configure options for texk/web2c.\n(line  50)\n* libfontconfig, hack for avoiding linking dependencies: Configure options for texk/web2c.\n(line  50)\n* libfreetype:                           Variables for configure.\n(line  24)\n* libfreetype, and const:                Const.               (line  21)\n* libpng library:                        png library.         (line   6)\n* library module, generic, adding:       Adding a new generic library module.\n(line   6)\n* library module, TeX-specific, adding:  Adding a new TeX-specific library module.\n(line   6)\n* library modules:                       Library modules.     (line   6)\n* library-specific configure options:    Library-specific configure options.\n(line   6)\n* libsigsegv, required by xindy:         Prerequisites.       (line  44)\n* libstc++, statically linking:          Macros for compilers.\n(line  29)\n* Libtool:                               Overview of build system.\n(line   6)\n* libtool, hack for avoiding excessive linking: Configure options for texk/web2c.\n(line  50)\n* libXt:                                 Configure options for texk/web2c.\n(line  22)\n* linked scripts:                        Linked scripts.      (line   6)\n* linking C++ libraries statically:      Macros for compilers.\n(line  29)\n* lisp.run, lisp.exe:                    Configure options for utils/xindy.\n(line  14)\n* LittleEndian architectures:            Configure options for texk/web2c.\n(line  27)\n* m4/ top-level directory:               Top-level directories.\n(line  14)\n* macros, for compilers:                 Macros for compilers.\n(line   6)\n* macros, for libraries:                 Macros for libraries.\n(line   6)\n* macros, for library and header flags:  Macros for library and header flags.\n(line   6)\n* macros, for programs:                  Macros for programs. (line   6)\n* macros, for Windows:                   Macros for Windows.  (line   6)\n* macros, general setup:                 General setup macros.\n(line   6)\n* MAKE:                                  Variables for configure.\n(line  33)\n* make -t:                               Build system tools.  (line  43)\n* make rules, verbose vs. silent:        --enable-silent-rules.\n(line   6)\n* Makefile.am:                           Adding a new program module.\n(line  46)\n* mf-nowin:                              Configure options for texk/web2c.\n(line  34)\n* mingw32:                               Cross configuring.   (line  27)\n* MINGW32, Automake conditional:         Macros for Windows.  (line  20)\n* mktex.ac:                              kpathsea library.    (line  18)\n* mktextfm:                              kpathsea library.    (line  18)\n* modules, for libraries:                Library modules.     (line   6)\n* modules, for programs:                 Program modules.     (line   6)\n* motif:                                 Configure options for texk/xdvik.\n(line   9)\n* native cross compilation:              Cross compilation.   (line  10)\n* NEWPROG-SRC, original source subdirectory: Adding a new program module.\n(line  33)\n* OBJCXX=OBJC-COMPILER:                  Build one package.   (line  77)\n* one engine, building:                  Build one engine.    (line   6)\n* one package, building:                 Build one package.   (line   6)\n* OpenGL, required for Asymptote:        asymptote.           (line   6)\n* operating system distribution, building for: Distro builds. (line   6)\n* otangle:                               Cross problems.      (line  26)\n* overall build process:                 Building.            (line   6)\n* parallel build:                        Build in parallel.   (line   6)\n* paths, for installation:               Installation directories.\n(line   6)\n* PDF files, size of:                    --disable-largefile. (line  11)\n* PDFLATEX:                              Variables for configure.\n(line  41)\n* PERL:                                  Variables for configure.\n(line  39)\n* perl, required by web2c, etc.:         Prerequisites.       (line  29)\n* PKGCONFIG:                            Variables for configure.\n(line  23)\n* plain.tex, not in source tree:         Installing.          (line   8)\n* png library:                           png library.         (line   6)\n* PostScript files, size of:             --disable-largefile. (line  11)\n* Preining, Norbert:                     Distro builds.       (line  54)\n* preloaded binaries:                    Configure options for texk/web2c.\n(line  45)\n* prerequisites for building:            Prerequisites.       (line   6)\n* program module, adding:                Adding a new program module.\n(line   6)\n* program modules:                       Program modules.     (line   6)\n* program-specific configure options:    Program-specific configure options.\n(line   6)\n* proxy build system:                    png library.         (line  35)\n* Python, required by ICU:               Prerequisites.       (line  23)\n* reautoconf:                            Build system tools.  (line  28)\n* reautoconf, for new program:           Adding a new program module.\n(line  89)\n* removing build directories:            Build one package.   (line 106)\n* requirements for building:             Prerequisites.       (line   6)\n* runscript.exe:                         Macros for Windows.  (line  25)\n* scripts, linked and not maintained:    Linked scripts.      (line   6)\n* scrolling, smooth:                     Configure options for texk/xdvik.\n(line  13)\n* SED:                                   Variables for configure.\n(line  34)\n* setup macros, general:                 General setup macros.\n(line   6)\n* shared libraries, using vs. avoiding:  Distro builds.       (line  11)\n* size of PDF and PS files:              --disable-largefile. (line  11)\n* size of source tree:                   Build one package.   (line  63)\n* source code declarations:              Declarations and definitions.\n(line   6)\n* source directory building, not supported: Building.         (line  17)\n* source tree:                           Layout and infrastructure.\n(line   6)\n* squeeze:                               Cross problems.      (line  13)\n* squeeze/configure.ac:                  xdvik package.       (line  14)\n* static functions:                      Declarations and definitions.\n(line  35)\n* static linking for C++:                Macros for compilers.\n(line  29)\n* stpcpy:                                Declarations and definitions.\n(line  18)\n* Subversion repository:                 Build system tools.  (line  38)\n* support files, separate from build:    Installing.          (line   8)\n* symlinks, used for scripts:            Linked scripts.      (line   6)\n* synctex:                               Configure options for texk/web2c.\n(line  59)\n* synctex <1>:                           Configure options for texk/web2c.\n(line  64)\n* system distribution, building for:     Distro builds.       (line   6)\n* t1utils package:                       t1utils package.     (line   6)\n* tangle:                                Cross problems.      (line  26)\n* tests, running:                        Overview of build system.\n(line   6)\n* TeX-specific library module, adding:   Adding a new TeX-specific library module.\n(line   6)\n* texlive.tlpdb, TeX Live database:      Installing.          (line   8)\n* TEXMFCNF for running standalone:       Build one package.   (line  44)\n* TEXMFROOT for running standalone:      Build one package.   (line  44)\n* tie:                                   Cross problems.      (line  26)\n* timestamps, in repository:             Build system tools.  (line  38)\n* TLpatches/patch-...:                   Adding a new program module.\n(line  68)\n* TLpatches/TL-Changes:                  Adding a new program module.\n(line  64)\n* tools, for building:                   Build system tools.  (line   6)\n* top-level directories:                 Top-level directories.\n(line   6)\n* touching files to avoid rerunning:     Build system tools.  (line  43)\n* Travis-CI:                             Continuous integration.\n(line   6)\n* travis.yml:                            CI testing on Travis-CI.\n(line   6)\n* type cast from const, avoiding:        Const.               (line  38)\n* use-commit-times, Subversion:          Build system tools.  (line  38)\n* variable declarations, in source code: Declarations and definitions.\n(line  52)\n* variables for configure:               Variables for configure.\n(line   6)\n* warning, discards qualifiers:          Const.               (line  30)\n* WARNINGC[XX]FLAGS:                    Macros for compilers.\n(line   9)\n* web2c program:                         Cross problems.      (line  13)\n* web2c.ac:                              Configure options for texk/web2c.\n(line  37)\n* wget:                                  Linked scripts.      (line  23)\n* WIN32, Automake conditional:           Macros for Windows.  (line  16)\n* WIN32WRAP, Automake conditional:      Macros for Windows.  (line  25)\n* Windows, invoking scripts on:          Linked scripts.      (line   6)\n* Windows, macros for:                   Macros for Windows.  (line   6)\n* withenable.ac, for new modules:        Adding a new program module.\n(line  14)\n* Work/ top-level directory:             Top-level directories.\n(line  39)\n* wrapper binary for scripts on Windows: Linked scripts.      (line   6)\n* wrapper build system:                  freetype library.    (line   6)\n* X toolkit:                             Configure options for texk/web2c.\n(line  22)\n* X11 development, required by X clients: Prerequisites.      (line  36)\n* X11 headers, and const:                Const.               (line  21)\n* xasy:                                  asymptote.           (line   6)\n* xaw:                                   Configure options for texk/xdvik.\n(line   9)\n* xdvik:                                 xdvik package.       (line   6)\n* xdvik <1>:                             Configure options for texk/xdvik.\n(line   6)\n* xdvipdfmx:                             Configure options for texk/dvipdfm-x.\n(line   6)\n* xindy:                                 Linked scripts.      (line  23)\n* xindy <1>:                             xindy package.       (line   6)\n* xindy <2>:                             Configure options for utils/xindy.\n(line   6)\n* xindy cross compiling requires clisp:  Cross problems.      (line  33)\n* XInput:                                Configure options for texk/xdvik.\n(line  13)\n* Xlib:                                  Configure options for texk/web2c.\n(line  22)\n* xz:                                    Linked scripts.      (line  23)\n* zlib library:                          zlib library.        (line   6)\n\n",
            "subsections": []
        }
    },
    "flags": [],
    "examples": [],
    "see_also": []
}