TeX Live Manager

tlmgr is TeX Live’s native package manager (https://www.tug.org/texlive/).

Parsing notes, verified against the tlmgr.pl source (TeX-Live/texlive-infra) and real captures:

  • Package operations only work on a vanilla upstream TeX Live install. Distro-packaged TeX Live (Debian, Fedora) is dpkg/rpm-owned and disables tlmgr’s mutating commands.

  • info --data name,localrev prints headerless CSV, one “name,revision” record per line; both fields are bare and comma-free. The --data option appeared in TeX Live 2018, hence the version floor.

  • The outdated listing runs in --machine-readable mode: tab-separated records between an “end-of-header” and an “end-of-updates” line, with a one-char status in field 2 (“u” = updatable). Diagnostics move to stderr in that mode.

  • TeX Live versions are years. The version regex deliberately matches only the 4 digits following “version”, so pre-2017 layouts (“TeX Live 2016 version 20160523”) resolve to their year and fail the >=2018 floor.

  • tlmgr never prompts on per-package operations and never self-escalates: on the default user-owned /usr/local/texlive install no root is needed, while root-owned installs refuse mutations. Mutating operations are marked privileged but escalation stays opt-in (default_sudo is left off): pass --sudo to mpm for a root-owned TeX tree.

  • Home page: https://www.tug.org/texlive/

  • Source: meta_package_manager/managers/tlmgr.toml

  • Version requirement: >=2018

Platforms

  • 🅱️ BSD

  • 🐧 Linux

  • 🍎 macOS

  • ⨂ Unix

  • 🪟 Windows

Operations

Operation

Supported

Notes

installed

outdated

search

exact and extended search backfilled by mpm

install

upgrade

upgrade_all

remove

sync

cleanup

Ecosystem

  • Accepted purl types: pkg:tlmgr

Usage

$ mpm --tlmgr installed
$ mpm --tlmgr search "query"
$ mpm --tlmgr upgrade --all
$ mpm install pkg:tlmgr/hello
$ mpm --dry-run --tlmgr upgrade --all

Every example above accepts --dry-run, which simulates the underlying manager calls without touching the system: the safe way to watch what mpm would do before trusting it.

Deselect the manager for a single run with --no-tlmgr, disable it from your configuration, or tune its invocation attributes with per-manager overrides.

Command line

  • CLI names, in lookup order: tlmgr

The version is probed by running:

$ tlmgr --version
tlmgr revision 66798 (2023-04-08 02:15:21 +0200)
tlmgr using installation: /usr/local/texlive/2023
TeX Live (https://tug.org/texlive) version 2023

and extracted with:

r"TeX Live.*version (?P<version>\d{4})"

Privilege escalation

mpm runs this manager as the current user and never prepends sudo by default. Flip the policy for its privileged operations with --sudo or the per-manager sudo override.

Root is required for its cleanup, install, remove, sync, upgrade, upgrade_all operations.

See privilege escalation for the full policy.

Cooldown

State of TeX Live Manager’s release-age gating, from the cooldown support table:

  • Status: ❌ None (TeX Live, curated)

With --cooldown set, mpm skips this manager’s install and upgrade operations rather than run them unguarded (fail-closed); --allow-unsupported-managers opts back in.

Reference traces

Raw native outputs captured in the bundled definition: the reference mpm’s parsers were written against. If you know TeX Live Manager well and a transcript below looks wrong, or a newer release changed its output format, report it.

$ tlmgr info --only-installed --data name,localrev
tlmgr: package repository https://mirror.ctan.org (verified)
sansmath,15878
titlesec,68677
$ tlmgr --machine-readable update --list --all
location-url	https://mirror.ctan.org
total-bytes	323544
end-of-header
adjmulticol	u	62935	63073	316000	-	-	-	-	-
end-of-updates
running mktexlsr ...