Original version:
Mon Jan 19 12:29:01 2026
Last updates:
Tue Jan 20 09:41:59 2026
…
Tue Feb 24 14:56:36 2026
Current time in Salt Lake City, Utah, USA:
Tuesday, 24-Feb-2026 15:49:35 MST
|
This is the latest in an series of annual documents describing work at Utah on building TeX Live software packages: for earlier reports, follow these links: 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023. 2025. and 2025. Further updates for TeX Live 2025 are frozen sometime in March 2026, and future updates then happen only in the 2026 (and later) trees. Final binaries for 2026 are available within a few days of the freeze, after which TeX Live 2026 ISO image production work begins. That work is expected to be completed in mid-March 2026. Binaries for other than the standard supported platforms may appear at this site for weeks or months after the source code freeze, and the site maintainer is willing to consider builds for more systems than those offered here. |
Here are links to later major sections in this document:
This directory contains files created in support of building and using a pre-release of the TeX Live 2026 distribution. The official release should occur in March 2026, and should be available in ISO images in shortly thereafter; you can download it electronically here. Unlike 2003–2023, DVD media are no longer automatically supplied to TeX user group members, but a smaller number of DVDs are produced to support people with no, or inadequate, Internet access. Please note that if you install it from either of those sources, you should first choose a suitable mirror, and then run the update procedure described later in this document. The TeX Live package repository is actively maintained, and you should expect that several hundred packages are updated each month.
Your first task is to learn how to mount an ISO image on your platform. On many desktops, simply selecting its icon in a File Manager tool does the job. On others, you might have to mount the image (usually as an administrator), such as with this command on most Linux flavors:
# mount -o ro /path/to/your/copy/of/texcol2026.iso /mnt
Details of how to mount an ISO image on many operating systems are described here.
The top-level directory of the ISO image contains README and index.xx.html files (in English, French, and German) that should help guide your selection and installation procedure. For example, Unix users can run the script texlive/install-tl, and Windows users, the script texlive/install-tl-windows.bat. In either case, brief answers to a few questions about your local preferences get the installation started. The rest is automatic, and should complete in less than an hour. See below for resource requirements and how to choose a TeX Live package repository mirror near you.
When installation completes, you should unmount the image through your File Manager, or with an administrator command like this:
# umount /mnt
After a successful installation, the ISO image is then no longer needed, and can be deleted if disk space is limited. Copies of the image remain on numerous TeX Live mirror sites for years, so you can always download it again if needed.
There are more details about the installation process here.
A test lab at this site has hundreds of flavors of Unix on some of which TeX Live builds are attempted, and the scripts named *.*sh in this directory are those used by the local developer.
The intent of the build-texlive-2026.sh script is that it should setup the build environment on each platform, and then run the internal Build script to carry out the build. We have found it necessary on many platforms to carefully control the search path and environment variables at the start of a TeX Live build, and to avoid use of installation locations that are owned by the vendor package system. See elsewhere for an explanation of why we scrupulously avoid the GNU default prefix of /usr/local on new systems.
The scripts in this directory are likely to change during the spring build season for TeX Live 2026 as more platforms are successfully supported.
|
Note: In sharp contrast to previous years, certain non-TeXware libraries required by some of the TeX Live 2018, 2019--2026 binary executable programs now mandate compiler support for more recent versions of ISO Standard C++, and such compilers are unavailable for many older systems. As a result, the number of platforms for which the code can be built and run has been noticeably reduced. Unless your computer and operating system are fairly new, the last release that you may be able to run until you do an operating system, and possibly, hardware, upgrade is TeX Live 2017. If you control your own hardware, or have benevolent computer management, and you really need the latest TeX Live, then a good solution may be to create a virtual machine (VM) running a recent O/S release. There are several free, or no-cost, or low-cost, virtualization technology solutions, including bhyve, Hyper-V, KVM, QEMU, virt-manager, OVirt, Parallels, VirtualBox, VMware Workstation Player, and Xen, and every modern operating system supports one or more of those, although generally, at most one can be installed at a given time. One of the easiest for a new user is VirtualBox, and it requires no special privileges to create and run a virtual machine. At the Utah test lab, we generally allocate a new VM one CPU, 1GB to 4GB DRAM memory, and 80GB of virtual disk storage. For the single purpose of running TeX Live, a 25GB disk would be ample. The VM treats CPU, memory, and disk as expandable resources up to their declared size, so if an initial installation needs only 4GB of disk space, that is all that the underlying host needs to provide. If the assigned memory size is suboptimal, just shut down the VM, change the memory size in the VM management GUI, and reboot the VM. In our experience, setting up a new VM takes about 15 minutes, and modern O/Ses have management GUIs that make user account setup and software package installation easy for novices. Most commercial cloud services supply a choice of preconfigured virtual machines, but you must pay a small monthly fee for CPUs and disk storage. The advantage is that the service provider does most of the work for you, including VM configuration and backup, and in return, you can access and control your personal cloud VM from anywhere in the world where you have an Internet connection. |
As of 24 February 2026, the following builds have been (mostly) successful by the TeX Live team, or at Utah:
% show-file-counts.sh
484 aarch64-centos10
499 aarch64-debian12
504 aarch64-linux
499 amd64-freebsd
498 amd64-freebsd133
497 amd64-freebsd135
494 amd64-freebsd140
497 amd64-freebsd141
494 amd64-freebsd142
490 amd64-freebsd143
497 amd64-freebsd143-clang
498 amd64-freebsd15
497 amd64-ghostbsd2407
502 amd64-netbsd
496 armhf-linux
499 i386-freebsd
505 i386-linux
496 i386-netbsd
484 i386-solaris
490 ppc64le-debian12
491 ppc64le-debian14
490 riscv64-debian13
484 s390x-centos10
486 s390x-debian12
486 s390x-ubuntu2404
506 universal-darwin
492 x86_64-centos10
498 x86_64-centos7
497 x86_64-darwinlegacy
497 x86_64-debian13
499 x86_64-fedora41
499 x86_64-fedora43
505 x86_64-linux
497 x86_64-linuxmusl
494 x86_64-opensuse155
498 x86_64-opensuse156
498 x86_64-opensuse160
486 x86_64-solaris
498 x86_64-ubuntu2004
500 x86_64-ubuntu2404
495 x86_64-ubuntu2404-gcc14
500 x86_64-ubuntu2604
Total: 42 systems
Missing binaries [compared to x86_64-linux]:
aarch64-centos10 : biber biber-ms context context.lua luajithbtex luajittex luametatex mfluajit mfluajit-nowin mtxrun mtxrun.lua tex2xindy texexec texindy texluajit texluajitc texmfstart xdvipsk xindy xindy.mem xindy.run
aarch64-debian12 : biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart
aarch64-linux : biber-ms
amd64-freebsd : biber-ms context context.lua luametatex mtxrun mtxrun.lua
amd64-freebsd133 : biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart
amd64-freebsd135 : biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart
amd64-freebsd140 : asy biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart xasy
amd64-freebsd141 : biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart
amd64-freebsd142 : asy biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart xasy
amd64-freebsd143 : biber biber-ms context context.lua luajithbtex luajittex luametatex mfluajit mfluajit-nowin mtxrun mtxrun.lua texexec texluajit texluajitc texmfstart xdvipsk
amd64-freebsd143-clang : biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart
amd64-freebsd15 : biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart
amd64-ghostbsd2407 : biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart
amd64-netbsd : asy biber biber-ms
armhf-linux : asy biber biber-ms context context.lua luametatex mtxrun mtxrun.lua xasy
i386-freebsd : biber-ms context context.lua luametatex mtxrun mtxrun.lua
i386-netbsd : asy biber biber-ms context context.lua luametatex mtxrun mtxrun.lua xasy
i386-solaris : asy biber biber-ms context context.lua luajithbtex luajittex luametatex mfluajit mfluajit-nowin mtxrun mtxrun.lua tex2xindy texindy texluajit texluajitc xasy xdvipsk xindy xindy.mem xindy.run
ppc64le-debian12 : biber biber-ms context context.lua luajithbtex luajittex luametatex mfluajit mfluajit-nowin mtxrun mtxrun.lua texexec texluajit texluajitc texmfstart xdvipsk
ppc64le-debian14 : biber biber-ms context context.lua luajithbtex luajittex luametatex mfluajit mfluajit-nowin mtxrun mtxrun.lua texexec texluajit texluajitc texmfstart
riscv64-debian12 : biber biber-ms context context.lua luajithbtex luajittex luametatex mfluajit mfluajit-nowin mtxrun mtxrun.lua texexec texluajit texluajitc texmfstart xdvipsk
riscv64-debian13 : biber biber-ms context context.lua luajithbtex luajittex luametatex mfluajit mfluajit-nowin mtxrun mtxrun.lua texexec texluajit texluajitc texmfstart xdvipsk
s390x-centos10 : biber biber-ms context context.lua luajithbtex luajittex luametatex mfluajit mfluajit-nowin mtxrun mtxrun.lua tex2xindy texexec texindy texluajit texluajitc texmfstart xdvipsk xindy xindy.mem xindy.run
s390x-debian12 : biber biber-ms context context.lua luajithbtex luajittex luametatex mfluajit mfluajit-nowin mtxrun mtxrun.lua tex2xindy texexec texindy texluajit texluajitc texmfstart xindy xindy.mem xindy.run
s390x-ubuntu2404 : biber biber-ms context context.lua luajithbtex luajittex luametatex mfluajit mfluajit-nowin mtxrun mtxrun.lua tex2xindy texexec texindy texluajit texluajitc texmfstart xindy xindy.mem xindy.run
universal-darwin : xindy.mem
x86_64-centos10 : biber biber-ms context context.lua luametatex mtxrun mtxrun.lua tex2xindy texexec texindy texmfstart xindy xindy.mem xindy.run
x86_64-centos7 : biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart
x86_64-darwinlegacy : asy pdfclose pdfopen texprof texprofile xasy xdvi xdvi-xaw
x86_64-debian13 : biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart xdvipsk
x86_64-fedora41 : biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart
x86_64-fedora43 : biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart
x86_64-linuxmusl : asy biber-ms tex2xindy texindy xasy xindy xindy.mem xindy.run
x86_64-opensuse155 : asy biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart xasy
x86_64-opensuse156 : biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart
x86_64-opensuse160 : biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart
x86_64-solaris : asy biber-ms context context.lua luajithbtex luajittex luametatex mfluajit mfluajit-nowin mtxrun mtxrun.lua tex2xindy texindy texluajit texluajitc xasy xindy xindy.mem xindy.run
x86_64-ubuntu2004 : biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart
x86_64-ubuntu2404 : biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart
x86_64-ubuntu2404-gcc14 : biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart xdvipsk
x86_64-ubuntu2604 : biber biber-ms context context.lua luametatex mtxrun mtxrun.lua texexec texmfstart
The first column in the first table is the number of installed executables, and the second column is the CPU architecture, base operating system, distribution, and optional version.
Of those directories, the following are part of the pre-test installation (described below):
aarch64-linux i386-freebsd universal-darwin x86_64-linux
amd64-freebsd i386-linux windows x86_64-linuxmusl
amd64-netbsd i386-netbsd x86_64-cygwin x86_64-solaris
armhf-linux i386-solaris x86_64-darwinlegacy
Most of the others have been built at the University of Utah, almost entirely in facilities of the Department of Mathematics, and on my personal home VM cluster running with VirtManager and QEMU on top of Ubuntu 24.04. Several of those VMs emulate other CPU architectures.
Builds that lack the *xindy* files are on systems for which clisp is absent from the operating system package repositories, or has not been installed from the repositories, or has not yet been successfully built and installed locally from source code. That deficiency may be remedied if time permits.
Although some of the builds on FreeBSD and GNU/Linux systems appear to duplicate the contents of i386-freebsd, i386-linux, amd64-freebsd, and x86_64-linux, they serve two purposes: (1) demonstration of the possibility of independent builds of TeX Live at other sites and on different O/S distributions, and (2) builds on bleeding-edge O/S releases may benefit from new and improved compiler technology, and newer system libraries.
Arch Linux (arch), Artix Linux, BlackArch, ClearLinux, CentOS Stream, Fedora Rawhide (fedorarh), GUIX, Hyperbola, Kaisen, Kali, Kaos, PCLinuxOS (pclinuxos), Peppermint OS (from 2022), openSUSE Jump, openSUSE Tumbleweed, Parabola, Solus, Trident, TrueOS (trueos1806), Ubuntu RR (ubuntu-rr), and Void Linux do not have version numbers: they use a rolling-update model, and once updates have run, and if needed, the systems have been rebooted, they are at the latest available software levels.
It may also be of interest to record the library dependencies of all of the executables in one of the binary directories:
% show-lib-deps.sh $prefix/texlive/2026/bin/x86_64-ubuntu2404
Library dependencies of TeX Live executables in /usr/uumath/texlive/2026/bin/x86_64-ubuntu2404:
ld-linux-x86-64 afm2pl afm2tfm aleph amstex asy \
autosp axohelp bbox bg5conv bibtex \
bibtex8 bibtexu cef5conv cefconv \
cefsconv cfftot1 chkdvifont chktex \
csplain ctangle ctie ctwill \
ctwill-refsort ctwill-twinx cweave \
detex devnag disdvi dt2dv dv2dt \
dvi2tty dvibook dviconcat dvicopy \
dvidvi dvigif dvilj dvilj2p dvilj4 \
dvilj4l dvilj6 dvilualatex \
dvilualatex-dev dviluatex dvipdfm \
dvipdfmx dvipng dvipos dvips \
dviselect dvispc dvisvgm dvitodvi \
dvitomp dvitype eplain epsffit eptex \
etex euptex extconv gftodvi gftopk \
gftype gregorio gsftopk hbf2gf \
hilatex hishrink histretch hitex \
inimf initex jadetex kpseaccess \
kpsereadlink kpsestat kpsewhich \
lacheck latex latex-dev lollipop \
luacsplain luahbtex luajithbtex \
luajittex lualatex lualatex-dev \
luatex mag makeindex makejvf mendex \
mex mf mf-nowin mflua mflua-nowin \
mfluajit mfluajit-nowin mfplain mft \
mllatex mltex mmafm mmpfb mpost \
msxlint odvicopy odvitype ofm2opl \
omfonts opl2ofm optex otangle otfinfo \
otftotfm otp2ocp outocp ovf2ovp \
ovp2ovf patgen pbibtex pdfclose \
pdfcsplain pdfetex pdfjadetex \
pdflatex pdflatex-dev pdfmex pdfopen \
pdftex pdftosrc pdfxmltex pdvitomp \
pdvitype pfb2pfa pk2bm pktogf pktype \
platex platex-dev pltotf pmpost pmxab \
pooltype ppltotf prepmx ps2pk psbook \
psnup psresize psselect pstops ptekf \
ptex ptftopl r-mpost r-pmpost \
r-upmpost scor2prt sjisconv synctex \
t1ascii t1asm t1binary t1disasm \
t1dotlessj t1lint t1mac t1rawafm \
t1reencode t1testpage t1unmac t4ht \
tangle teckit_compile tex tex2aspc \
tex2xindy tex4ht texlua texluac \
texluajit texluajitc texprof \
texprofile texsis tftopl tie ttf2afm \
ttf2pk ttf2tfm ttfdump ttftotype42 \
twill upbibtex updvitomp updvitype \
uplatex uplatex-dev upmendex upmpost \
uppltotf uptex uptftopl utf8mex \
vftovp vlna vptovf weave wofm2opl \
wopl2ofm wovf2ovp wovp2ovf xdvi-xaw \
xdvipdfmx xelatex xelatex-dev xetex \
xindy.run xml2pmx xmltex
libGL asy
libGLX asy
libGLdispatch asy
libICE xdvi-xaw
libSM xdvi-xaw
libX11 asy inimf mf mflua mflua-nowin \
mfluajit mfluajit-nowin pdfclose \
pdfopen xdvi-xaw
libXau asy inimf mf mflua mflua-nowin \
mfluajit mfluajit-nowin pdfclose \
pdfopen xdvi-xaw
libXaw xdvi-xaw
libXdmcp asy inimf mf mflua mflua-nowin \
mfluajit mfluajit-nowin pdfclose \
pdfopen xdvi-xaw
libXext xdvi-xaw
libXmu xdvi-xaw
libXpm xdvi-xaw
libXt xdvi-xaw
libbrotlicommon asy xelatex xelatex-dev xetex
libbrotlidec asy xelatex xelatex-dev xetex
libbsd asy inimf mf mflua mflua-nowin \
mfluajit mfluajit-nowin pdfclose \
pdfopen xdvi-xaw
libbz2 xelatex xelatex-dev xetex
libc afm2pl afm2tfm aleph amstex asy autosp \
axohelp bbox bg5conv bibtex bibtex8 \
bibtexu cef5conv cefconv cefsconv \
cfftot1 chkdvifont chktex csplain \
ctangle ctie ctwill ctwill-refsort \
ctwill-twinx cweave detex devnag \
disdvi dt2dv dv2dt dvi2tty dvibook \
dviconcat dvicopy dvidvi dvigif dvilj \
dvilj2p dvilj4 dvilj4l dvilj6 \
dvilualatex dvilualatex-dev dviluatex \
dvipdfm dvipdfmx dvipng dvipos dvips \
dviselect dvispc dvisvgm dvitodvi \
dvitomp dvitype eplain epsffit eptex \
etex euptex extconv gftodvi gftopk \
gftype gregorio gsftopk hbf2gf \
hilatex hishrink histretch hitex \
inimf initex jadetex kpseaccess \
kpsereadlink kpsestat kpsewhich \
lacheck latex latex-dev lollipop \
luacsplain luahbtex luajithbtex \
luajittex lualatex lualatex-dev \
luatex mag makeindex makejvf mendex \
mex mf mf-nowin mflua mflua-nowin \
mfluajit mfluajit-nowin mfplain mft \
mllatex mltex mmafm mmpfb mpost \
msxlint odvicopy odvitype ofm2opl \
omfonts opl2ofm optex otangle otfinfo \
otftotfm otp2ocp outocp ovf2ovp \
ovp2ovf patgen pbibtex pdfclose \
pdfcsplain pdfetex pdfjadetex \
pdflatex pdflatex-dev pdfmex pdfopen \
pdftex pdftosrc pdfxmltex pdvitomp \
pdvitype pfb2pfa pk2bm pktogf pktype \
platex platex-dev pltotf pmpost pmxab \
pooltype ppltotf prepmx ps2pk psbook \
psnup psresize psselect pstops ptekf \
ptex ptftopl r-mpost r-pmpost \
r-upmpost scor2prt sjisconv synctex \
t1ascii t1asm t1binary t1disasm \
t1dotlessj t1lint t1mac t1rawafm \
t1reencode t1testpage t1unmac t4ht \
tangle teckit_compile tex tex2aspc \
tex2xindy tex4ht texlua texluac \
texluajit texluajitc texprof \
texprofile texsis tftopl tie ttf2afm \
ttf2pk ttf2tfm ttfdump ttftotype42 \
twill upbibtex updvitomp updvitype \
uplatex uplatex-dev upmendex upmpost \
uppltotf uptex uptftopl utf8mex \
vftovp vlna vptovf weave wofm2opl \
wopl2ofm wovf2ovp wovp2ovf xdvi-xaw \
xdvipdfmx xelatex xelatex-dev xetex \
xindy.run xml2pmx xmltex
libcom_err asy
libcrypto asy
libcurl asy
libexpat xelatex xelatex-dev xetex
libffcall xindy.run
libffi asy
libfontconfig xelatex xelatex-dev xetex
libfreetype xelatex xelatex-dev xetex
libgcc_s asy luajittex mfluajit mfluajit-nowin \
texluajit texluajitc
libgmp asy
libgnutls asy
libgsl asy
libgslcblas asy
libgssapi_krb5 asy
libhogweed asy
libidn2 asy
libk5crypto asy
libkeyutils asy
libkrb5 asy
libkrb5support asy
liblber asy
libldap asy
libm afm2pl afm2tfm amstex asy axohelp \
bibtexu cfftot1 csplain dvigif \
dvilualatex dvilualatex-dev dviluatex \
dvipdfm dvipdfmx dvipng dvipos dvips \
dvisvgm dvitomp eplain etex hilatex \
hishrink histretch hitex jadetex \
latex latex-dev luacsplain luahbtex \
luajithbtex luajittex lualatex \
lualatex-dev luatex mag mex mflua \
mflua-nowin mfluajit mfluajit-nowin \
mfplain mllatex mltex mmafm mmpfb \
mpost optex otfinfo otftotfm \
pdfcsplain pdfetex pdfjadetex \
pdflatex pdflatex-dev pdfmex pdftex \
pdftosrc pdfxmltex pdvitomp pmpost \
pmxab ps2pk r-mpost r-pmpost \
r-upmpost scor2prt synctex t1dotlessj \
t1lint t1rawafm t1reencode t1testpage \
texlua texluac texluajit texluajitc \
texprof texsis ttf2pk ttf2tfm \
ttftotype42 updvitomp upmendex \
upmpost utf8mex xdvi-xaw xdvipdfmx \
xelatex xelatex-dev xetex xindy.run \
xmltex
libmd asy inimf mf mflua mflua-nowin \
mfluajit mfluajit-nowin pdfclose \
pdfopen xdvi-xaw
libnettle asy
libnghttp2 asy
libp11-kit asy
libpng16 xelatex xelatex-dev xetex
libpsl asy
libreadline asy xindy.run
libresolv asy
librtmp asy
libsasl2 asy
libsigsegv asy xindy.run
libssh asy
libssl asy
libstdc++ asy
libtasn1 asy
libtinfo asy xindy.run
libtirpc asy
libunistring asy xindy.run
libuuid xdvi-xaw
libxcb asy inimf mf mflua mflua-nowin \
mfluajit mfluajit-nowin pdfclose \
pdfopen xdvi-xaw
libz asy xelatex xelatex-dev xetex
libzstd asy
linux-vdso afm2pl afm2tfm aleph amstex asy autosp \
axohelp bbox bg5conv bibtex bibtex8 \
bibtexu cef5conv cefconv cefsconv \
cfftot1 chkdvifont chktex csplain \
ctangle ctie ctwill ctwill-refsort \
ctwill-twinx cweave detex devnag \
disdvi dt2dv dv2dt dvi2tty dvibook \
dviconcat dvicopy dvidvi dvigif dvilj \
dvilj2p dvilj4 dvilj4l dvilj6 \
dvilualatex dvilualatex-dev dviluatex \
dvipdfm dvipdfmx dvipng dvipos dvips \
dviselect dvispc dvisvgm dvitodvi \
dvitomp dvitype eplain epsffit eptex \
etex euptex extconv gftodvi gftopk \
gftype gregorio gsftopk hbf2gf \
hilatex hishrink histretch hitex \
inimf initex jadetex kpseaccess \
kpsereadlink kpsestat kpsewhich \
lacheck latex latex-dev lollipop \
luacsplain luahbtex luajithbtex \
luajittex lualatex lualatex-dev \
luatex mag makeindex makejvf mendex \
mex mf mf-nowin mflua mflua-nowin \
mfluajit mfluajit-nowin mfplain mft \
mllatex mltex mmafm mmpfb mpost \
msxlint odvicopy odvitype ofm2opl \
omfonts opl2ofm optex otangle otfinfo \
otftotfm otp2ocp outocp ovf2ovp \
ovp2ovf patgen pbibtex pdfclose \
pdfcsplain pdfetex pdfjadetex \
pdflatex pdflatex-dev pdfmex pdfopen \
pdftex pdftosrc pdfxmltex pdvitomp \
pdvitype pfb2pfa pk2bm pktogf pktype \
platex platex-dev pltotf pmpost pmxab \
pooltype ppltotf prepmx ps2pk psbook \
psnup psresize psselect pstops ptekf \
ptex ptftopl r-mpost r-pmpost \
r-upmpost scor2prt sjisconv synctex \
t1ascii t1asm t1binary t1disasm \
t1dotlessj t1lint t1mac t1rawafm \
t1reencode t1testpage t1unmac t4ht \
tangle teckit_compile tex tex2aspc \
tex2xindy tex4ht texlua texluac \
texluajit texluajitc texprof \
texprofile texsis tftopl tie ttf2afm \
ttf2pk ttf2tfm ttfdump ttftotype42 \
twill upbibtex updvitomp updvitype \
uplatex uplatex-dev upmendex upmpost \
uppltotf uptex uptftopl utf8mex \
vftovp vlna vptovf weave wofm2opl \
wopl2ofm wovf2ovp wovp2ovf xdvi-xaw \
xdvipdfmx xelatex xelatex-dev xetex \
xindy.run xml2pmx xmltex
xz-compressed tar files for each of the binary trees can be found here. They are about 60% of the size of corresponding gz-compressed files, both at maximal compression level -9. They would normally be unpacked in the directory path /path/to/texlive/2026/bin. After installing them, it is likely necessary to update the TeX preloaded memory-image files, *.fmt, by running the command ./fmtutil-sys --all in the just-unpacked directory. Those files are TeX-Live-release dependent, but platform-independent, so if you unpack multiple binary trees that are shared across different systems, you only need to regenerate them once.
Especially on virtual machines, creation of the *.fmt files can be a slow process, taking an hour or more to run. Consequently, for TeX Live 2026, we provide them in a bundle, suitable for unpacking in your top-level /path/to/texlive/2026 directory. Compression reduces the bundle from about 127MB to 80MB: the latest version here is bin/fmt-2026-01-20.tar.xz. Despite the filename, which is chosen simply to record its creation date (YYYY-MM-DD), the contents unpack into texmf-var/web2c in the current directory. Their papersize is set to letter, suitable for sites in the USA, but likely wrong for most other countries.
The binary format files that contain precompiled macros for various engines based on TeX sometimes contain settings for the local paper size, notably, those engines that can produce PDF output. Therefore, before you run fmtutil-sys, run whichever of these is suitable for your site:
% tlmgr paper a4 # for European A4 paper (210mm × 297mm ~= 8.27in × 11.69in)
% tlmgr paper letter # for US letter A paper (8.5in × 11in ~= 216mm × 279mm)
For more on the problems of configuring a default paper size for TeXware, see the document section Page layout and document printing.
TeX Live executables can often be shared with O/S releases of higher levels, and binaries for the oldest GNU/Linux release have a good chance of running on other GNU/Linux distributions for the same CPU family. That works as long as Linux kernel and system library versions are upward compatible. Thus, a CentOS 6 binary can likely run on CentOS 7, CentOS 8, CentOS 9, and CentOS 10, but also on Alma, Debian, Devuan, EuroLinux, Navy, openSUSE, Red Hat, Rocky, Scientific Linux, Springdale, Ubuntu, VZLinux, and hundreds of other Linux distributions. Similarly, Solaris 10 binaries run just fine on Solaris 11. FreeBSD binaries are often usable on ArisbluBSD, ClonOS, FreeNAS, FuryBSD, GhostBSD, HardenedBSD, KFreeBSD, MidnightBSD, NomadBSD, OPNsense, PacBSD, PC-BSD, Trident, and TrueOS.
Once an installation is complete for a given platform, a user can switch to it by executing one of these scripts:
### assume prefix=/usr/local (but trivially changeable at each site)
### csh and tcsh login shells
source $prefix/skel/SYS.texlive-2026.csh
### ash, bash, dash, ksh, pdksh, sh, and sh login shells
### (POSIX-compliant, or supersets thereof)
. $prefix/skel/SYS.texlive-2026.sh
Those scripts redefine certain TeXware environment values to new ones suitable for use with TeX Live, and they reset the PATH to put the 2026 release first, ahead of any local, older TeX Live, or vendor-supplied installations of TeX.
An installed TeX Live 2026 tree with all available packages, and binaries for one O/S architecture, requires about 8GB of disk space. It contains about 17_750 directories and 264_000 files. Smaller storage totals are possible with the installer programs in the official TeX Live 2026 ISO image, which allow you to choose subsets for your local site.
However, if you run TeX Live updates after your initial installation, storage needs grow because copies of old files are preserved in the tlpkg/backups directory tree. At our site, where we run updates every week or two, the backups over the last 11 years have averaged about 3GB/year, with a peak of 6GB in 2016.
Building TeX Live 2026 requires primarily source code, rather than macro packages and fonts: about 2GB of storage suffices for a build on most platforms.
Fortunately, computer storage costs continue to drop. In early 2025 on the US market, spinning magnetic disks cost about US$17 per terabyte, solid-state disks (SSDs) cost about US$25 per terabyte, and NVMe M.2 Gen4 cards about US$75 per terabyte. Thus, storage of a full TeX Live 2026 tree costs between US$0.14 and US$0.59, similar to that for stamps on a traditional postal letter, and less than a typical cafe beverage.
The economic realities of the computer market today, and knowledge of resource growth from computer history, suggest that it is better to spend money on more, and faster, storage, internal memory (DRAM), and more CPU cores, than it is to pay premium prices for higher CPU clock speeds. Most personal computers, from mobile devices to laptops to desktops, are idle much of the time.
The master TeX Live repository is located in Germany, but there may be a repository mirror with higher data transfer rates that is closer to you.
For example, to change your default repository to the North American master mirror in Utah, run this command:
% tlmgr option repository http://ctan.math.utah.edu/tex-archive/systems/texlive/tlnet
To switch back to the German master site, run this command:
% tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet
That chooses a mirror site that is `near' you. It is likely to differ on successive updates, due to network traffic and machine load.
Once a repository has been chosen, your TeX Live installation remembers the setting, so the sample commands above are likely to be needed only once a year, unless you travel a lot with TeX Live on a mobile device, in which case the German master is likely your best choice.
If you have reason to suspect that your chosen TeX Live mirror is out of date, check its status at the CTAN monitoring site.
You can find a long list of CTAN mirror sites here.
The official description of installing the TeX Live 2026 pre-test is found here. However, because that document doesn't show explicit examples, it may leave the human puzzled as to which repository to choose. I recorded these steps that produce a working installation using the Utah mirror:
### Move to a temporary directory
$ cd /path/to/suitable/temporary/directory
### During the pretest period, fetch the small (6MB) installer bundle
$ wget http://www.math.utah.edu/pub/texlive/tlpretest/install-tl-unx.tar.gz
### After the official release of TeX Live 2026 on ??-Mar-2026, use instead
$ wget http://ctan.math.utah.edu/tex-archive/systems/texlive/tlnet/install-tl-unx.tar.gz
### If wget is not available on your system, use
$ curl http://www.math.utah.edu/pub/texlive/tlpretest/install-tl-unx.tar.gz > install-tl-unx.tar.gz
### If curl is not available on your system, use
$ ncftpget ftp://ftp.math.utah.edu/pub/texlive/tlpretest/install-tl-unx.tar.gz
### If curl, ncftpget, and wget are not available on your system,
### download the URL with any Web browser
### Unpack the installer bundle
$ tar xf install-tl-unx.tar.gz
### Move to the just-unpacked installer directory
### [WARNING: the year-month-day numeric suffix changes daily]
$ cd install-tl-20260204
### Start the work, using the Utah mirror
$ ./install-tl --repository http://www.math.utah.edu/pub/texlive/tlpretest/
### or, to change the default paper type
$ ./install-tl --paper=letter --repository http://www.math.utah.edu/pub/texlive/tlpretest/
### or, for a no-questions-asked installation at the Utah test site
$ ./install-tl --no-interaction \
--paper=letter \
--repository http://www.math.utah.edu/pub/texlive/tlpretest \
--scheme=scheme-basic \
--texdir=/usr/uumath/texlive/2026
The text-mode installer normally asks a few questions. I selected all binary platforms (because our servers supply them to numerous clients of varying operating systems and CPU types), picked the full installation scheme, provided the location of the installation tree, chose a suitable local paper type, and then typed I to begin the automatic installation of 7912 packages. That step took 42 minutes on a physical machine, or about 170 packages per minute. The installation creates about 17_750 directories and 264_000 files.
The newly installed tree takes about 12GB of filesystem space, with executables for 13 platforms in the bin subdirectory. That subdirectory takes 2.3GB of space, so a typical installation with just one platform directory would need about 10GB of space. However, the space requirements increase with each subsequent update with tlmgr, because it normally saves previous versions, to allow package rollback if a problem is detected.
To verify the above experience, the next day, I redid the installation on a virtual machine running FreeBSD 13 with ZFS. This time, I selected just the default platform package. There were 3978 packages installed in 36 minutes, or 110 packages per minute. Packages per minute rates on other installations for the 2020 installation are:
As a further experiment, on a VM running GhostBSD 24.01, I did an install with the basic scheme (plain and latex). Including the interactive part, where I selected installation location and paper size, it took 2 minutes and 40 seconds, installed 123 packages, and used just 265MB of disk space for the TeX Live 2026 tree. There are 843 directories and 7442 files. The bin/amd64-freebsd/ directory has 59 executable files, or about 12% of the normal number in a full installation.
Every few days, I update my TeX Live 2026 pre-test installation tree like this on an Ubuntu 24.04 workstation:
$ PATH=/path/to/texlive/2026/bin/x86_64-linux-ubuntu2404:$PATH
$ export PATH
### Update TeX Live Manager itself (this usually does nothing)
$ tlmgr update --self
### Update TeX Live 2026 tree
$ tlmgr update --all
Obviously, those commands are good candidates for hiding in a wrapper script. If you add an invocation of that script to your crontab(1) file, it then runs automatically at intervals that you specify in that file, and sends its output in e-mail to you.
Here is a sample crontab file entry that does just that, dispensing with a wrapper script, and running the update every Sunday morning at 3:15am local time (the #-initiated comments are part of my crontab file as a reminder of the field order and meaning):
# 00-59 00-23 01-31 01-12 0-6(0=Sunday)
# mm hh dd mon weekday command
15 3 * * 0 ( PATH=/path/to/texlive/2026/bin/x86_64-linux:/bin:/usr/bin ; export PATH ; tlmgr update --self ; tlmgr update --all )
Change the weekday field from 0 to * to make the job run daily. Change it to 1,3,5 to run it Monday, Wednesday, and Friday. Such jobs are usually best run at off-peak hours at both your site, and the repository site. Our site in Utah is on US Mountain Time (UTC/GMT - 6 hours in summer, UTC/GMT - 7 hours in winter). The TUG master site in Germany, is on Central European Time (UTC/GMT + 2 hours in summer, UTC/GMT + 1 hour in winter).
As of your last browser refresh of this Web page, the time in Salt Lake City is Tuesday, 24-Feb-2026 15:49:35 MST .
The script that we use at Utah for TeX Live updates is available here. It contains a comment header that includes reminders of how to select the repository during both pre-test and post-release times.
Once a new TeX Live release has been announced and installed on your system, the tlmgr command requires that the package repository correspond to the release year.
Some sites find it desirable to maintain older TeX Live installations, and depending on the chosen mirror, packages may be available for years back to about 1996. Here is how to pick an old repository at the Utah mirror, which has TeX Live years 2010 forward:
$ tlmgr option repository https://www.math.utah.edu/pub/texlive/historic/systems/texlive/2017/tlnet-final
$ tlmgr install package-name(s)
The PATH must, of course, be chosen so that tlmgr is the one for the selected year of 2017.
Prior to attempting a build of TeX Live 2026, you should first ensure that your system packages are up-to-date, using either a system GUI that offers easy-to-use package management, or whatever package manager your system offers. Common choices are dnf or yum in the CentOS / Fedora / Red Hat Linux family, apt-get in the Debian and Ubuntu Linux family, pkg in DragonFlyBSD and the FreeBSD family, pkg_add in NetBSD and OpenBSD, pkg and pkgutil in the Hipster / OpenIndiana / Solaris family, sisyphus in Redcore Linux, slapt-get in Salix Linux, slackpkg in Slackware Linux, xbps-install in Void Linux, zypper in openSUSE Linux, and likely dozens of other package management systems in the 1000+ Linux distributions that are available.
Next, you should ensure that you have installed a fairly recent version of the GNU C/C++ compilers: generally, version 8 or later (gcc-15.2.0 is the latest official release in 2026, although weekly snapshots for gcc-16 have been available since May 2025). Versions 7 and earlier of those compilers lack features of recent ISO Standards for C++ that are required by several of the packages within TeX Live. Building TeX Live 2026 needs support for C++ 2017 (clang and gcc option -std=c++17 or -std=gnu++17). In 2024, we only needed support for C++ 2014.
You should also install recent versions of lua, perl, and python, as well as the developer versions (libraries plus C/C++ header files) of the readline, X11, Xaw, and Xaw3d libraries.
The fontconfig-devel package is required to build xetex.
Ghostscript must be a version 10.04 or later.
GNU make is required for building the freetype package. Other Unix make implementations may suffice for the rest of the build.
The texinfo package supplies the executables makeinfo, pdftexi2dvi, pod2texi, texi2any, texi2dvi, texi2pdf, texindex, and txixml2texi. Of those, at least makeinfo is needed to build Asymptote. Regrettably, the several members of the Red Hat GNU/Linux family fail to provide a package for texinfo, so it must be built and installed from source code on those systems.
To build the multilingual document indexing program, xindy, you need the clisp Common Lisp system. While many O/S distributions have packages for it, some lack it entirely: notably, the CentOS / Red Hat Linux family, and the Hipster / OpenIndiana / Solaris family. To build clisp, you also need the libffcall, libsigsegv, and libunistring package. If the configure script for clisp does not find needed packages, it pauses with instructions for how to fetch source distributions and build temporary versions of them in the clisp build tree.
The Asymptote graphics language and drawing program is the most challenging to support, because it has many dependent packages, although most of them are optional, albeit recommended to maximize the features and power of Asymptote. From a run of the configure script for that system, I recorded this list:
================================================================
Asymptote has more features when additional packages are already
installed on the build host:
boehm-gc [STRONGLY recommended]
fftw-devel [version 3.0 or later]
freeglut-devel [for -lglut]
git
glm-devel [for -lgl and WebGL support]
ghostscript [version 9.55 or later]
gsl-devel [for -lgsl]
libcurl-devel [for -lcurl]
libtool
libglvnd-devel [for -lGL]
libsigsegv-devel [for -lsigsegv]
libtirpc-devel [or rpc, or grpc, or netrpc, or sunrpc]
libX11-devel [for -lX11]
libXau-devel [for -lXau]
libXext-devel [for -lXext]
ncurses-devel [for -lncurses]
readline-devel [for -lhistory and -lreadline]
python38 [or any 3.x or later]
zlib [for -lz]
See source/utils/asymptote/asymptote.spec for a detailed list.
Package names are operating system dependent, so some
searching may be needed to find equivalents on your system.
================================================================
In the initial setup for Alpine Linux systems that are used for software build testing, I install this large set of packages:
### Install this package to get /usr/bin/script for
### later logging of system updates:
# apk add util-linux-misc
### Then add these packages:
# apk add autoconf
# apk add automake
# apk add bash
# apk add binutils
# apk add bison
# apk add build-base
# apk add bzip2
# apk add clang
# apk add clang20-extra-tools # NB: match version number 20 to that of default clang!
# apk add cmake
# apk add coreutils
# apk add cvs
# apk add curl
# apk add curl-dev
# apk add doas-sudo-shim
# apk add elinks
# apk add expect
# apk add findutils
# apk add flex
# apk add flex-dev
# apk add flex-libs
# apk add fontconfig-dev
# apk add freetype-dev
# apk add fftw-dev
# apk add gawk
# apk add gcc
# apk add gcc-gnat
# apk add gcc-go
# apk add gcc-java
# apk add gdb
# apk add gfortran
# apk add ghostscript-dev
# apk add ghostscript-fonts
# apk add git
# apk add gmp-dev
# apk add gnupg
# apk add grep
# apk add groff
# apk add guile-dev
# apk add gzip
# apk add imagemagick
# apk add imake
# apk add libffi-dev
# apk add libunistring
# apk add libunistring-dev
# apk add libx11
# apk add libx11-dev
# apk add libxaw
# apk add libxaw-dev
# apk add libxcb
# apk add libxcb-dev
# apk add libxi
# apk add libxi-dev
# apk add links
# apk add lynx
# apk add lzip
# apk add lzo
# apk add mariadb-client
# apk add mawk
# apk add mercurial
# apk add mesa
# apk add mesa-dev
# apk add mesa-gl
# apk add mksh
# apk add mpc1-dev
# apk add mpfr-dev
# apk add nano
# apk add poppler-dev
# apk add poppler-utils
# apk add postgresql
# apk add readline-dev
# apk add readline-static
# apk add rsync
# apk add rust
# apk add sqlite
# apk add subversion
# apk add sudo
# apk add tar
# apk add texinfo
# apk add tk-dev
# apk add util-linux-misc
# apk add xauth
# apk add xxhash
# apk add xz
# apk add zip
# apk add zstd
# apk add zstd-dev
For TeX Live 2026 builds on Alpine Linux distributions, I install these extra packages:
# apk add boost-dev
# apk add curl
# apk add curl-dev
# apk add fftw
# apk add glslang
# apk add glslang-dev
# apk add libcurl
# apk add libltdl
# apk add libtool
# apk add xcb-util
# apk add xcb-util-dev
For TeX Live 2026 builds on ClearLinux, I install these extra packages:
# swupd bundle-add devpkg-boost
# swupd bundle-add devpkg-fftw
# swupd bundle-add devpkg-glm
# swupd bundle-add devpkg-libffi
# swupd bundle-add devpkg-ncurses
# swupd bundle-add doxygen
# swupd bundle-add runtime-libs-boost
# swupd bundle-add sysadmin-basic-dev
When I create a new virtual machine in the Debian or Ubuntu families, I want to have support for the X11 Window System, and compilers for several major programming languages. Here is a typical initial package installation:
# apt-get install -y --ignore-missing \
a2ps aptitude ash autoconf autoconf-archive autogen \
automake bison bmake build-essential byacc bzip2 bzr \
clang clang-{14,17,18,19} clisp cmake curl cvs dash \
dejagnu diffpdf ecl epstool evince expect fig2dev figlet \
file flex fontconfig-dev gawk gcc-{11,12,13,14,15} gccgo-12 \
gcl gdc-14 gfortran-14 ghostscript-x git gm2-14 gnupg \
gnupg1 golang graphicsmagick guile-2.2 guile-3.0 \
imagemagick jnettop julia ksh lftp libcairo2-dev \
libdbus-1-dev libffcall-dev libffi-dev libfftw3-bin \
libfftw3-dev libfreetype-dev libgconf2-dev libgif-dev \
libgmp3-dev libgnutls28-dev libgpm-dev libjpeg-dev \
liblcms2-dev libm17n-dev libmpc-dev libmpfr-dev \
libotf-dev libreadline-dev librsvg2-dev libsigsegv-dev \
libtiff5-dev libunistring-dev libxaw7-dev libxaw3dxft8-dev \
libxml2-dev libxmu-dev libzstd-dev libzstd1 locate \
lua5.4 lzip lzma lzop m4 make mariadb-client mawk \
mercurial mksh mupdf ncftp net-tools openjdk-17-jdk \
openssh-client openssh-server pdfgrep poppler-utils \
postgresql-client qpdf rcs rsync rustc sbcl sqlite3 \
subversion sudo tcc tcl8.6-dev tcsh time tk8.6-dev unzip \
wget whois xaw3dg-dev xxhash xz-utils yaz zile zip zsh \
zst zstd
## Only if available in the package system:
apt-get install -y --ignore-missing texlive-full
Installing the package system's version of TeX Live is convenient, because it brings in numerous dependent libraries that I do not have to identify by tedious manual experiment.
For TeX Live 2026 builds on Debian 12, Ubuntu 20, and Ubuntu 24 releases, to get maximal library support for Asymptote, I install these additional packages:
# apt-get install -y --ignore-missing clisp
# apt-get install -y --ignore-missing doxygen
# apt-get install -y --ignore-missing freeglut3-dev
# apt-get install -y --ignore-missing glslang-dev
# apt-get install -y --ignore-missing glslang-tools
# apt-get install -y --ignore-missing gsl-bin
# apt-get install -y --ignore-missing libasn1-8-heimdal
# apt-get install -y --ignore-missing libasn1-8t64-heimdal
# apt-get install -y --ignore-missing libboost-dev
# apt-get install -y --ignore-missing libboost-filesystem-dev
# apt-get install -y --ignore-missing libboost-thread-dev
# apt-get install -y --ignore-missing libc6-dev
# apt-get install -y --ignore-missing libcrypt1-dev
# apt-get install -y --ignore-missing libcurl4-openssl-dev
# apt-get install -y --ignore-missing libeigen3-dev
# apt-get install -y --ignore-missing libfftw3-dev
# apt-get install -y --ignore-missing libgc
# apt-get install -y --ignore-missing libgc-dev
# apt-get install -y --ignore-missing libglew-dev
# apt-get install -y --ignore-missing libglewmx-dev
# apt-get install -y --ignore-missing libglm-dev
# apt-get install -y --ignore-missing libglx-dev
# apt-get install -y --ignore-missing libgsl-dev
# apt-get install -y --ignore-missing libharfbuzz-dev
# apt-get install -y --ignore-missing libgssapi3-heimdal
# apt-get install -y --ignore-missing libheimbase1-heimdal
# apt-get install -y --ignore-missing libheimntlm0-heimdal
# apt-get install -y --ignore-missing libhx509-5-heimdal
# apt-get install -y --ignore-missing libltdl-dev
# apt-get install -y --ignore-missing libopengl-dev
# apt-get install -y --ignore-missing libreadline-dev
# apt-get install -y --ignore-missing libroken18-heimdal
# apt-get install -y --ignore-missing libroken19-heimdal
# apt-get install -y --ignore-missing libroken19t64-heimdal
# apt-get install -y --ignore-missing libsigsegv-dev
# apt-get install -y --ignore-missing libsqlite3-dev
# apt-get install -y --ignore-missing libtirpc-dev
# apt-get install -y --ignore-missing libtool
# apt-get install -y --ignore-missing libtool-bin
# apt-get install -y --ignore-missing libunicode-collate-perl
# apt-get install -y --ignore-missing libunistring-dev
# apt-get install -y --ignore-missing libwind0-heimdal
# apt-get install -y --ignore-missing libxaw3dxft-dev
# apt-get install -y --ignore-missing libxaw7
# apt-get install -y --ignore-missing libxaw7-dev
# apt-get install -y --ignore-missing libxcb1-dev
# apt-get install -y --ignore-missing libxi-dev
# apt-get install -y --ignore-missing libzstd-dev
# apt-get install -y --ignore-missing pyqt5-dev
# apt-get install -y --ignore-missing pyqt5-dev-tools
# apt-get install -y --ignore-missing subversion
# apt-get install -y --ignore-missing texinfo
# apt-get install -y --ignore-missing zst
# apt-get install -y --ignore-missing zstd
When Asymptote is in the Debian package system, it is possible to install its needed packages automatically, as long as access to Debian sources is configured in /etc/apt/sources.list with lines like this:
deb-src http://mirrors.ocf.berkeley.edu/debian/ forky main
deb-src http://mirrors.ocf.berkeley.edu/debian/ forky-updates main
where fields 2 and 3 depend on the chosen mirror, and the codename of the Debian release (here, forky is version 14), or in a newer format in /etc/apt/sources.list.d/ubuntu.sources with blocks like this:
Types: deb deb-src
URIs: http://us.archive.ubuntu.com/ubuntu/
Suites: noble noble-updates noble-backports noble-proposed
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Types: deb deb-src
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Here, noble is the Ubuntu code name for version 24.
You can then install all of the packages needed for a source build of Asymptote like this:
# apt build-dep asymptote
If you use that approach to install packages, make sure to adjust those files to match your machines's O/S version code name!
On new FreeBSD systems, I install an extensive set of base packages, such as this list for the FreeBSD 14.3 release of 10 June 2025 (NB: embedded trailing version numbers on package names may require updates to get the latest version):
# pkg install pkg
### NB: edit 3 reported lines in /usr/local/etc/pkg.conf after this
# pkg install pkg-provides
### update database of package contents
# pkg provides -u
### create local list of all available packages
# pkg search '^[A-Za-z]*' | sort > /var/tmp/pkg.search
# pkg install -y \
emacs gcc6-aux gcc14 gcc14-devel go124 \
mariadb114-client mysql91-client nano openjdk24 \
postgresql17-client rsync sudo zile
# pkg install -y texlive-full
### This is in amd64, but not yet in arm64:
# pkg install -y gcc15-devel
# pkg install -y
autoconf automake bash binutils bison clisp cmake \
coreutils curl cvs dash diffutils elinks emacs \
emacs-devel evince expat expect findutils flex freeglut \
freetype2 freetype-gl freetype-gl gawk gdb getopt \
giflib git glew gmake gmp gnupg gnuplot gnutls gpgme \
groff gsed gsl gtar guile2 gwhich hunspell iconv \
iconv-extra isl jed jove ksh93 lftp libffcall libiconv \
links llvm-devel lua54 lynx lzip lzma lzo2 lzop \
m17n-lib m4 mawk mercurial mksh mpc mpfr mpz nawk ncftp \
ncurses netrik pcre2 pdfgrep pdksh poppler \
poppler-utils psutils pth qpdf rcs readline rsync rust \
shrinkpdf sqlite3 subversion sudo tcl90 texinfo tiff \
tk90 unzip unzoo utf8proc vile vim w3m wget whois xvile \
yaz zile zip zoo zsh zstd zutils
For TeX Live 2026 builds on the FreeBSD family and its descendants, which include DragonFlyBSD, GhostBSD, HardenedBSD, HelloSystem, MidnightBSD, and others, to get maximal library support for Asymptote, I install these additional packages:
# pkg install -y asymptote
# pkg install -y boost-all
# pkg install -y clisp
# pkg install -y cmake
# pkg install -y doxygen
# pkg install -y eigen
# pkg install -y fontconfig
# pkg install -y freeglut
# pkg install -y glew
# pkg install -y glm
# pkg install -y glx-utils
# pkg install -y heimdal
# pkg install -y heimdal-devel
# pkg install -y libGLU
# pkg install -y libsigsegv
# pkg install -y libtool
# pkg install -y p5-Unicode-Collate
# pkg install -y pkgconf
# pkg install -y py311-qt5-pyqt
# pkg install -y python3
# pkg install -y texinfo
For NetBSD, I install these additional packages:
# pkg_add boehm-gc
# pkg_add clisp
# pkg_add cmake
# pkg_add curl
# pkg_add eigen3
# pkg_add fftw
# pkg_add gsl
# pkg_add libsigsegv
# pkg_add libXaw
# pkg_add libXaw3d
# pkg_add libXaw3dXft
# pkg_add python312
# pkg_add py312-pygls
# pkg_add tex-texinfo
When I create a new OpenBSD system, here is a list of packages that I install, to support software development and testing of many different packages beyond TeX Live:
# pkg_add coreutils emacs findutils gmake gsed gtar ncftp rsync
# pkg_add sudo tcsh zile
# pkg_add clang pcc tcc
# pkg_add Xaw3d XawMu a2ps arpack autoconf autogen automake bison \
blas bzip2 bzr cblas clisp cmake coreutils curl ecl evince \
expect ffcall figlet fpc freetype gawk gcc-libs gforth \
ghostscript ghostscript-fonts git gmp gmpc gnat gnupg \
gnuplot go grcs guile guile2 hdf5 imake jdk jed jnettop joe \
jove lapack lftp libffi libsigsegv libtool libunistring \
libxml llvm locate lzip lzma lzop m4 mariadb-client mawk \
maxima mercurial mpc mpfr mupdf nano octave pari pdfgrep \
pico poppler-utils postgresql-client py-scipy \
py3-beautifulsoup4 py3-contourpy py3-matplotlib py3-numpy \
py3-scipy qpdf rust sbcl sharutils sqlite3 subversion \
suitesparse tcl tk transfig unzip wget xxhash xpdf xz yaz \
zile zip zoo zstd
# pkg_add p5-Data-Dumper-Concise p5-Data-Dumper-Simple \
p5-LaTeX-Encode p5-Encode-Locale p5-Encode-Detect \
p5-Text-Unidecode p5-Unicode-String p5-Unicode-Map \
p5-Unicode-Map8
### Optional, but handy for TeX Live builds, because it
### installs many package dependents:
# pkg_add texlive_texmf-full
The pkg_add command frequently asks for a choice among several different versions of requested packages. For gcc, both version 8 and version 11 packages are available, but it is critical to choose version 8. The reason is that many of the other installed packages depend on gcc-8 compilers, and conflicts arise if gcc-11 versions are installed. This should not be the case: both clang and gcc are carefully designed to allow multiple versions to coexist on the same system, each residing in its own directory tree.
For TeX Live 2026 on OpenBSD, I install these additional packages (some are unavailable in OpenBSD 7.4 and earlier):
# pkg_add boehm-gc
# pkg_add clisp
# pkg_add curl
# pkg_add eigen3
# pkg_add fftw3
# pkg_add glslang
# pkg_add gsl
# pkg_add libsigsegv
# pkg_add texinfo
For Alma / CentOS / EuroLinux / Fedora / Navy / Red Hat / Rocky / Springdale / VZLinux / … distributions, I install these extra packages (NB: older versions of dnf do not recognize the --skip-unavailable option: just remove it for them):
### One or the other of these should provide /usr/bin/script for session logging
# dnf install --skip-broken --skip-unavailable -y util-linux
# dnf install --skip-broken --skip-unavailable -y util-linux-script
# dnf install --skip-broken --skip-unavailable -y boost-devel
# dnf install --skip-broken --skip-unavailable -y boost-filesystem
# dnf install --skip-broken --skip-unavailable -y boost-thread
# dnf install --skip-broken --skip-unavailable -y clisp
# dnf install --skip-broken --skip-unavailable -y clisp-devel
# dnf install --skip-broken --skip-unavailable -y cmake
# dnf install --skip-broken --skip-unavailable -y doxygen
# dnf install --skip-broken --skip-unavailable -y eigen3-devel
# dnf install --skip-broken --skip-unavailable -y fftw
# dnf install --skip-broken --skip-unavailable -y fftw-devel
# dnf install --skip-broken --skip-unavailable -y freeglut
# dnf install --skip-broken --skip-unavailable -y freeglut-devel
# dnf install --skip-broken --skip-unavailable -y glm-devel
# dnf install --skip-broken --skip-unavailable -y glslang-devel
# dnf install --skip-broken --skip-unavailable -y glx-utils
# dnf install --skip-broken --skip-unavailable -y gsl-devel
# dnf install --skip-broken --skip-unavailable -y libcurl
# dnf install --skip-broken --skip-unavailable -y libcurl-devel
# dnf install --skip-broken --skip-unavailable -y fftw
# dnf install --skip-broken --skip-unavailable -y fftw-devel
# dnf install --skip-broken --skip-unavailable -y libGLEW
# dnf install --skip-broken --skip-unavailable -y libltdl-dev
# dnf install --skip-broken --skip-unavailable -y libpkgconf
# dnf install --skip-broken --skip-unavailable -y libsigsegv-devel
# dnf install --skip-broken --skip-unavailable -y libsigsegv-static
# dnf install --skip-broken --skip-unavailable -y libsqlite3x-devel
# dnf install --skip-broken --skip-unavailable -y libtirpc
# dnf install --skip-broken --skip-unavailable -y libtirpc-devel
# dnf install --skip-broken --skip-unavailable -y libtool
# dnf install --skip-broken --skip-unavailable -y libtool-bin
# dnf install --skip-broken --skip-unavailable -y libtool-ltdl
# dnf install --skip-broken --skip-unavailable -y libtool-ltdl-devel
# dnf install --skip-broken --skip-unavailable -y libunistring-devel
# dnf install --skip-broken --skip-unavailable -y libXaw-devel
# dnf install --skip-broken --skip-unavailable -y libXi-devel
# dnf install --skip-broken --skip-unavailable -y libzs
# dnf install --skip-broken --skip-unavailable -y libzstd-devel
# dnf install --skip-broken --skip-unavailable -y libzstd-static
# dnf install --skip-broken --skip-unavailable -y mesa-libEGL-devel
# dnf install --skip-broken --skip-unavailable -y mesa-libGL
# dnf install --skip-broken --skip-unavailable -y mesa-libGL-devel
# dnf install --skip-broken --skip-unavailable -y mesa-libGLU
# dnf install --skip-broken --skip-unavailable -y mesa-libGLU-devel
# dnf install --skip-broken --skip-unavailable -y mesa-libGLw-devel
# dnf install --skip-broken --skip-unavailable -y mesa-libOpenCL-devel
# dnf install --skip-broken --skip-unavailable -y mesa-libOSMesa-devel
# dnf install --skip-broken --skip-unavailable -y perl-Unicode-Collate
# dnf install --skip-broken --skip-unavailable -y "perl(LWP)"
# dnf install --skip-broken --skip-unavailable -y pkgconf
# dnf install --skip-broken --skip-unavailable -y python3-pyqt5-sip
# dnf install --skip-broken --skip-unavailable -y subversion
# dnf install --skip-broken --skip-unavailable -y texinfo
# dnf install --skip-broken --skip-unavailable -y Xaw3d-devel
# dnf install --skip-broken --skip-unavailable -y xcb-util
# dnf install --skip-broken --skip-unavailable -y xcb-util-devel
# dnf install --skip-broken --skip-unavailable -y xcb-util-xrm-devel
# dnf install --skip-broken --skip-unavailable -y zlib-devel
# dnf install --skip-broken --skip-unavailable -y zstd
## For additional C/C++ compilers:
# dnf install --skip-broken --skip-unavailable -y gcc-toolset-12-gcc
# dnf install --skip-broken --skip-unavailable -y gcc-toolset-12-gcc-c++
# dnf install --skip-broken --skip-unavailable -y gcc-toolset-13-gcc
# dnf install --skip-broken --skip-unavailable -y gcc-toolset-13-gcc-c++
# dnf install --skip-broken --skip-unavailable -y gcc-toolset-14-gcc
# dnf install --skip-broken --skip-unavailable -y gcc-toolset-14-gcc-c++
The package offerings on this O/S family are conservative. We generally also install access to the Extra Packages for Enterprise Linux (EPEL) repository via the epel-release package: it roughly triples the number of available packages.
The Gentoo ancestor of Redcore Linux installs almost all packages by local compilation from source code, making system updates a painfully slow process. Redcore improves on that by supplying pre-built versions of many packages, but still installs some from source code. When that is necessary, it reports that the installation must be retried with the --ebuild option. Here are the commands to install additional packages needed for a TeX Live build on Redcore Linux, which does not supply TeX in its package system:
### A clisp installation fails during a build as root unless
### this variable is set during the build:
# export FORCE_UNSAFE_CONFIGURE=1
# sisyphus install --ebuild clisp
# unset FORCE_UNSAFE_CONFIGURE
# sisyphus install --ebuild libXaw3d
# sisyphus install --ebuild libXaw3dXft
# sisyphus install --ebuild lzip
# sisyphus install autoconf
# sisyphus install automake
# sisyphus install boost
# sisyphus install curl
# sisyphus install cmake
# sisyphus install eigen
# sisyphus install fftw
# sisyphus install glew
# sisyphus install glm
# sisyphus install glslang
# sisyphus install gsl
# sisyphus install harfbuzz
# sisyphus install libXaw
# sisyphus install libXi
# sisyphus install libgcrypt
# sisyphus install libtool
# sisyphus install mpfr
# sisyphus install pyqt5
# sisyphus install qtopengl
# sisyphus install readline
# sisyphus install subversion
# sisyphus install texinfo
# sisyphus install zstandard
# sisyphus install zstd
When I create a new Solaris (or OpenIndiana or Hipster) system, here is a list of packages that I install, to support software development and testing of many different packages beyond TeX Live:
# pkg install compress/xz
# pkg install compress/zstd
# pkg install crypto/gnupg
# pkg install developer/base-developer-utilities
# pkg install developer/build/autoconf
# pkg install developer/build/automake
# pkg install developer/build/gnu-make
# pkg install developer/build/libtool
# pkg install developer/build/make
# pkg install developer/gcc-14
# pkg install developer/gnu-binutils
# pkg install developer/lexer/flex
# pkg install developer/llvm/clang
# pkg install developer/macro/gnu-m4
# pkg install developer/parser/bison
# pkg install image/library/libjpeg
# pkg install image/library/libpng16
# pkg install image/library/librsvg
# pkg install image/library/libtiff
# pkg install library/fftw-3
# pkg install library/libffi
# pkg install library/libsigsegv
# pkg install library/libtool/libltdl
# pkg install library/ncurses
# pkg install library/readline
# pkg install library/zlib
# pkg install runtime/lua
# pkg install runtime/python-311
# pkg install system/library/fontconfig
# pkg install system/library/freetype-2
# pkg install text/gnu-diffutils
# pkg install text/gnu-gettext
# pkg install text/gnu-grep
# pkg install text/gnu-patch
# pkg install text/gnu-sed
# pkg install text/groff
# pkg install text/groff/groff-core
# pkg install text/texinfo
# pkg install web/curl
# pkg install x11/library/libxmu
# pkg install x11/library/libxmuu
# pkg install x11/library/toolkit/libxaw7
For openSUSE and SUSE Linux, I install these additional packages:
# zypper install -y clisp
# zypper install -y cmake-full
# zypper install -y doxygen
# zypper install -y eigen3-devel
# zypper install -y fontconfig
# zypper install -y fontconfig-devel
# zypper install -y fftw3
# zypper install -y fftw3-devel
# zypper install -y freeglut-devel
# zypper install -y freeglut-devel-32bit
# zypper install -y gcc
# zypper install -y gcc-c++
# zypper install -y glm-devel
# zypper install -y gmp-devel
# zypper install -y gsl-devel
# zypper install -y libboost_filesystem-devel
# zypper install -y libboost_timer-devel
# zypper install -y libcurl-devel
# zypper install -y libGLEW2_2
# zypper install -y libgmpxx4
# zypper install -y libltdl7
# zypper install -y libmpfrcx1
# zypper install -y libsigsegv-devel
# zypper install -y libsqlite3-0
# zypper install -y libtirpc-devel
# zypper install -y libtool
# zypper install -y libunistring-devel
# zypper install -y libXaw-devel
# zypper install -y libxcb-devel
# zypper install -y libxcb-util1
# zypper install -y libXi-devel
# zypper install -y libzstd-devel
# zypper install -y mariadb-client
# zypper install -y Mesa-libd3d-devel
# zypper install -y Mesa-libGL-devel
# zypper install -y Mesa-libglapi-devel
# zypper install -y Mesa-libva
# zypper install -y mpc-devel
# zypper install -y mpfr-devel
# zypper install -y mpfrcx-devel
# zypper install -y perl-Unicode-Collate
# zypper install -y postgresql
# zypper install -y python311-qt5-devel
# zypper install -y readline-devel
# zypper install -y texinfo
# zypper install -y xcb-util-devel
With one of the large collections of packages installed, according to the preceding sections, Asymptote builds with almost all of its features enabled:
% asy --version
Asymptote version 3.06 [(C) 2004-26 Andy Hammerlindl, John C. Bowman, Tom Prince]
ENABLED OPTIONS:
V3D 3D vector graphics output
WebGL 3D HTML rendering
OpenGL 3D OpenGL rendering
SSBO GLSL shader storage buffer objects
GSL GNU Scientific Library (special functions)
FFTW3 Fast Fourier transforms
Eigen Eigenvalue library
XDR External Data Representation (portable binary file format for V3D)
CURL URL support
LSP Language Server Protocol
Readline Interactive history and editing
Sigsegv Distinguish stack overflows from segmentation faults
GC Boehm garbage collector
threads Render OpenGL in separate thread
DISABLED OPTIONS:
The LSP option feature is supplied by the various boost packages; they are mostly C++ templates, rather than load libraries, so they are not easily detected in binary executables. The default version of Asymptote was 2.88 in early February 2025, and cross platform testing led to versions 2.98, 2.99, and 3.00. Those three versions require Python 3.x, but older operating systems support only Python 2.x, so for them, only the 2.88 version can be built. Even when all available boost packages are installed, on some systems, it has been necessary to use the --disable-lsp option for the configure script, which means that Asymptote features LSP, and possibly, V3D and XDR, are disabled.
For 2026, Asymptote versions 3.04, 3.06, and soon, 3.07, have been used, and the --disable-lsp option may not be needed.
The complexity of the Asymptote system, its need for many additional packages, and its use of recent C++ features, means that it is not compiled automatically in a TeX Live build. Instead, once the main TeX Live build has completed successfully and been installed, I first source one of our local SYS.texlive-2026.* scripts to set the search path and environment variables for TeX Live 2026, and then run the build-asymptote.sh script that manages the build and validation of Asymptote, and if successful, ends with a report of how to install Asymptote in the TeX Live tree.
Although Asymptote builds have been stumbling blocks for all previous years of TeX Live work at Utah, so far for 2026, Asymptote has been successfully built for most systems.
For more on prerequisites for TeX Live builds, see here and here.
Donald Knuth's TeX and METAFONT, and their associated TeXware and MFware programs and data files, have proven extraordinarily robust over more than 45 years of use, and have been ported to most commercially important machine architectures (operating systems and CPUs), from mobile devices to supercomputers. Their original code is in Web, a literate-programming language that can be processed by tangle and weave to produce a Pascal program file and a TeX file that documents the software.
Pascal no longer enjoys the popularity that it did when Donald Knuth chose it as his second implementation language, and C is now the most widely available language that continues to be used for much of the world's software. Thus, for about 35 years, the Pascal source has been translated automatically to the C language by a special utility.
Most other software related to TeX and Metafont written since then has been in C, C++, Fortran, Java, and Common Lisp, in the Unix/POSIX shell, sh, and in scripting languages like awk, javascript, lua, perl, and python. It is rare to find a system where TeX and METAFONT themselves cannot be built.
A modern TeX Live distribution continues much
more than just TeX and METAFONT. On top of
those two programs, each about 20_000 lines of Pascal,
stands a TeX Live source tree that, after a build
has completed, has about 2710
directories, and 33_850 files, 290 Makefiles,
and 85 GNU-style configure scripts. The binary
subdirectory for each platform contains up to 480
programs. The total amount of source code just in the
main languages (Asymptote, C, C++, Java, Lisp,
PostScript, and Web) and
in five scripting languages (awk, lua, perl, python, and
shell) is about 4_908_000 lines. In addition,
in the final TeX Live installation tree, there are about
8_500_000 lines of code in the TeX macro language. In
round figures, there are more than 13 million lines of
code in TeX Live 2026!
Many of the source packages that are built and included with TeX Live distributions are handled independently by other developers outside the TeX world, and the job of the TeX Live team each year is to find out by actual build experience how many of the latest releases of those other packages have build issues, or platform dependence, or nasty CPU-architecture assumptions.
In view of those observations, it should be no surprise that the annual TeX Live production takes team members about two to three months of hard work, and that there are numerous platforms where builds are only partially successful, and thus, some programs are missing from the binary subdirectories, as illustrated by the large table near the beginning of this Web page.
Since TeX Live production began, outside the Microsoft Windows world, the default compiler family at most team builder sites has been gcc (GNU Compiler Collection). That family has been ported to almost all operating systems in common use, has front ends for multiple languages (Ada, Brig, C, C++, D, Fortran, Go, JIT, LTO, Modula/2, Objective C, Objective C++, and Rust), plus support for Java and Pascal on older gcc releases, and has backends for all major CPU architectures used in desktop and server computers.
gcc is released under the terms of the GNU General Public License, version 2 (June 1991). That license contains requirements that derivatives of the code must be similarly licensed, and made available in source form, to guarantee freedom of use for everyone.
Some find that license too restrictive, and several other open-source licenses have been proposed. Among them are the simpler BSD 2-clause and 3-clause licenses common in the BSD operating system family, and the Apache License version 2.0 (January 2004) that is used by many Web servers, and by the other major compiler family, LLVM + Clang.
Starting in 2012, FreeBSD developers began a move towards using the LLVM compilers as the default, and that operation was completed with the FreeBSD 10.0 release in January 2014. OpenBSD has made a similar change, but NetBSD still uses gcc. On all of those systems, multiple versions of both compiler families are available in the package system, sometimes right up to weekly snapshots of gcc that are only a few days old.
Because gcc has a much longer history than clang, in order to be competitive, the latter attempts to recognize common gcc language syntax additions (often added to satisfy the requirements of operating-system kernel authors), as well as some, but certainly not all, of the gcc command-line options.
As long as software authors are aware of both compilers, they can generally take steps to avoid tying their code to just a single compiler. Alas, at least one vendor, Apple in macOS, offers a program called gcc that is just a wrapper around clang, and that often fails to compile code that makes tests of gcc-specific preprocessor symbols. It must be emphasized that clang, while it has become an excellent compiler, is far from a superset of gcc's capabilities, and targets only a small number of CPU architectures compared to those that gcc supports.
One particular behavior difference between the two compiler families that is exposed by TeX Live builds is that gcc always automatically searches /usr/local/include for header files, and /usr/local/{lib,lib64} for library files, but clang does not! That difference can be harmless on Linux distributions, but in the DragonFlyBSD, FreeBSD, and OpenBSD worlds, /usr/local has been usurped for the vendor package systems, belying its name.
To address deficiencies of various operating systems, and deal with version-number dependencies of needed libraries, TeX Live itself contains library source code for things like data compression and Unicode support, and the build process may expect those private versions to be used. Depending on the settings of the -Wl,-rpath and -L compiler options that name directories where libraries are searched for, compilation may succeed with gcc, but fail with clang, when the latter finds the wrong libraries.
It is unclear whether a clean solution to this behavior mismatch exists, given that TeX Live 2026 contains about 17_250 directories and about 480 Makefiles. I have been able to use both compiler families for building TeX Live 2026 in FreeBSD 14 amd64, and a few GNU/Linux systems, and to use clang (but not gcc) on OpenBSD 7.3, 7.4, 7.5, and 7.6 x86_64. However, because of compiler version-dependent C++ library requirements, it seems less useful to use clang on other platforms: end-user sites might then find some TeX Live executables unusable until they installed clang binary packages themselves. Our systems at Utah have numerous versions of both compiler families compiled from source code and installed, and a tree for just one recent version of clang takes about 5GB of disk space.
Many users of TeX Live installations are unlikely to know much about computer system management, and would not even know how to find and install binary packages for additional compilers, so the TeX Live team has to try to produce a software installation that works out of the box for the largest number of users. Thus, various versions of gcc remain the predominant choice for building TeX Live.
This major section contains reports of the TeX Live 2026 build experience on numerous platforms, in alphabetically ordered subsections: just scroll down to any that are of interest to you, or follow links from the contents listing.
With rare exceptions, just before a TeX Live build is attempted, operating system package updates are run, and the build host rebooted if necessary, so the build is done with the latest available software.
Here are links to the contents of this section:
The default /usr/bin/gcc compiler on CentOS 7 is version 4.8.5 from mid-2015, and much too old to support C++17, which needs at least a gcc-8.x compiler. I made several failed attempts to build TeX Live 2026 on our main CentOS server, but they all had C++ symbol conflicts in system shared libraries, despite my trying with gcc compiler versions from 8 to 15.
Vendor development and support for CentOS 7 ceased in mid-2024, and package repositories have since been removed. Fortunately, before that happened, I had installed optional compiler packages for gcc-7 to gcc-11, which are put into the /opt/rh tree. I used the gcc-11.2.1 compiler for the TeX Live 2026 build, and that succeeded.
However, Asymptote-3 versions had failed to build on this O/S for the previous year's TeX Live, and versions 3.04, 3.06, 3.07, and 3.08 also would not build this year, so two older versions of Asymptote were copied into the bin/x86_64-centos7 directory.
The old Asymptote reports these features:
% asy --version
Asymptote version 2.88 [(C) 2004 Andy Hammerlindl, John C. Bowman, Tom Prince]
ENABLED OPTIONS:
SSBO GLSL shader storage buffer objects
GSL GNU Scientific Library (special functions)
FFTW3 Fast Fourier transforms
XDR External Data Representation (portable binary file format for V3D)
Readline Interactive history and editing
GC Boehm garbage collector
threads Render OpenGL in separate thread
DISABLED OPTIONS:
V3D 3D vector graphics output
WebGL 3D HTML rendering
OpenGL 3D OpenGL rendering
Eigen Eigenvalue library
CURL URL support
LSP Language Server Protocol
Sigsegv Distinguish stack overflows from segmentation faults
The build of TeX Live 2026 in CentOS Stream 10 on arm64 (aarch64) with the native gcc-14.2.1 compiler family was successful.
The build of Asymptote initially failed because makeinfo and texi2dvi were not installed. They come from the texinfo package, but that is absent from both the normal CentOS repository, as well as from the Extra Packages for Enterprise Linux (EPEL) repository. I therefore had to build, validate, and install texinfo-7.2 separately, and then redo the Asymptote build. Fortunately, that build then succeeded.
Asymptote 3.04 is missing these features, due to deficiencies of the CentOS 10 package systems:
% asy --version
Asymptote version 3.01 [(C) 2004 Andy Hammerlindl, John C. Bowman, Tom Prince]
...
DISABLED OPTIONS:
V3D 3D vector graphics output
WebGL 3D HTML rendering
OpenGL 3D OpenGL rendering
Eigen Eigenvalue library
XDR External Data Representation (portable binary file format for V3D)
Sigsegv Distinguish stack overflows from segmentation faults
The build of TeX Live 2026 and Asymptote on CentOS Stream 10 S390X with native gcc-14.3.1 compilers was problem free.
Asymptote is missing these features due to deficiencies of the CentOS 10 package systems:
% asy --version
Asymptote version 3.04 [(C) 2004 Andy Hammerlindl, John C. Bowman, Tom Prince]
...
DISABLED OPTIONS:
V3D 3D vector graphics output
WebGL 3D HTML rendering
OpenGL 3D OpenGL rendering
GSL GNU Scientific Library (special functions)
Eigen Eigenvalue library
XDR External Data Representation (portable binary file format for V3D)
Sigsegv Distinguish stack overflows from segmentation faults
The build of TeX Live 2026, and Asymptote 3.04, on CentOS Stream 10 x86_64 with native compilers from gcc-14.3.1 was successful.
After the initial build of Asymptote was complete, version 3.06 was announced, and a fresh build of that version failed because CentOS 10 fails to provide needed header files in /usr/include/rpc. In older CentOS versions, they were supplied by the libtirpc-devel or glibc-headers packages. The first of those is no longer available, and the second lacks the needed rpc header files. This is yet another long-standing aggravation with CentOS and RedHat, which sometimes fail to supply common header files and libraries available in most other Linux distributions.
The builds of TeX Live 2026, including Asymptote 3.06, 3.07, and 3.08, with the native gcc-12.2.0 compiler family on Debian 12.13 aarch64 (arm64) were problem free. All Asymptote features are enabled.
The build host is a Canakit Raspberry Pi 500 in a small plastic case (9cm x 6.5cm x 4cm), about the dimensions of a deck of playing cards, but twice as thick. The machine cost in late 2024 was about US$180, for a 4-core 2.4GHz Cortex-A76 CPU, 8GB DRAM, and 256GB of solid-state storage on a tiny card about 5mm by 5mm!.
Despite the low price and small physical size, this system is often faster than our large AMD and Intel servers: its drawback is the small core count and limited memory and filesystem storage, which precludes massively parallel builds of large software packages. While the storage has worked without error for 16 months, I view it as fragile.
The build of TeX Live 2026, including Asymptote 3.06, with native gcc-12.2.0 compilers on Debian 12.13 ppc64le (64-bit PowerPC with little-endian addressing) was problem free. All Asymptote features are enabled.
The build of TeX Live 2026, including Asymptote 3.06, with native gcc-12.2.0 compilers on Debian 12.13 s390x was problem free. All Asymptote features are enabled.
The build of TeX Live 2026, including Asymptote 3.06, with native gcc-14.2.0 compilers on Debian 13.3 (code name trixie) on riscv64 was problem free. All Asymptote features are enabled.
The build of TeX Live 2026 in Debian 13.3 (code name trixie) on x86_64 with the native gcc-14.2.0 compiler family, including Asymptote 3.04, was successful.
The build of TeX Live 2026 in Debian 14 (code name forky/sid) on ppc64le using the native gcc-15.2.0 compiler family was successful.
The build of Asymptote 3.07 completed, but is missing the features V3d, WebGL, OpenGL, SSBO, and CURL. Further package installations are in progress to remedy that deficiency.
The builds of TeX Live 2026, and Asymptote 3.06, 3.07, and 3.08, on Fedora 41 on x86_64 with the native gcc-13.3.1 compiler family were successful. The asy executables have zero disabled features.
The builds of TeX Live 2026, and Asymptote 3.06, 3.07, and 3.08, on Fedora 43 on x86_64 with the native gcc-15.2.1 compiler family were successful. The asy executables have zero disabled features.
The build of TeX Live 2026 in FreeBSD 13.3 on amd64 with the native gcc-12.0.0 compiler family was successful. The Asymptote 3.06 executable asy has zero disabled features.
A later rebuild from a (presumably final) TeX Live 2026 source tree on 23-Feb-2026 using the gcc-12.4.0 compiler was similarly successful. For the Asymptote 3.07 build, I first had to define the environment variable PYTHON to /usr/local/bin/python3.11. As with 3.06, there are zero disabled features.
The build of TeX Live 2026 in FreeBSD 13.4 on amd64 with the native gcc-13.3.0 compiler family was successful. Asymptote 3.06 failed to compile
The build of TeX Live 2026 in FreeBSD 13.5 on amd64 with the native gcc-13.3.0 compiler family was successful.
For Asymptote 3.06, the same patch required on other FreeBSD builds is in the top-level file, settings.cc: change ncursesw to ncurses in lines 52 and 53. A rebuild with a later source release no longer needed the patch. The asy executable has zero disabled features.
The build of TeX Live 2026 in FreeBSD 14.0 on amd64 with the native gcc-14.2.1 compiler family was successful, but Asymptote 3.06 failed to compile because of Python version issues.
The build of TeX Live 2026 in FreeBSD 14.1 on amd64 with the native gcc-12.4.0 compiler family was successful. The build of Asymptote 3.07 was successful, and there are zero disabled features.
The build of TeX Live 2026 in FreeBSD 14.2 on amd64 with the native gcc-13.3.0 compiler family was successful, but Asymptote 3.06 failed to compile because of Python version issues.
The build of TeX Live 2026 in FreeBSD 14.3 on amd64 with the native gcc-14.2.0 compiler family was successful, but Asymptote failed to compile because of a missing gcc library. I redid the build with the native gcc-13.3.0 compiler family, and that succeeded. The asy executable has zero disabled features.
I then made a new build attempt with the native C/C++ compilers, /usr/bin/cc and /usr/bin/CC, which are LLVM/clang version 19.1.7. The build of TeX Live 2026 and the patched Asymptote 3.06 was successful, and there are no disabled features in asy. The binaries from this second build are supplied in the bundle named bin/amd64-freebsd143-clang.tar.xz.
After another TeX Live source snapshot, I redid those builds, and for the second compiler family, switched to the latest clang-devel compilers, version 22.0.0. All were successful.
The build of TeX Live 2026 in FreeBSD 15.0 on amd64 was successful. The native C/C++ compilers are from llvm/clang version 19.1.7.
However, Asymptote 3.06 failed to build because of a missing header file in the FreeBSD package system. The issue was reported upstream, and a 2-character fix was quickly supplied. Asymptote then built successfully, with no missing features.
The fix in the top-level file, settings.cc, changed ncursesw to ncurses in lines 52 and 53.
GhostBSD is a descendant of FreeBSD, with a desktop window system. GhostBSD version 24.07 is based on FreeBSD 14.1-STABLE.
The build of TeX Live 2026 in GhostBSD 24.07 on amd64 using the native gcc-12.4.0 compiler family was successful.
The build of Asymptote 3.07 succeeded, but there are three disabled features: V3D, WebGL, and OpenGL. It may be possible to supply those after further GhostBSD package installations. Experiments are in progress; stay tuned!
The build of TeX Live 2026 in openSUSE Leap 15.5 on x86_64 using the native gcc-7.5.0 compiler family was successful.
However, the build of Asymptote 3.06 failed because the Python version on this system is too old. The upcoming 3.07 release should repair that problem. Alas, it did not: the openSUSE package system has conflicts, and it is not possible to install a version of Python 3 new enough for Asymptote. I backtracked to Asymptote 3.01 and 2.99, but they too failed to compile. Some of the programs in /usr/bin are dated in May 2018, so I conclude that this system has passed its useful life for TeX Live build attempts.
The build of TeX Live 2026 in openSUSE Leap 15.6 on x86_64 using the native gcc-14.3.0 compiler family was successful.
However, the build of Asymptote 3.06 failed because the Python version on this system is too old. The upcoming 3.07 release should repair that problem. In the meantime, I supplied Asymptote version 3.01 from the previous year's TeX Live build. When Asymptote 3.07 was released in the 23-Feb-2025 TeX Live snapshot, a rebuild of both TeX Live 2026 and Asymptote was successful, and the asy executable has zero disabled features.
The build of TeX Live 2026 on openSUSE Leap 16.0 x86_64, include Asymptote-3.06, using native gcc-15.1.1 compilers was problem free.
The build of TeX Live 2026 on Peppermint 10 x86 failed because the latest compiler family version, gcc-8.4.0, is too old to compile C++ code in XeTeX and Asymptote.
Attempts to create a new virtual machine for the latest available 32-bit Peppermint have failed: the installer complains that it cannot open the GUI display window, and hangs.
The TeX Live 2026 build with native compilers (gcc-9.4.0) on Ubuntu 20.04.6 LTS (Long-Term Support, until April 2025) (code name Focal Fossa) on x86_64 was problem free.
To build Asymptote 3.04, I just had to add the configure flag --disable-lsp. The asy --version output reports that only the LSP feature is disabled.
The 24-Feb-2026 release of Asymptote 3.08 built successfully without any configure-time flags, and the asy-3.08 (symlinked to asy) executable has zero disabled features.
The TeX Live 2026 build with native compilers (gcc-12.4.0) in Ubuntu 24.04.4 LTS (Long-Term Support, until April 2030) (code name Noble Numbat), including Asymptote 3.07, on s390x was problem free.
The TeX Live 2026 build with native compilers (gcc-13.3.0) on Ubuntu 24.04.6 LTS (Long-Term Support, until April 2030) (code name Noble Numbat), including Asymptote 3.04, on x86_64 was problem free.
After the initial build of Asymptote was complete, version 3.06 was announced, and a fresh build of that version was successful, with no disabled packages reported by asy --version. Both versions 3.04 and 3.06 are in the bin/x86_64-ubuntu2404 directory, with the default being the latest version.
The 24-Feb-2026 release of Asymptote 3.08 built successfully, and with zero disabled features.
At the time of writing this in January 2026, the official release of Ubuntu 26.04 (code name Resolute Raccoon) is still about three months in the future. The TeX Live 2026 build has therefore been done on a virtual machine running a December 2025 pre-release of the O/S, with patches applied to bring it up-to-date.
The default C compiler on this system is gcc-15.2.0, which defaults to -std=c23. The initial build with the TeX Live snapshot of 20260119 failed because one package used typedef int bool;, which is no longer legal because bool is now an official keyword in ISO Standard C 2023. I reported the problem upstream, and it was quickly fixed.
A new snapshot taken on 20260121 solved the problem, and the build of TeX Live 2026, and Asymptote, was successful.
The new Asymptote reports no missing features!:
% asy --version
Asymptote version 3.05 [(C) 2004 Andy Hammerlindl, John C. Bowman, Tom Prince]
ENABLED OPTIONS:
V3D 3D vector graphics output
WebGL 3D HTML rendering
OpenGL 3D OpenGL rendering
SSBO GLSL shader storage buffer objects
GSL GNU Scientific Library (special functions)
FFTW3 Fast Fourier transforms
Eigen Eigenvalue library
XDR External Data Representation (portable binary file format for V3D)
CURL URL support
LSP Language Server Protocol
Readline Interactive history and editing
Sigsegv Distinguish stack overflows from segmentation faults
GC Boehm garbage collector
threads Render OpenGL in separate thread
DISABLED OPTIONS:
After the initial build of Asymptote was complete, version 3.06 was announced, and a fresh build of that version was successful, with no disabled packages reported by asy --version. Both versions 3.05 and 3.06 are in the bin/x86_64-ubuntu2604 directory, with the default being the latest version.
TeX Live 2026 code updates were announced on 12-Feb-2026, so I downloaded a new snapshot. A build attempt with the native gcc-15.2.0 family failed in compiling dvipsk, but a second build with the older gcc-14.3.0 family succeeded. However, Asymptote 3.06 fails to build with a complaint about a Ghostscript version mismatch. That error has been seen on other machines, and should be repaired when Asymptote 3.07 is available.
Asymptote versions 3.07 and 3.08 were released in late February 2026. The first built without any issues, and has zero disabled features. Surprisingly, the second had unexpected errors while typesetting it documentation. I forced it past that failure with make -i -k all check. The resulting asy-3.08 executable passed all of its tests, and has zero disabled features.