INSTALL-TL(1)
π install-tl(1) π
Manual name: install-tl(1) Β· Section: User Contributed Perl Documentation
β¨ NAME β¨
okay so install-tl is the TeX Live cross-platform installer π It works on every platform TeX Live supports, which is honestly iconic.
πΈ SYNOPSIS πΈ
install-tl [option]...
install-tl-windows.bat [option]...
π DESCRIPTION π
bestie, this installer builds a runnable TeX Live installation from all kinds of media π You can install over the network, from a local hard disk, from a DVD, and more. If you're still figuring out how to download TeX Live in the first place, check out <https://tug.org/texlive/acquire.html> β¨
okay the core idea is this: you pick one of the top-level schemes. Each scheme is defined as a different set of collections and packages. A collection is a group of packages, and a package is where the actual files live π§ Every package belongs to exactly one collection, but schemes can mix any combo of packages and collections.
Inside the installer, you can pick a scheme and tweak which collections get installed. You cannot pick individual packages there, though π If you want to work at the package level, use tlmgr (more on that just below) once the initial install is done.
The default is scheme-full, which installs everything. And ngl, it is highly recommended π₯
π¦ REFERENCES π¦
post-install configuration, package updates, and so much more get handled by tlmgr(1), the TeX Live Manager π <https://tug.org/texlive/tlmgr.html>
the most up-to-date version of this installer documentation lives on the internet at <https://tug.org/texlive/doc/install-tl.html> π
for step-by-step instructions, check <https://tug.org/texlive/quickinstall.html> π
for the full TeX Live documentation, go to <https://tug.org/texlive/doc> πβ¨
π EXAMPLES π
so with no options at all, install-tl drops you into an interactive menu where basically every default can be changed π
With options, you can seed the settings in different ways, or run the whole install without any interaction. Here are some examples, bestie:
install-tl --paper=letter Sets the paper size. The only allowed values are letter and (the default) a4 π
install-tl --scheme scheme Sets the installation scheme. The default is full. For the full list of schemes, open the interactive S menu π
install-tl --no-interaction Installs right away after parsing your options, skipping the interactive menu entirely π
install-tl --profile texlive.profile Installs with no interaction, using the TL profile file you give it. See "PROFILES" below for the deets π§Ύ If you want to initialize from the profile and then enter the interactive menu, add --init-from-profile π
Full documentation follows π«Ά
β¨ OPTIONS β¨
okay so, every option can be given in any order, and you can use either a single leading - or a double --, no judgement π
An argument value can be separated from its option by a space or by =.
The options that customize the installation can also be picked in the interactive menus, whether GUI or text.
-gui [[=]module],-no-guiβ ok this one is a bit of a mood π- If you don't give a module, it starts the Tcl/Tk GUI installer (see below).
- If you do give a module, it loads that installer module. Right now these are the supported ones:
textβ the text mode interface. This is the default on Unix systems, Macs included, and it's the same as-no-guiπ₯οΈtcl(orperltkorwizardorexpertor nothing at all) β the Tcl/Tk interface, which is the default on Windows πͺ It starts with a small set of config options, roughly what the oldwizardoption gave you. There's also an Advanced button that takes you to a screen with roughly the same options as the oldperltkinterface β¨
- The default GUI needs Tcl/Tk. This used to come standard on Macs, but it's been removed in the latest macOS releases π It's often already installed on GNU/Linux, or you can easily grab it from your distro's package manager. For Windows, TeX Live ships its own Tcl/Tk runtime π«Ά
-lang llcodeβ if the Tcl GUI's built-in language detection misses, you can force a language with an ISO 639-1-based language code π Currently supported (though not every language is fully translated yet) are: English (en, the default), Czech (cs), German (de), French (fr), Italian (it), Japanese (ja), Dutch (nl), Polish (pl), Brazilian Portuguese (pt_BR), Russian (ru), Slovak (sk), Slovenian (sl), Serbian (sr), Ukrainian (uk), Vietnamese (vi), simplified Chinese (zh_CN), and traditional Chinese (zh_TW) πΈ-repository url|pathβ this is where you tell the installer where to get the packages from π¦ It can be a directory name, or a URL usinghttp(s),ftp, orscp. Thetlmgrdocs have all the details: <https://tug.org/texlive/doc/tlmgr.html#OPTIONS> π- By default, the installer picks a mirror automatically, using <https://mirror.ctan.org/systems/texlive/tlnet>, and then sticks with that mirror for the whole download. You can use the special argument
ctanas a shortcut for this. (Check <https://ctan.org> for more on CTAN and its mirrors π§) - Once the installation is done, you can use that installation as the repository for another one π If you installed less than the full scheme (the one with every package), the list of available schemes gets adjusted to match.
- By default, the installer picks a mirror automatically, using <https://mirror.ctan.org/systems/texlive/tlnet>, and then sticks with that mirror for the whole download. You can use the special argument
-select-repositoryβ lets you pick a specific mirror from the current list of active CTAN mirrors πΊοΈ This is supported in thetextandguiinstaller modes. It'll also offer to install from local media if it's available, or from a repository you gave on the command line. It's super useful when the default automatic redirection picks a sus host for you π-all-optionsβ normally, options that don't apply to your current platform are hidden (so on Unix, the Windows-only ones don't show up) π This option shows them anyway, so you can configure those "foreign" settings too π-custom-bin pathβ the move if you've built your own set of TeX Live binaries, maybe because TL doesn't provide precompiled ones for your platform π οΈ This points the installer at a directory holding the binaries for your current system. The install carries on as usual, but at the very end, everything frompathgets copied intobin/custom/under your installation directory. Thatbin/custom/folder is what gets added to the path for the post-install actions. If you want to install multiple custom binary sets, manually renamecustombefore each one π- For more on custom binaries, see <https://tug.org/texlive/custom-bin.html>. For general info on building TeX Live, see <https://tug.org/texlive/build.html> π¦
-no-installationβ Skips the actual installation entirely. It's for debugging the initialization and setup routines without touching your disk, so nothing gets written. π§ͺ-no-interactionβ Skips the interactive menu and goes straight into the installation after initialization and option parsing. It also skips checking for a previous installation and asking whether to import your old settings. β‘-no-persistent-downloads,-persistent-downloadsβ For network installs, the persistent option tries to set up one connection using the"LWP"Perl module. That one connection gets reused for the whole session instead of opening a new download for every package, which usually gives a big speed boost. π
Persistent downloads are on by default. If LWP can't be set up, the installer falls back to "wget". To turn off LWP and persistent connections, use "-no-persistent-downloads". π
-no-verify-downloadsβ By default, if a GnuPGgpgbinary is found in PATH, downloads get checked against a cryptographic signature. This option turns that checking off. The full scoop is in the Crytographic Verification section of the"tlmgr"documentation, e.g., <https://tug.org/texlive/doc/tlmgr.html#CRYPTOGRAPHIC-VERIFICATION> π-non-adminβ Windows only. It sets everything up for the current user instead of for all users. πͺ-paper "a4"|"letter"β Sets the default paper size for all TeX Live programs to whatever you pick. The default is"a4". You can change it later after installing with thetlmgr papercommand. π-portableβ Installs for portable use, like on a USB stick. Check the"instopt_portable"description further down for the details. π§³-print-platformβ Prints the TeX Live identifier for your detected platform (hardware and operating system combo) to standard output, then exits."-print-arch"is a synonym, so either one works. π¨οΈ-profile profile_fileβ Loads profile_file and runs the installation with zero user interaction, which means a batch (unattended) install. Environment variables get ignored here. See"PROFILES"below. π€-qβ Hides the normal informational messages. Shh π€«-scheme schemeβ Schemes are the highest level of package grouping in TeX Live. The default is the"full"scheme, which includes everything, but this option overrides that. The scheme value can optionally start with the prefix"scheme-". Which scheme names are available depends on what your package repository provides, so check the interactive menu list to see them. π-texdir dirβ Sets the system installation directory. The default is"/usr/local/texlive/YYYY"for release YYYY. Using this also makes"TEXMFLOCAL","TEXMFSYSCONFIG", and"TEXMFSYSVAR"subdirectories of dir, so you don't have to set each one yourself. ποΈ
There's a quick summary of these directory trees under "DIRECTORY TREES" below. For the full details on the default trees and what they're meant for, check the main TeX Live documentation at <https://tug.org/texlive/doc>. π
-texuserdir dirβ Sets the user installation directory. The default is"~/.texliveYYYY", except on Macs, where there's no leading dot. Using this also makes"TEXMFHOME","TEXMFCONFIG", and"TEXMFVAR"subdirectories of dir. π©βπ»-texmflocal dirβ Sets the"TEXMFLOCAL"directory. The default is"/usr/local/texlive/texmf-local", which is one level up from the main installation. That way, locally installed packages can be used across releases, which is usually what you want. Using"-texdir"changes this and puts"TEXMFLOCAL"under the main tree. The"-texmflocal"option can be used to point at an explicit directory. π
Anything installed here has to follow the TeX directory structure (TDS), e.g., "TEXMFHOME/tex/latex/mypkg/mypkg.sty". TDS reference: <https://tug.org/tds>. π§©
-texmfhome dirβ Sets the"TEXMFHOME"directory. The default is"~/texmf", except on Macs, where it's"~/Library/texmf". Just like"TEXMFLOCAL", the"-texuserdir"option changes this default.
Also just like "TEXMFLOCAL", anything installed here must follow the TDS. π«Ά
-texmfsysconfig dir,-texmfsysvar dirβ Sets the"TEXMFSYSCONFIG"and"TEXMFSYSVAR"system directories. βοΈ-texmfconfig dir,-texmfvar dirβ Sets the"TEXMFCONFIG"and"TEXMFVAR"user directories. The defaults are"~/.texliveYYYY/texmf-{config,var}", except on Macs, where the leading dot is dropped ("~/texliveYYYY/..."). π±-vβ Turns on verbose debugging messages. Repeat it for maximum debugging:"-v -v". More repeats are accepted but ignored, so you're already at the max. π-version,--versionβ Prints the version information and exits. If"-v"is also given, the versions of the TeX Live modules used get reported too. π·οΈ
β¨ PROFILES β¨
A profile file normally has all the values needed to do an installation. After a normal installation finishes, a profile for that exact installation gets written to the file "tlpkg/texlive.profile". You can also pick "P" from the text menu anytime to save your current setup as a profile. These are small text files, so feel free to peruse and edit them however you like. π
You can pass a profile file as the argument to "-profile", for example to redo the exact same installation on a different system. Or you can make a custom profile, which is easiest to do by starting from a generated one and changing values. An empty profile file makes the installer use the defaults. π
Heads up: the installer only supports selection by scheme and collections, not individual packages. So packages can't be specified in profile files either. If you want to work at the package level, use "tlmgr". π
Inside a profile file, each line looks like this:
variable [value]
Lines starting with "#" are comments. The possible variable names are listed below. Values, when present, are either 0 or 1 for booleans, or strings (which must be written without any quote characters). Leading whitespace is ignored. π§
If the variable "selected_scheme" is defined and no collection variables at all are defined, then the collections required by the specified scheme get installed, without listing them out explicitly. That scheme's collections might change over time, but this makes profile files way easier to maintain. β¨ If any collections are specified in a profile, though, the scheme gets ignored and all the collections you want must be listed explicitly. π¨
For example, this line:
selected_scheme scheme-small
along with definitions for the installation directories (covered below under "path options") is enough to install the "small" scheme with all default options. The schemes are described in the "S" menu in the text installer, or the equivalent. π·
Besides "selected_scheme", here are the other variable names supported in a profile: π
π collection options (prefix "collection-") π
Collections are specified with a variable name that has the prefix "collection-" followed by a collection name. There's no value. For instance, "collection-basic". The collections are described in the "C" menu. π¦
Schemes, collections, and packages are all ultimately defined by the files in the "tlpkg/tlpsrc/" source directory. ποΈ
πΊοΈ path options πΊοΈ
It's best to define all of these, even if they won't be used in a given installation. That way you avoid accidentally getting a default value that could cause problems later. π
TEXDIR
TEXMFLOCAL
TEXMFSYSCONFIG
TEXMFSYSVAR
TEXMFCONFIG
TEXMFVAR
TEXMFHOME
π οΈ installer options (prefix "instopt_") π οΈ
"instopt_adjustpath"(default 0 on Unix, 1 on Windows) β Adjusts the"PATH"environment variable. π§"instopt_adjustrepo"(default 1) β Sets the remote repository to a multiplexed CTAN mirror after installation. See"-repository"above. πͺ"instopt_letter"(default 0) β Makes letter size paper the default instead of a4. π"instopt_portable"(default 0) β Installs for portable use, like on a USB stick, without touching the host system. Specifically, this forces the user directories"TEXMFHOME","TEXMFCONFIG", and"TEXMFVAR"to be identical to the system directories"TEXMFLOCAL","TEXMFSYSCONFIG", and"TEXMFSYSVAR", respectively. This happens regardless of other options and environment variable.)
On Windows, it also disables the desktop integration, path adjustment, and file associations actions that usually get performed. πͺ
"instopt_write18_restricted"(default 1) β Enables"\write18"for a restricted set of programs. π
π§ tlpdb options (prefix "tlpdbopt_") π§
The definitive list lives in "tlpkg/TeXLive/TLConfig.pm", in the hash %TeXLive::TLConfig::TLPDBOptions, along with explanations. Every item listed there except for "tlpdbopt_location" can be specified. Here's the current list: π
tlpdbopt_autobackup
tlpdbopt_backupdir
tlpdbopt_create_formats
tlpdbopt_desktop_integration
tlpdbopt_file_assocs
tlpdbopt_generate_updmap
tlpdbopt_install_docfiles
tlpdbopt_install_srcfiles
tlpdbopt_post_code
tlpdbopt_sys_bin
tlpdbopt_sys_info
tlpdbopt_sys_man
tlpdbopt_w32_multi_user
π» platform options (prefix "binary_") π»
For each supported platform in TeX Live (the directories under "bin/"), the variable "binary_"PLATFORM can be set with the value 1. For example:
binary_x86_64-linux 1
If no "binary_" settings are made, the default is whatever the current machine is running. π₯οΈ
In releases before 2017, lots of profile variables had different names. Those aren't documented here, so check the "install-tl" source if you need them. They're still accepted and get transformed to the names above. When a profile is written, the names above are always used. π
For more details on all of the above options, check the TeX Live installation manual, linked from <https://tug.org/texlive/doc>. π
β¨ ENVIRONMENT VARIABLES β¨
okay so install-tl has a bunch of environment variables it peeks at for scripting and debugging π§ they're not really for normal installs, so don't stress if you never touch them bestie π
NOPERLDOCβ tells it NOT to run the--helpmessage throughperldocπTEXLIVE_DOWNLOADER,TL_DOWNLOAD_PROGRAM,TL_DOWNLOAD_ARGS,TEXLIVE_PREFER_OWNβ these override the usual picks for the download and other utility programs π₯ the full lowdown lives in thetlmgrdocs, check the vibes athttps://tug.org/texlive/doc/tlmgr.html#ENVIRONMENT-VARIABLESTEXLIVE_INSTALL_ENV_NOCHECKβ skips the check for any environment variable containing the stringtexπ honestly this one is for the devs, because if you're building TeX-related software you're probably drowning in those variables anywayTEXLIVE_INSTALL_NO_CONTEXT_CACHEβ skips creating the ConTeXt cache πΈ this one is especially useful for redistributorsTEXLIVE_INSTALL_NO_DISKCHECKβ if set to1, the free disk space check gets omitted π ββοΈ by default, if a POSIX-compliantdf(one that supports-Pk) is around, the installer checks the space in your chosen install location and will abort if it's short, with a 100MB margin on top. Windows does an equivalent check that doesn't usedfat all π«ΆTEXLIVE_INSTALL_NO_RESUMEβ skips the check for installing on top of a previous install and then asking if you want to import your old settings β¨TEXLIVE_INSTALL_NO_WELCOMEβ skips the welcome message after a successful install, which is handy when you're testing πTEXLIVE_INSTALL_PAPERβ sets the default paper size for every relevant program. It has to be eitherletterora4, and the default isa4πTEXLIVE_INSTALL_PREFIX,TEXLIVE_INSTALL_TEXMFCONFIG,TEXLIVE_INSTALL_TEXMFVAR,TEXLIVE_INSTALL_TEXMFHOME,TEXLIVE_INSTALL_TEXMFLOCAL,TEXLIVE_INSTALL_TEXMFSYSCONFIG,TEXLIVE_INSTALL_TEXMFSYSVARβ these set the matching directories ποΈTEXLIVE_INSTALL_PREFIXdefaults to/usr/local/texlive. If you want to see every default, run the installer interactively and typeDfor the directory menu π
The command line options for directories beat these env vars, so if you set both, you'll get a warning when the values don't match, because that's usually an accident π
πΊοΈ DIRECTORY TREES πΊοΈ
okay so TeX Live has a PLETHORA of directory trees, and there are a plethora of ways to point at them π΅βπ« the simplest, most recommended move is to change NOTHING. The defaults cover the vast majority of installs, so you're good π
BUT for the sake of explaining, here's the table of trees and the command line options that change them. The first group of three are system directories, the second group of three are user directories, and the two groups are pretty analogous π¦
+----------------+--------------------------------------+--------------+------------------+
| tree | default | group change | single change |
+----------------+--------------------------------------+--------------+------------------+
| TEXMFLOCAL | /usr/local/texlive/texmf-local | --texdir | --texmflocal |
| TEXMFSYSVAR | /usr/local/texlive/YYYY/texmf-var | --texdir | --texmfsysvar |
| TEXMFSYSCONFIG | /usr/local/texlive/YYYY/texmf-config | --texdir | --texmfsysconfig |
+----------------+--------------------------------------+--------------+------------------+
| TEXMFHOME | ~/texmf | --texuserdir | --texmfhome |
| TEXMFVAR | ~/.texliveYYYY/texmf-var | --texuserdir | --texmfvar |
| TEXMFCONFIG | ~/.texliveYYYY/texmf-config | --texuserdir | --texmfconfig |
+----------------+--------------------------------------+--------------+------------------+
Also, like we said earlier, every tree has an environment variable TEXLIVE_INSTALL_tree that overrides its default β¨ command line and profile settings both beat env var settings, so the order is basically: command line and profile first, then env vars, then defaults π
The defaults shift a little on Macs, as explained above in "OPTIONS" π
Here's the tea on ~ (the home shortcut) π« for the user trees, the default value uses ~, and it stays as a literal ~ in texmf.cnf. That way every user gets their own TEXMFHOME and friends, just like it's supposed to be π for the system trees though, if you use ~ during install, it's treated as typing shorthand, and the expanded home directory gets written into texmf.cnf. It doesn't make sense to have user-specific system directories, obviously π
For more on the directory trees and what they're meant for, check the main TeX Live docs at https://tug.org/texlive/doc π
π BUGS π
okay real talk, this part is a little spicy πΆοΈ The install-tl script copies itself into the installed tree. Usually you can run it from there, using the installed tree as the source for another install, and it's all good π«Ά BUT every once in a while the code in the new install-tl and the infrastructure might not vibe, and you get (probably) inscrutable Perl errors π The way forward is to run install-tl out of the installer package (install-tl-unx.tar.gz or install-tl.zip) instead of out of the installation. Feel free to report the issue too, because usually the code can be easily synced up again π§
Also, DO NOT try to useinstall-tlto adjust options or installed packages in an existing installed tree π« usetlmgrinstead, bestie. Seriously.
π AUTHORS AND COPYRIGHT π
This script and its documentation were written for the TeX Live distribution (https://tug.org/texlive), and both are licensed under the GNU General Public License Version 2 or later ππ¦
$Id: install-tl 73024 2024-12-03 17:12:38Z karl $ π·
Anyway, that's the whole page, bestie π install-tl from perl v5.40.0, last touched 2024-12-03, all wrapped up as INSTALL-TL(1). Go install something iconic β¨ππ
π¦ where this page comes from
- debian trixie: texlive-base 2024.20250309-1
- fedora 44: texlive-texlive-scripts 12:svn78361-105.fc44 Β· LPPL-1.3c
- fedora 44: texlive-texlive-scripts 12:svn78361-111.fc44 Β· LPPL-1.3c
- ubuntu questing: texlive-base 2024.20250309-1
- π girlified by anthropic/claude-haiku-5.5 on : a language model's rewrite of the original, under its terms