Name | Last modified | Size | |
---|---|---|---|
Parent Directory | - | ||
Images/ | 2024-03-23 08:42 | - | |
bin/ | 2024-06-11 08:39 | - | |
iso-mounting.css | 2021-04-06 08:48 | 325 | |
show-lib-deps.sh | 2022-01-13 06:51 | 1.4K | |
make-texlive-binary-distributions.sh | 2024-03-05 15:22 | 1.7K | |
show-texlive-libs.sh | 2022-01-13 06:52 | 2.1K | |
make-texlive-snapshot-2024.sh | 2024-03-05 09:07 | 2.1K | |
show-file-counts.sh | 2024-03-06 10:18 | 2.5K | |
update-texlive-2024.sh | 2024-03-05 13:27 | 6.4K | |
README.sok | 2023-03-15 05:41 | 7.0K | |
build-asymptote.sh | 2022-01-22 08:19 | 7.4K | |
SYS.texlive-2024.sh | 2024-03-05 11:15 | 7.5K | |
SYS.texlive-2024.csh | 2024-03-05 11:15 | 8.6K | |
0xBC9AFC44.asc | 2023-03-23 13:30 | 14K | |
iso-mounting.html | 2023-03-23 13:48 | 14K | |
build-texlive-2024.sh | 2024-03-09 15:13 | 62K | |
README.html | 2024-06-11 08:44 | 158K | |
Original version:
Tue Mar 5 15:25:49 2024
Last updates:
Tue Mar 5 15:24:11 2024
…
Tue Jun 11 08:40:13 2024
Current time in Salt Lake City, Utah, USA:
Monday, 14-Oct-2024 05:27:35 MDT
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, and 2023. Further updates for TeX Live 2023 were frozen sometime in March 2024, and future updates will happen only in the 2024 (and later) trees. Final binaries for 2024 are available within a few days of the freeze, after which TeX Live 2024 ISO image production work begins. That work was completed on 11 March 2024. Binaries for other than the standard supported platforms will appear at this site for some time 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 2024 distribution. The official release happened on 13 March 2024, and should be available in ISO images in shortly; 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/texcol2024.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-2024.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 2024 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, 2020, 2021, 2022, 2023, and 2024 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 11 June 2024, the following builds have been (mostly) successful by the TeX Live team, or at Utah:
% show-file-counts.sh 495 aarch64-alpine319 493 aarch64-linux 493 amd64-freebsd 478 amd64-freebsd124 478 amd64-freebsd133 478 amd64-freebsd140 478 amd64-freebsd141 478 amd64-freebsd150 473 amd64-ghostbsd2401 478 amd64-hardenedbsd15-gcc-10 476 amd64-hardenedbsd15-gcc-11 453 amd64-hardenedbsd15-gcc-12 478 amd64-hardenedbsd15-gcc-9 491 amd64-netbsd 478 amd64-netbsd100 439 amd64-openbsd74-utah-gcc11 488 amd64-openbsd75 475 amd64-openbsd75-utah 472 arm64-debian11 482 armhf-linux 493 i386-freebsd 494 i386-linux 482 i386-netbsd 478 i386-netbsd100 478 i386-opensusetw 473 i386-solaris 484 i686-centos7 470 m68k-debian12 467 ppc64le-debian12 472 riscv64-ubuntu2304 472 s390x-ubuntu2004 495 universal-darwin 473 x86_64-almalinux9 478 x86_64-alpine317 478 x86_64-centos7 470 x86_64-centos8 473 x86_64-clearlinux 490 x86_64-darwinlegacy 478 x86_64-debian13 478 x86_64-dragonflybsd640 478 x86_64-fedora39 478 x86_64-fedora41 494 x86_64-linux 486 x86_64-linuxmusl 478 x86_64-opensuse152 478 x86_64-opensuse155 478 x86_64-opensusetw 478 x86_64-oracle89 473 x86_64-oracle93 477 x86_64-pureos 474 x86_64-solaris 479 x86_64-ubuntu2004 443 x86_64-ubuntu2210 478 x86_64-ubuntu2310 473 x86_64-ubuntu2404 478 x86_64-ultimate Total: 56 systems Missing binaries [compared to x86_64-linux]: aarch64-alpine319 : biber-ms typog-grep aarch64-linux : biber-ms amd64-freebsd : biber-ms amd64-freebsd124 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep amd64-freebsd133 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep amd64-freebsd140 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep amd64-freebsd141 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep amd64-freebsd150 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep amd64-ghostbsd2401 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texmfstart typog-grep xindy xindy.mem xindy.run amd64-hardenedbsd15-gcc-10 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep amd64-hardenedbsd15-gcc-11 : asy biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep xasy amd64-hardenedbsd15-gcc-12 : biber biber-ms bibtex8 bibtexu cfftot1 context context.lua contextjit dvigif dvipdfm dvipdfmx dvipdft dvipng dvisvgm ebb extractbb l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mmafm mmpfb mtxrun mtxrun.lua mtxrunjit otfinfo otftotfm t1dotlessj t1lint t1rawafm t1reencode t1testpage texexec texmfstart ttftotype42 typog-grep upmendex xdvi xdvi-xaw xdvipdfmx amd64-hardenedbsd15-gcc-9 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep amd64-netbsd : asy biber biber-ms amd64-netbsd100 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep amd64-openbsd74-utah-gcc11 : amstex biber biber-ms context context.lua contextjit csplain dvilualatex dvilualatex-dev dviluatex eplain etex hilatex jadetex l3sys-query latex latex-dev lollipop luacsplain luajittex lualatex lualatex-dev luametatex luatools man memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mex mfluajit mfluajit-nowin mllatex mltex mtxrun mtxrun.lua mtxrunjit optex pdfcsplain pdfetex pdfjadetex pdflatex pdflatex-dev pdfmex pdfxmltex platex platex-dev texexec texmfstart texsis typog-grep uplatex uplatex-dev utf8mex xelatex xelatex-dev xmltex amd64-openbsd75 : biber biber-ms l3sys-query memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py typog-grep amd64-openbsd75-utah : biber biber-ms context context.lua contextjit l3sys-query luajittex luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep arm64-debian11 : biber biber-ms context context.lua contextjit l3sys-query luajithbtex luajittex luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart typog-grep armhf-linux : asy biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit xasy i386-freebsd : biber-ms i386-netbsd : asy biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit xasy i386-netbsd100 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep i386-opensusetw : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep i386-solaris : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit tex2xindy texindy texluajit texluajitc xindy xindy.mem xindy.run i686-centos7 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep m68k-debian12 : asy biber biber-ms context context.lua contextjit l3sys-query luajithbtex luajittex luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart typog-grep xasy ppc64le-debian12 : biber biber-ms context context.lua contextjit l3sys-query luajithbtex luajittex luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texluajit texluajitc texmfstart typog-grep xindy xindy.mem xindy.run riscv64-ubuntu2304 : biber biber-ms context context.lua contextjit l3sys-query luajithbtex luajittex luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart typog-grep s390x-ubuntu2004 : biber biber-ms context context.lua contextjit l3sys-query luajithbtex luajittex luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart typog-grep xindy.mem universal-darwin : xindy.mem x86_64-almalinux9 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texmfstart typog-grep xindy xindy.mem xindy.run x86_64-alpine317 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep x86_64-centos7 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep x86_64-centos8 : biber biber-ms context context.lua contextjit ctwill-proofsort edtx2dtx eolang l3sys-query ltx2unitxt luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit ptekf runtexshebang texblend texexec texfindpkg texmfstart twill-refsort typog-grep x86_64-clearlinux : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texmfstart typog-grep xindy xindy.mem xindy.run x86_64-darwinlegacy : pdfclose pdfopen xdvi xdvi-xaw x86_64-debian13 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep x86_64-dragonflybsd640 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep x86_64-fedora39 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep x86_64-fedora41 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep x86_64-linuxmusl : asy biber-ms tex2xindy texindy xasy xindy xindy.mem xindy.run x86_64-opensuse152 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep x86_64-opensuse155 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep x86_64-opensusetw : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep x86_64-oracle89 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep x86_64-oracle93 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texmfstart typog-grep xindy xindy.mem xindy.run x86_64-pureos : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep xasy x86_64-solaris : biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit tex2xindy texindy texluajit texluajitc xindy xindy.mem xindy.run x86_64-ubuntu2004 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep x86_64-ubuntu2210 : amstex biber biber-ms context context.lua contextjit csplain dvilualatex dvilualatex-dev dviluatex eplain etex hilatex jadetex l3sys-query latex latex-dev lollipop luacsplain lualatex lualatex-dev luametatex luatools man memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mex mllatex mltex mtxrun mtxrun.lua mtxrunjit optex pdfcsplain pdfetex pdfjadetex pdflatex pdflatex-dev pdfmex pdfxmltex platex platex-dev texexec texmfstart texsis typog-grep uplatex uplatex-dev utf8mex xelatex xelatex-dev xmltex x86_64-ubuntu2310 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep x86_64-ubuntu2404 : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texmfstart typog-grep xindy xindy.mem xindy.run x86_64-ultimate : biber biber-ms context context.lua contextjit l3sys-query luametatex luatools memoize-clean.pl memoize-clean.py memoize-extract.pl memoize-extract.py mtxrun mtxrun.lua mtxrunjit texexec texmfstart typog-grep
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 20.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/2024/bin/x86_64-ubuntu2004 Library dependencies of TeX Live executables in /usr/uumath/texlive/2024/bin/x86_64-ubuntu2004: 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 ebb eplain epsffit eptex etex euptex extconv extractbb 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 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 asy 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 libXext asy xdvi-xaw libXi asy libXmu xdvi-xaw libXpm xdvi-xaw libXt xdvi-xaw libXxf86vm asy 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 ebb eplain epsffit eptex etex euptex extconv extractbb 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 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 libcrypt asy xindy.run libcrypto asy libcurl asy libdl asy dvilualatex dvilualatex-dev dviluatex dvisvgm inimf luacsplain luahbtex luajithbtex luajittex lualatex lualatex-dev luatex mf mflua mflua-nowin mfluajit mfluajit-nowin optex pdfclose pdfopen texlua texluac texluajit texluajitc xdvi-xaw xindy.run libexpat xelatex xelatex-dev xetex libffcall xindy.run libfftw3 asy libfontconfig xelatex xelatex-dev xetex libfreebl3 asy xindy.run libfreetype xelatex xelatex-dev xetex libgcc_s asy luajittex mfluajit mfluajit-nowin texluajit texluajitc libglut asy libgsl asy libgssapi_krb5 asy libidn asy libk5crypto asy libkeyutils asy libkrb5 asy libkrb5support asy liblber-2.4 asy libldap-2.4 asy libm afm2pl afm2tfm amstex asy axohelp bibtexu cfftot1 csplain dvigif dvilualatex dvilualatex-dev dviluatex dvipdfm dvipdfmx dvipng dvipos dvips dvisvgm dvitomp ebb eplain etex extractbb 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 texsis ttf2pk ttf2tfm ttftotype42 updvitomp upmendex upmpost utf8mex xdvi-xaw xdvipdfmx xelatex xelatex-dev xetex xindy.run xmltex libnspr4 asy libnss3 asy libnssutil3 asy libpcre asy libplc4 asy libplds4 asy libpng15 xelatex xelatex-dev xetex libpthread asy bibtexu upmendex xelatex xelatex-dev xetex libreadline asy xindy.run libresolv asy librt asy libsasl2 asy libselinux asy libsigsegv asy xindy.run libsmime3 asy libssh2 asy libssl asy libssl3 asy libstdc++ asy libtinfo asy xindy.run libtirpc asy libunistring xindy.run libuuid xdvi-xaw xelatex xelatex-dev xetex libxcb asy inimf mf mflua mflua-nowin mfluajit mfluajit-nowin pdfclose pdfopen xdvi-xaw libz asy xelatex xelatex-dev xetex 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 ebb eplain epsffit eptex etex euptex extconv extractbb 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 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/2024/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.
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)
% tlmgr paper letter # for US letter A paper (8.5in × 11in)
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 and CentOS 9, 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-2024.csh ### ash, bash, dash, ksh, pdksh, sh, and sh login shells ### (POSIX-compliant, or supersets thereof) . $prefix/skel/SYS.texlive-2024.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 2024 release first, ahead of any local, older TeX Live, or vendor-supplied installations of TeX.
An installed TeX Live 2024 tree with all available packages, and binaries for one O/S architecture, requires about 12GB of disk space. It contains about 16_700 directories and 244_000 files. Smaller storage totals are possible with the installer programs in the official TeX Live 2024 ISO image, which allow you to choose subsets for your local installation.
Building TeX Live 2024 requires primarily source code, rather than macro packages and fonts: about 2.2GB of storage suffices on most platforms.
Fortunately, computer storage costs continue to drop. In early 2023 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$70 per terabyte. Thus, storage of a full TeX Live 2024 tree costs between US$0.17 and US$0.70, 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 Berlin, 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 Berlin 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 Berlin 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 2024 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 2024 on 13-Mar-2024, 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://www.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-20240306 ### 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/2024
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 16_670 subdirectories and about 244_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 2024 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 2024 pre-test installation tree like this on my CentOS 7 workstation:
$ PATH=/path/to/texlive/2024/bin/x86_64-linux-centos-7:$PATH $ export PATH ### Update TeX Live Manager itself (this usually does nothing) $ tlmgr update --self ### Update TeX Live 2024 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/2024/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 Berlin, 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 Monday, 14-Oct-2024 05:27:35 MDT .
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 2024, 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, zypper in openSUSE Linux, sisyphus in Redcore Linux, slapt-get in Salix Linux, slackpkg in Slackware Linux, xbps-install in Void 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 (version 14 is the latest in 2024). 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.
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.
GNU make is required for building the freetype package. Other Unix make implementations may suffice for the rest of the build.
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. ================================================================
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-2024.* scripts to set the search path and environment variables for TeX Live 2024, 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 2024, 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 2675
directories, and 33_400 files, 310 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 2024!
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 2024 contains about 2375 directories and about 270 Makefiles. I have been able to use both compiler families for building TeX Live 2024 on FreeBSD 13 x86_64, and to use clang (but not gcc) on OpenBSD 6.9 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 2GB 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 2024 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:
Alma Linux is one of several relatives of CentOS, developed to provide a more stable versioned release after Red Hat changed CentOS to a (somewhat) rolling release. The build of TeX Live 2024 on Alma Linux 9.2 x86_64 with the gcc-11.4.1 compiler family was problem free.
Alpine Linux is unusual among Linux distributions in that it is based on the MUSL C standard library, rather than the GNU one. Our site has test machines for several versions of Alpine Linux, but only one non-Alpine system that uses MUSL: Void Linux MUSL on x86_64.
A build of TeX Live 2024, including Asymptote, on Alpine Linux 3.19 succeeded, except for xindy. That failed because clisp is not in the Alpine Linux binary package system.
The MUSL memory model differs from that in glibc, and that has prevented building a few standard tools on Alpine Linux, including the -lsigsegv library, the GNU emacs text editor, and the tcsh shell. They, and the GNU Scientific Library, gsl, are all absent from the Alpine package system. Thanks to recent changes that I requested from the tcsh team, that shell can now be built from source code on MUSL systems.
I have since built clisp on Alpine 3.19 ARM64 from the latest source code release, and another build-from-source attempt for gsl also succeeded. A fresh build of TeX Live 2024, including Asymptote, succeeded.
Binaries for the biber bibliography system, the context typesetting engine, and their associated tools, are missing on Alpine Linux, because they are built at their development sites, outside the TeX Live source tree. Consequently, they are not available for most of the systems whose builds are described at this site.
If the gcompat package is installed on Alpine Linux, then binaries linked with the glibc library, instead of MUSL, are claimed to be runnable. I installed that package, and the TeX Live 2024 aarch64-linux subdirectory, on Alpine Linux, and verified that most of the executables ending in tex successfully report their version numbers with the argument --version. However, luajithbtex and luajittex fail to run, with the complaint Error relocating … fcntl64: symbol not found. The asy executable fails as well, but with many more missing symbols.
The default gcc family on CentOS 7 i686 (== x86) is version 4.8.5 20150623 (Red Hat 4.8.5-44), which is much too old to compile TeX Live releases of the last several years. Unlike the 64-bit CentOS 7, there is no collection of devtoolset-n (n = 7, 8, 9, 10, and 11) packages for later gcc compiler releases. Thus, a build of TeX Live 2024 is not possible on this O/S without a bootstrap process to build newer compilers.
Fortunately, I was able to build version 8.5.0 compilers with the 4.8.5 compilers, and use the newer compilers for a successful build of TeX Live 2024. The i686-centos7 directory has a copy of the libstdc++.so* files that are needed to run Asymptote. Simply set the LD_LIBRARY_PATH variable to point to its installed location on your local system, or better, put that setting in a wrapper script for your local use of Asymptote.
As on several other systems for TeX Live 2024, the Asymptote checks failed because the native version of Ghostscript, 9.25, is too old. I built and installed the latest Ghostscript version, 10.03.0, and installed the TeX Live 2024 packages etoolbox, epsf, hypdoc, media9, ocgx2, parskip, and texinfo that are needed for an Asymptote build. The Asymptote rebuild and validation was then flawless.
On CentOS 7.9.2009 x86_64, the native gcc compilers are the 2015-vintage version 4.8.5, ten major versions behind the latest ones! Fortunately, for x86_64, there are devtoolset-* packages for compiler versions 7, 8, 9, 10, and 11. On i686, however, those packages are not available.
As on several other systems for TeX Live 2024, the native version of Ghostscript, 9.25, is too old for a build of Asymptote. I built and installed the latest Ghostscript version, 10.03.0, and installed the TeX Live 2024 packages etoolbox, epsf, hypdoc, media9, parskip, ocgx2, and texinfo that are needed for a build of Asymptote.
The TeX Live 2024 build with the native GNU compilers (gcc-11.2.1) from the devtoolset-11 compiler package was problem free, except for Asymptote, which failed to build because of an undeclared function CURLOPT_XFERINFOFUNCTION at line 193 in parser.cc. Further investigation on newer systems shows that the unknown symbol is defined in /usr/include/curl/curl.h or /usr/include/x86_64-linux-gnu/curl/curl.h, and comments in those files note that it was introduced in libcurl version 7.32.0. The version of that package in CentOS 7 is 7.29.0, and thus, that symbol is unknown on this O/S. The workaround was a simple patch in parser.cc to comment out the line that refers to the missing symbol. The build and validation of Asymptote was then successful.
The TeX Live 2024 build with the native GNU compilers (gcc-9.2.1) on the rolling release CentOS Stream 8 on x86_64 was problem free.
The Clear Linux distribution, original developed by Intel Corporation, is also described in an encyclopedia article. Is an unusual distribution with its own unique package system. Unlike most other GNU/Linux distributions that package software into tens of thousands of small units, Clear Linux instead uses large bundles, installed and managed with the swupd utility; there are about 4000 such available. The system is almost stateless, with only 40 files in the /etc tree, compared to the thousands of files there in other distributions. The /boot directory exists, but is empty; its usual files are instead in /usr/lib/kernel. Packaged software corresponds to recent upstream releases, with clang-17.0.6, gc-10.01.1, and gcc-13.2.1 (20340305). There are no major versions of the operating system: it uses a rolling release model. The O/S lacks clisp and sigsegv library support, so xindy is not buildable, without installing those packages separately from source code.
Once I installed the devpkg-libXaw package bundle, the build of TeX Live 2024, including Asymptote, was flawless.
The TeX Live 2024 build with the native GNU compilers (gcc-10.2.1) on Debian 11.9 Linux ARM64 (little-endian Cortex-A57 aarch64 CPU) was problem free. The build was done in a VM on a physical machine ruuning Ubuntu 20.04, where /usr/bin/qemu-system-aarch64 reports version 4.2.1 (2019).
Comment: We have run QEMU version 4 (or earlier) emulations on Ubuntu 20.04 of 64-bit ARM systems with Debian 11 Linux, FreeBSD 13.1, and Rocky 9 Linux since 2021. To our surprise, qemu-7.0.0 on Ubuntu 22.10 does not run ARM64 successfully; the boot process dies immediately inside the BIOS, before a kernel can be started. The problem has persisted after system updates, but because the physical host is a server with about 70 running guest virtual machines, it is not practical to run Ubuntu 22.10 updates more than once or twice a year. The host machine is expected to be upgraded to Ubuntu 24.04 in mid-2024, at which point, we will retry ARM64 emulation in a much newer version of QEMU.
The Hewlett-Packard Precision Architecture RISC (PA-RISC, or just HPPA) was first marketed in 1996, and my site used to have several such machines running the vendor-supported Unix variant, HP-UX. Colleagues in the University of Utah Department of Computer Science (now the Kahlert School of Computing) did the port of Berkeley Unix (BSD) to that architecture. Sales of PA-RISC machines stopped in 2008, when HP and Intel introduced the new IA-64 (Itanium) architecture that they had jointly developed.
I tried for several years to get various versions of Debian GNU/Linux, NetBSD, and OpenBSD running on the QEMU emulation of PA-RISC, but although I was often able to get them to boot, they were unstable, and would die within minutes of starting. That changed in early January 2024, when I was able to build the latest QEMU release, 8.2.0c, on a physical machine running a prerelease of Ubuntu 24.04, and the qemu-system-hppa emulator has finally proved reliable. I now have Debian 11 and 12 virtual machines that run stably for weeks.
Early versions of PA-RISC were for a 32-bit world, and that is all that is currently supported in QEMU. However, later hardware designs added 64-bit addressing, and QEMU developers are working on supporting that too.
Of the many different CPU architectures supported by QEMU, two in particular have been 10 to 30 times slower than the others: Sun SPARC and HP PA-RISC. With QEMU version 8, that performance gap has narrowed, but even so, a partial TeX Live 2024 build on Debian 12 HPPA has run for four days.
The TeX Live 2024 build, except for Asymptote, with the native GNU compilers (gcc-12.2.0) on Debian 12 32-bit Motorola M68K was problem free.
Compilation of Asymptote was successful, but linking failed because the -ltirpc (transport-independent RPC) library is missing. When I tried to install it, the apt-get tool announced that it would first remove a large number of packages, including several libraries, and all of the native TeX Live, Mercurial, Python3, and others. I canceled the command at that point. Asymptote 2.85 (the current version is 2.88) is available in the TeX Live 2023 build for this system at Utah.
The TeX Live 2024 build with the native GNU compilers (gcc-12.2.0) on Debian 12 ppc64le (PowerPC64 Little Endian) was almost problem free. However, in the tests of Asymptote, several reported errors from Ghostscript. This has occurred on several platforms in the TeX Live 2024 build season, and is due to an old version (here, 10.0.0) of that software. A successfl build of the latest Ghostscript is since been done, and a fresh build of Asymptote was flawless.
The latest stable Debian release as of February 2024 is 12.5, but ISO images are available for prereleases of the next major release. I built a VM from a snapshot of that work on 12 April 2024, and installed a large number of needed packages
The TeX Live 2024 build with the native GNU compilers (gcc-13.2) on Debian 13 (code name trixie) x86_64 was problem free.
The TeX Live 2024 build with the native GNU compilers (gcc-8.3) on DragonFlyBSD 6.4.0 x86_64 was problem free.
The TeX Live 2024 build with the native GNU compilers (gcc-13.2.1 (20231011)) on Fedora 39 x86_64 was problem free.
The rolling release of the Fedora distribution of GNU/Linux is called Rawhide. It carries a version number, but that number can increase with system updates, when a snapshot of the code base is released separately under a fixed version number.
The TeX Live 2024 build with the native GNU compilers (gcc-14.0.1 (20240228)) on Fedora 41 (Rawhide) x86_64 was almost problem free. However, xdvi-xaw failed to build, because of this compilation error:
../../../texk/xdvik/gui/pagesel.c:541:41: error: passing argument 2 of 'XawListChange' from incompatible pointer type []8;; https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#\ index-Wincompatible-pointer-types-Wincompatible-pointer-types] 8;;] 541 | XawListChange(LIST_WIDGET, page_info.page_labels, 0, | ~~~~~~~~~^~~~~~~~~~~~ | | | char ** In file included from ../../../texk/xdvik/gui/pagesel.c:93: /usr/include/X11/Xaw/List.h:170:27: note: expected 'const char **' but argument is of type 'char **' 170 | _Xconst char **list, | ^ make[7]: [Makefile:921: gui/pagesel.o] Error 1 (ignored)
This is a known problem, caused by an argument type error in the Xaw header files, and the conversion of a warning to an error in recent gcc compiler releases. No simple source-code workaround has yet been found. Fedora 41 offers only a single gcc release, so there is no older compiler available to try. I could build an older compiler version on that system, but that would mean executables would be linked against libraries that exist only there, and would not work at other sites.
I did a fresh build with CFLAGS=-Wno-incompatible-pointer-types, and that led to a successful build, including the previously missing executable, xdvi-xaw.
The TeX Live 2024 build with the native GNU compilers (gcc-10.4.0) on FreeBSD 12.4 AMD64 (== x86_64) was problem free.
The official release of FreeBSD 13.3 for several CPU architectures was announced on 05 March 2024. On the same day, I built a virtual machine for it and installed a large collection of packages needed for TeX Live builds, and for my own software development and testing work.
The TeX Live 2024 build with the native GNU compilers (gcc-12.2.0) on FreeBSD 13.3 AMD64 (== x86_64) was problem free.
This virtual machine was built from the latest ISO image on 18 March 2023. The operating system was originally in a prerelease state, called 14.0-CURRENT. The official release was on 20 November 2023, and after system updates, the VM is now on the normal RELEASE channel, and reports 14.0-RELEASE-p5.
The TeX Live 2024 build with the native GNU compilers (gcc-12.2.0) on FreeBSD 14.0 AMD64 was problem free.
This virtual machine was built from the first official ISO image on 5 June 2024. The VM reports its version as 14.1-RELEASE.
The TeX Live 2024 build with the native GNU compilers (gcc-13.2.0) on FreeBSD 14.1 AMD64 was problem free.
This virtual machine was built from the latest development ISO image on 11 November 2023. The operating system is in a prerelease state, called 15.0-CURRENT
The TeX Live 2024 build with the native GNU compilers (gcc-12.3.0) on FreeBSD 15.0 AMD64 was problem free.
The TeX Live 2024 build with the native GNU compilers (gcc-12.2.0) on GhostBSD 24.01 AMD64 (based on FreeBSD 14.0-STABLE) was problem free.
Asymptote version 2.87 built, but with five missing features: Eigen, LSP, OpenGL, V3D, and WebGL. That is three more than on HelloSystem 0.8.2, even after I tried matching installed binary packages on those two systems.
The binary package system on GhostBSD 24.01 supplies TeX Live 2023. However, it is missing numerous other executables that are available in the build at this site.
Asymptote is not included in the GhostBSD texlive-full-20230313 package, but asy is available as a separate package. I installed it, and got this feature report:
% asy --version Asymptote version 2.81 [(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 CURL URL support Readline Interactive history and editing Sigsegv Distinguish stack overflows from segmentation faults threads Render OpenGL in separate thread 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) LSP Language Server Protocol GC Boehm garbage collector
Our TeX Live 2024 build of Asymptote supplies GC and XDR.
HardenedBSD is a fork of FreeBSD, with onging development work to increase security. There is binary package compatibility with FreeBSD, and a TeX Live install recognizes HardenedBSD, and supplies binaries in the directory bin/amd64-freebsd. The build host for TeX Live 2024 runs release 15.0-CURRENT-HBSD.
The TeX Live 2024 build with the native GNU compilers (gcc-12.2.0) on HardenedBSD 15.0 AMD64 failed during compilation of the Unicode libraries in the build directory path Work/libs/icu/icu-build. I forced the build to continue with make -i -k and then successfully built Asymptote. The complete build is missing about 25 executables.
Experiments with builds using gcc-9.5.0, gcc-10.5.0, and gcc-11.4.1 were successful, and there are binary package bundles for each of those compilers on this system.
HelloSystem is a relatively recent O/S development that is based on FreeBSD, but with a desktop much more like that of Apple macOS. It uses the FreeBSD binary and source package systems, so it should retain compatibility, except possibly for GUI software, with that system.
The latest version, HelloSystem 0.9.0, is based on FreeBSD 14.0-RELEASE.
HelloSystem is unusual in that its developers view end users as nothing but button pushers: there are no C header files on the initial system. Some Web searching finally tracked down the problem: the header files, and other files for ``developers'', are moved into a separate disk image, developer.img, that must be downloaded along with the installed ISO image. I used the one found at https://github.com/helloSystem/ISO/releases/tag/r0.8.1. It is not clear what to do with that image file: the usual mount command does not recognize it. However, if one uses the desktop GUI file manager to navigate to its local filepath, then simply clicking on it produces a password prompt, and then automatic installation of 2330 files in /usr/include, and likely many others elsewhere in the filesystem.
My first build attempt with the gcc-12.2.0 compilers failed, with GLIBC symbol conflicts in the Unicode library support.
I did a second build with the gcc-11.4.1 compilers, and that was problem free.
The TeX Live 2024 build with the native GNU compilers (gcc-10.5.0) on 64-bit NetBSD 10.0RC1 AMD64 (= x86_64) was mostly problem free. However, in the tests of Asymptote, several reported errors from Ghostscript. Those errors appear to be due to an old version of that software: /usr/pkg/bin/gs reports version 9.06, which dates from 2012 (!). There have been numerous updates in the last dozen years in Ghostscript to add new features, significantly tighten security, and completely rewrite the PDF backend.
I successfully built and installed the latest Ghostscript release, version 10.03.0, on this machines and then rebuilt Asymptote from a fresh TeX Live 2024 tree. That build was flawless, with no Ghostscript failures, so the asy executable in the installation directory has been replaced.
The TeX Live 2024 build with the native GNU compilers (gcc-10.4.0) on 32-bit NetBSD 10.0 (beta) i386 (= x86) was problem free.
Binaries for OpenBSD AMD64 releases have never been included in earlier TeX Live annual releases, because even minor versions of that O/S do not necessarily have binary executable compatibility. There need to be separate TeX Live binaries for OpenBSD versions x.0, x.1, x.2, …, where x = 1 (1995), x = 2 (1996), …, x = 7 (2021). OpenBSD 7.4 was released on 16 October 2023, and is supported for only one year. In recent years, new minor releases are expected in April and October.
The good news for OpenBSD users is that Robert Alessi has done successful builds of TeX Live 2024 for OpenBSD 7.4 and a prerelease of OpenBSD 7.5. They are available at http://www.ekdosis.org/texlive/, and his builds are discussed at https://sr.ht/~ralessi/texlive-openbsd/.
An independent build at Utah is in progress. An initial attempt with the gcc-8 compilers failed, so they were removed and replaced by gcc-11 compilers. Regrettably, OpenBSD only permits a single gcc release to be installed at one time, with compiler names egcc, eg++, egdc, egfortran, … It is certainly possible to install most software in version-specific independent trees; many operating system distributions already do this, and we have done so for decades at Utah for important packages for which we wish to keep older versions accessible.
OpenBSD 7.5 was released on 05 April 2024, and on that day, I built a new virtual machine for it, and installed a large collection of packages, among them the gcc-8.4.0 compiler family. The build of TeX Live 2024, including Asymptote, with that gcc family, was flawless!
The build of TeX Live 2024 on openSUSE Leap 15.2 with the default gcc-7.5.0 compiler was problem free. I had not expect that a 2017-vintage C/C++ compiler would be able to build all of TeX Live 2024, but it did!
The build of TeX Live 2024 on openSUSE Leap 15.5 with the nondefault compiler version gcc-11.3.0 was successful. The default /usr/bin/gcc is version 7.5.0 (2017).
The build of TeX Live 2024 on the rolling release openSUSE Tumbleweed i686 with the default compiler version gcc-12.2.1 was successful, except for issues in the Asymptote build with the older native version of Ghostscript. The compiler version is one major release behind that on x86_64 for this operating system. A similar version lag exists for Ghostscript.
As on a few other build hosts, I successfully built and installed the latest Ghostscript release, version 10.03.0, on this machine, and then rebuilt Asymptote from a fresh TeX Live 2024 tree. That build was flawless, with no Ghostscript failures, so the asy executable in the installation directory has been replaced.
The build of TeX Live 2024 on the rolling release openSUSE Tumbleweed x86_64 with the default compiler version gcc-13.2.1 was successful.
The build of TeX Live 2024 on Oracle Linux 8.9 (a member of the Red Hat / CentOS family) with the default compiler version gcc-9.2.1 was successful.
The build of TeX Live 2024 on Oracle Linux 9.3 (a member of the Red Hat / CentOS family) with the default compiler version gcc-11.4.1 was successful.
PureOS is a Debian-based GNU/Linux that supplies only free software. It is also described in an encyclopedia article. Based on the experience with other builds of TeX Live 2024, I first installed the ghostpdl-10.03.0 package from source code (because the native version of /usr/bin/gs is version 9.27, too old for TeX Live 2024), then a small scheme-basic system for TeX Live 2024, followed by installation with tlmgr of the packages etoolbox, epsf, hypdoc, media9, parskip, ocgx2, and texinfo that are needed for a build of Asymptote.
A build of TeX Live 2024 with the native gcc-8.3.0 compilers was successful.
The TeX Live 2024 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.
The TeX Live 2024 build with native compilers (gcc-9.4.0) on Ubuntu 20.04.6 (code name Focal Fossa) on s390x was problem free.
The TeX Live 2024 build with native compilers (gcc-12.2.0) on Ubuntu 22.10 (code name Kinetic Kudu) on x86_64 was mostly successful. However, this O/S level is no longer supported, and its package repository has been removed, so some packages needed for a full TeX Live build cannot be installed. The system is currently not in an in-place upgradable state, and will be rolled off to remote storage, then reinstalled with Ubuntu 24.04 after that release becomes official.
The main TeX Live 2024 build with native compilers (gcc-12.3.0) on Ubuntu 23.04 (code name Lunar Lobster) on RISC-V64 was problem free.
This was pleasant, because although builds for RISC-V64 systems were successful in 2020 and 2021, builds in 2022 proved impossible, and in 2023, the build of Asymptote required workarounds.
The TeX Live 2023 build with native compilers (gcc-13.2.0) on Ubuntu 23.10 (code name Mantic Minotaur) on x86_64 was problem free.
The Asymptote build is still missing a few features that are available in versions from earlier Ubuntu releases, because I could not identify the needed packages:
% asy --version ... DISABLED OPTIONS: V3D 3D vector graphics output WebGL 3D HTML rendering OpenGL 3D OpenGL rendering LSP Language Server Protocol
The build host is a physical machine that has been running a prerelease of the O/S since 22 November 2023. The official release is expected in late April 2024. Despite being in an early access state, the system has been completely reliable, and itself hosts a few virtual machines.
The TeX Live 2424 build with native compilers (gcc-13.2.0) on Ubuntu 24.04.6 LTS (Long-Term Support, until April 2029) (code name Noble Numbat) on x86_64 was problem free.
Ultimate Edition 6.6 is a GNU/Linux distribution similar to Ubuntu 20.04. The build on an x86_64 system was successful until the final Asymptote build, which failed because the native 2019-vintage Ghostscript 9.50 does not support some of the features needed.
As on NetBSD 10.0, I successfully built and installed the latest Ghostscript release, version 10.03.0, on this machine, and then rebuilt Asymptote from a fresh TeX Live 2024 tree. That build was flawless, with no Ghostscript failures, so the asy executable in the installation directory has been replaced.
The TeX Live 2024 build with native compilers (gcc-13.2.0) on Void Linux (rolling release) on i686 (== x86) was problem free.