Index of /pub/texlive-utah

[ICO]NameLast modifiedSize

[PARENTDIR]Parent Directory  -
[DIR]Images/2025-02-04 15:28 -
[TXT]README.html2025-03-13 08:53 211K
[   ]README.sok2023-03-15 05:41 7.0K
[   ]SYS.texlive-2025.csh2025-02-10 07:58 8.9K
[   ]SYS.texlive-2025.sh2025-02-10 07:59 7.7K
[   ]apostolos-syropoulos-myBuild.sh2025-02-08 11:47 281
[DIR]bin/2025-03-12 14:08 -
[   ]build-asymptote.sh2025-02-19 16:20 8.2K
[   ]build-texlive-2025.sh2025-02-18 10:45 65K
[   ]make-texlive-binary-distributions.sh2025-02-04 13:08 1.7K
[   ]make-texlive-snapshot-2025.sh2025-02-04 06:03 2.2K
[   ]show-file-counts.sh2025-02-04 12:57 2.6K
[   ]show-lib-deps.sh2022-01-13 06:51 1.4K
[   ]show-texlive-libs.sh2022-01-13 06:52 2.1K
[   ]update-texlive-2025.sh2025-02-04 09:14 6.5K


                     

TEX Live 2025 early access

Original version: Tue Feb 4 12:51:12 2025
Last updates: Tue Feb 4 12:51:12 2025 … Thu Mar 13 06:01:57 2025
Current time in Salt Lake City, Utah, USA: Thursday, 13-Mar-2025 10:23:14 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, 2023. and 2024.

Further updates for TeX Live 2024 are frozen sometime in March 2025, and future updates then happen only in the 2025 (and later) trees. Final binaries for 2025 are available within a few days of the freeze, after which TeX Live 2025 ISO image production work begins. That work is expected to be completed on in mid-March 2025. 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 2025 distribution. The official release occurred on 8 March 2025, 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/texcol2025.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-2025.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 2025 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 13 March 2025, the following builds have been (mostly) successful by the TeX Live team, or at Utah:

    % show-file-counts.sh
    491      aarch64-debian12
    504      aarch64-linux
    504      amd64-freebsd
    487      amd64-freebsd134
    487      amd64-freebsd135
    491      amd64-freebsd142
    489      amd64-freebsd142-clang
    489      amd64-freebsd150
    489      amd64-freebsd150-clang
    490      amd64-ghostbsd2401
    484      amd64-hardenedbsd15
    486      amd64-hello090
    502      amd64-netbsd
    494      amd64-netbsd100
    494      amd64-netbsd101
    457      amd64-openbsd73
    457      amd64-openbsd74
    493      amd64-openbsd75
    493      amd64-openbsd76
    505      amd64-openbsd76-alessi
    505      amd64-openbsd76-alessi-current
    492      amd64-openbsd77-pre
    497      armhf-debian12
    493      armhf-linux
    504      i386-freebsd
    505      i386-linux
    493      i386-netbsd
    484      i386-solaris
    496      i686-debian12
    490      i86pc-solaris114
    489      loongarch64-debian12
    487      m68k-debian12
    489      ppc64le-debian12
    480      ppc64le-rocky9
    487      riscv64-debian12
    490      riscv64-ubuntu2304
    485      s390x-centos10
    483      s390x-debian12
    485      s390x-ubuntu2204
    483      s390x-ubuntu2404
    506      universal-darwin
    493      x86_64-alma95
    491      x86_64-alpine321
    492      x86_64-centos10
    490      x86_64-centos10-clang
    495      x86_64-centos7
    495      x86_64-centos8
    496      x86_64-centos9
    490      x86_64-clearlinux
    499      x86_64-darwinlegacy
    496      x86_64-debian12
    495      x86_64-debian13
    496      x86_64-dragonflybsd640
    495      x86_64-fedora39
    497      x86_64-fedora41
    505      x86_64-linux
    497      x86_64-linuxmusl
    494      x86_64-opensuse151
    493      x86_64-opensuse156
    494      x86_64-opensuse160
    493      x86_64-pc-solaris2.11
    495      x86_64-pureos10
    494      x86_64-rocky8
    489      x86_64-rocky9
    485      x86_64-solaris
    482      x86_64-solaris114
    493      x86_64-trisquel11
    496      x86_64-ubuntu2004
    494      x86_64-ubuntu2204
    499      x86_64-ubuntu2404
    496      x86_64-ubuntu2504

    Total: 71 systems

    Missing binaries [compared to x86_64-linux]:

    aarch64-debian12                : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart
    aarch64-linux                   : biber-ms
    amd64-freebsd                   : biber-ms
    amd64-freebsd134                : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart xasy
    amd64-freebsd135                : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart xasy
    amd64-freebsd142                : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart
    amd64-freebsd142-clang          : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart
    amd64-freebsd150                : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart
    amd64-freebsd150-clang          : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart
    amd64-ghostbsd2401              : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart
    amd64-hardenedbsd15             : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texluajit texluajitc texmfstart xindy xindy.mem xindy.run
    amd64-hello090                  : biber biber-ms context context.lua contextjit ebb luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart
    amd64-netbsd                    : asy biber biber-ms
    amd64-netbsd100                 : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    amd64-netbsd101                 : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    amd64-openbsd73                 : amstex biber biber-ms context context.lua contextjit csplain dvilualatex dvilualatex-dev dviluatex eplain etex hilatex jadetex latex latex-dev lollipop luacsplain luajittex lualatex lualatex-dev luametatex luatools man 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 uplatex uplatex-dev utf8mex xelatex xelatex-dev xmltex
    amd64-openbsd74                 : amstex biber biber-ms context context.lua contextjit csplain dvilualatex dvilualatex-dev dviluatex eplain etex hilatex jadetex latex latex-dev lollipop luacsplain luajittex lualatex lualatex-dev luametatex luatools man 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 uplatex uplatex-dev utf8mex xelatex xelatex-dev xmltex
    amd64-openbsd75                 : biber biber-ms context context.lua contextjit luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    amd64-openbsd76                 : biber biber-ms context context.lua contextjit luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    amd64-openbsd76-alessi          : biber biber-ms ebb
    amd64-openbsd76-alessi-current  : biber biber-ms ebb
    amd64-openbsd76-current         : biber biber-ms ebb
    amd64-openbsd77-pre             : biber biber-ms context context.lua contextjit luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    armhf-debian12                  : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    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-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-debian12                   : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    i86pc-solaris114                : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart
    loongarch64-debian12            : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart
    m68k-debian12                   : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart xasy
    ppc64le-debian12                : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart
    ppc64le-rocky9                  : asy biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texluajit texluajitc texmfstart xasy xindy xindy.mem xindy.run
    riscv64-debian12                : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart xasy
    riscv64-ubuntu2304              : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit texexec texluajit texluajitc texmfstart
    s390x-centos10                  : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texluajit texluajitc texmfstart xindy xindy.mem xindy.run
    s390x-debian12                  : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texluajit texluajitc texmfstart xindy xindy.mem xindy.run
    s390x-ubuntu2204                : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texluajit texluajitc texmfstart xindy xindy.mem xindy.run
    s390x-ubuntu2404                : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texluajit texluajitc texmfstart xindy xindy.mem xindy.run
    universal-darwin                : xindy.mem
    x86_64-alma95                   : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texmfstart xindy xindy.mem xindy.run
    x86_64-alpine321                : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texmfstart xindy xindy.mem xindy.run
    x86_64-centos10                 : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texmfstart xindy xindy.mem xindy.run
    x86_64-centos10-clang           : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texmfstart xindy xindy.mem xindy.run
    x86_64-centos7                  : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    x86_64-centos8                  : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    x86_64-centos9                  : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    x86_64-clearlinux               : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texmfstart xindy xindy.mem xindy.run
    x86_64-darwinlegacy             : pdfclose pdfopen texprof texprofile xdvi xdvi-xaw
    x86_64-debian12                 : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    x86_64-debian13                 : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    x86_64-dragonflybsd640          : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    x86_64-fedora39                 : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    x86_64-fedora41                 : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    x86_64-linuxmusl                : asy biber-ms tex2xindy texindy xasy xindy xindy.mem xindy.run
    x86_64-opensuse151              : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    x86_64-opensuse156              : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart xasy
    x86_64-opensuse160              : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    x86_64-pc-solaris2.11           : biber-ms context context.lua contextjit luajithbtex luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    x86_64-pureos10                 : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    x86_64-rocky8                   : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    x86_64-rocky9                   : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texmfstart xindy xindy.mem xindy.run
    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-solaris114               : biber biber-ms context context.lua contextjit luajithbtex luajittex luametatex luatools mfluajit mfluajit-nowin mtxrun mtxrun.lua mtxrunjit tex2xindy texexec texindy texluajit texluajitc texmfstart xasy xindy xindy.mem xindy.run
    x86_64-trisquel11               : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart xasy
    x86_64-ubuntu2004               : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    x86_64-ubuntu2204               : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    x86_64-ubuntu2404               : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit texexec texmfstart
    x86_64-ubuntu2504               : biber biber-ms context context.lua contextjit luametatex luatools mtxrun mtxrun.lua mtxrunjit 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/2025/bin/x86_64-ubuntu2404
    Library dependencies of TeX Live executables in /usr/uumath/texlive/2025/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
    libXext                      asy xdvi-xaw
    libXmu                       xdvi-xaw
    libXpm                       xdvi-xaw
    libXt                        xdvi-xaw
    libboost_filesystem          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 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
    libcrypt                     asy
    libcrypto                    asy
    libcurl                      asy
    libdl                        asy inimf mf mflua mflua-nowin         \
                                 mfluajit mfluajit-nowin pdfclose       \
                                 pdfopen xdvi-xaw
    libexpat                     xelatex xelatex-dev xetex
    libffcall                    xindy.run
    libfftw3                     asy
    libfontconfig                xelatex xelatex-dev xetex
    libfreebl3                   asy
    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 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
    libnspr4                     asy
    libnss3                      asy
    libnssutil3                  asy
    libpcre                      asy
    libplc4                      asy
    libplds4                     asy
    libpng15                     xelatex xelatex-dev xetex
    libpthread                   asy 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 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/2025/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 2025, we provide them in a bundle, suitable for unpacking in your top-level /path/to/texlive/2025 directory. Compression reduces the bundle from about 127MB to 80MB: the latest version here is bin/fmt-2025-02-04.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-2025.csh

    ### ash, bash, dash, ksh, pdksh, sh, and sh login shells
    ### (POSIX-compliant, or supersets thereof)
    . $prefix/skel/SYS.texlive-2025.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 2025 release first, ahead of any local, older TeX Live, or vendor-supplied installations of TeX.


Resource requirements

An installed TeX Live 2025 tree with all available packages, and binaries for one O/S architecture, requires about 12GB of disk space. It contains about 17_250 directories and 244_000 files. Smaller storage totals are possible with the installer programs in the official TeX Live 2025 ISO image, which allow you to choose subsets for your local installation.

Building TeX Live 2025 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 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 2025 tree costs between US$0.17 and US$0.75, 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.


Choosing a TeX Live repository mirror

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.


Installing the TeX Live 2025 pre-test

The official description of installing the TeX Live 2025 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 2025 on ??-Mar-2025, 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-20250204

    ### 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/2025

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_250 directories and 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 2025 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.


Updating your TeX Live 2025 pre-test installation

Every few days, I update my TeX Live 2025 pre-test installation tree like this on an Ubuntu 24.04 workstation:

    $ PATH=/path/to/texlive/2025/bin/x86_64-linux-ubuntu2404:$PATH
    $ export PATH

    ### Update TeX Live Manager itself (this usually does nothing)
    $ tlmgr update --self

    ### Update TeX Live 2025 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/2025/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 Thursday, 13-Mar-2025 10:23:14 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.


Updating an older TeX Live installation

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.


Prerequisites for building TeX Live 2025

Prior to attempting a build of TeX Live 2025, 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-14.2.0 is the latest official release in 2025, although weekly snapshots for gcc-15 have been available since April 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. Building TeX Live 2025 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.
    ================================================================

Prerequisites: Alpine Linux

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 clang17-extra-tools
    # apk add cmake
    # apk add coreutils
    # apk add cvs
    # apk add doas-sudo-shim
    # apk add elinks
    # apk add expect
    # apk add findutils
    # apk add flex
    # apk add fontconfig-dev
    # apk add freetype-dev
    # apk add gawk
    # apk add gcc
    # apk add gcc-gnat
    # apk add gcc-go
    # apk add gcc-java
    # apk add gfortran
    # apk add ghostscript-dev
    # apk add ghostscript-fonts
    # apk add git
    # apk add gmp-dev
    # apk add gnupg
    # 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 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 2025 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

Prerequisites: ClearLinux

For TeX Live 2025 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

Prerequisites: Debian family

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-{13,14,15,16,19} clisp cmake curl cvs dash      \
            dejagnu diffpdf ecl epstool evince expect fig2dev figlet    \
            file flex fontconfig-dev gawk gcc-{11,12,13,14} 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 2025 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 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

Prerequisites: FreeBSD family

For TeX Live 2025 builds on the FreeBSD family and its descendants, which includes 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 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 pkgconf
    # pkg install -y py311-qt5-pyqt
    # pkg install -y python3
    # pkg install -y texinfo

Prerequisites: NetBSD family

For NetBSD, I install these additional packages:

    # pkg_add boehm-gc
    # pkg_add clisp
    # 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

Prerequisites: OpenBSD

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 2025 on OpenBSD, I install these additional packages (some are unavailable at 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

Prerequisites: Red Hat family

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):

    # 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 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(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++

Prerequisites: Solaris family

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

Prerequisites: SUSE family

For openSUSE and SUSE Linux, I install these additional packages:

    # zypper install -y doxygen
    # zypper install -y eigen3-devel
    # zypper install -y freeglut-devel-32bit
    # zypper install -y glm-devel
    # zypper install -y gsl-devel
    # zypper install -y libboost_filesystem1_75_0-devel
    # zypper install -y libboost_timer1_75_0-devel
    # zypper install -y libcurl-devel
    # zypper install -y fftw3
    # zypper install -y fftw3-devel
    # zypper install -y libGLEW2_2
    # zypper install -y libltdl7
    # zypper install -y libsigsegv-devel
    # 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 libzstd-devel
    # zypper install -y Mesa-libd3d-devel
    # zypper install -y Mesa-libGL-devel
    # zypper install -y Mesa-libGL-devel
    # zypper install -y Mesa-libglapi-devel
    # zypper install -y Mesa-libva
    # zypper install -y python311-qt5-devel
    # zypper install -y readline6-devel
    # zypper install -y texinfo
    # zypper install -y xcb-util-devel

Asymptote build summary

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 2.88 [(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
    Readline Interactive history and editing
    Sigsegv  Distinguish stack overflows from segmentation faults
    GC       Boehm garbage collector
    threads  Render OpenGL in separate thread

    DISABLED OPTIONS:
    LSP      Language Server Protocol

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.

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-2025.* scripts to set the search path and environment variables for TeX Live 2025, 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 2025, Asymptote has been successfully built for most systems.

For more on prerequisites for TeX Live builds, see here and here.


Build problems and other remarks for TeX Live 2025

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 2025!

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.


Building TeX Live 2025 with clang compilers

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 2025 contains about 17_250 directories and about 480 Makefiles. I have been able to use both compiler families for building TeX Live 2025 on FreeBSD 14 x86_64, 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 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.


Build reports for various platforms

This major section contains reports of the TeX Live 2025 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 9.5 s390x failure

Multiple attempts to create a virtual machine for Alma Linux 9.5 on s390x have failed. The installer get its initial configuration, user accounts, disk format, and package selection, and proceeds to install packages, as is typical for O/S instalations. Then, after several hours, it declares an unexpected error in package installations, and hangs. This has happened on five attempts with two different installer ISO images. I have at least 18 VMs for S390X, on various CentOS, Debian, Fedora, openSUSE, Rocky, and Ubuntu releases, so the VM creation failure for Alma Linux 9.5 is unexpected.

I am now going to try to create a VM for Alma Linux 8.x on s390x: TO BE CONTINUED.


Alma Linux 9.5 x86_64 success [with workarounds]

The build of TeX Live 2025 on Alma Linux 9.5 x86_64 was successful, including Asymptote version 2.88. The compilers are from the gcc-11.5.0 release.

However, when I attempted to build Asymptote 2.98, it failed, complaining that boost and doxygen support were missing. Alma Linux does not supply doxygen, and I had already installed major boost packages that were reported to be needed for Asymptote. I therefore redid the build, but changed the configuration option --enable-lsp to --disable-lsp: that new build succeeded.

For both versions of Asymptote, sigsegv support is missing, because, as on CentOS 9, the system package libsigsegv provides libraries, but not the header files that are needed to build code that uses that library. This is an aggravating, and long-standing, flaw in the entire Red Hat family that afflicts sigsegv, the flex lexical analyzer, and libtirpc. Another serious deficiency on those systems is the lack of clisp. In past years, I have often built that program from source, in order to be able to build xindy. For TeX Live 2025, I have been too busy with other systems to do that for Alma Linux.


Alpine 3.21 x86_64 success

The build of TeX Live 2025 on Alpine 3.21 x86_64 (released 8-Jan-2025) was successful, including Asymptote versions 2.88, 2.96, and 3.01. The compilers are from the gcc-14.2.0 release.


CentOS 7.9 ppc64be failure

As noted in the section for this O/S on x86_64, C++ library issues prevented the build of TeX Live 2025 on this big-endian PowerPC system, and there is no longer a package repository available to install additional compiler versions.


CentOS 7.9 x86_64 partial success

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 2025 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.

I then went to a virtual machine where I had installed optional CentOS packages for gcc versions 7, 8, 9, 10, and 11. With the gcc-8 compiler, the build of TeX Live 2025 was successful. However, Asymptote would not build because the libcurl package on that system is too old. I therefore just copied over the 2024 version of Asymptote-2.88 into the 2025 installation tree.

When Asymptote-3.00 was announced on 17-Feb-2025, I tried a build of it on CentOS 7.9, adding the option --disable-curl. That immediately failed because it needs Python-3, and this system has only Python-2.7.


I also tried a build of Asymptote-2.88 with the --disable-curl option. That succeeded, so the binary directory offers both 2024 and 2025 versions of asy, where the earlier one has curl support.


CentOS Stream 8 x86_64 success [with workarounds]

The build of TeX Live 2025 on CentOS Stream 8 x86_64 with native compilers gcc-8.5.0 was successful, including Asymptote 2.88.

Later versions of Asymptote failed to build on this system, until I found the problem: /usr/bin/python3 is version 3.6.8, and that is too old. Fortunately, there is a newer version in the package system, and this recipe produced a working Asymptote 3.01:

    % env PYTHON=/usr/bin/python3.11                              \
          TL_CONFIGURE_FLAGS=--disable-lsp                        \
          $prefix/src/texlive/build-asymptote.sh texlive-20250307

CentOS Stream 9 x86_64 success [with workarounds]

The build of TeX Live 2025 on CentOS Stream 9 x86_64 with native compilers gcc-11.5.0 was successful, including Asymptote 2.88.

I later successfully built and installed Asymptote 2.98, but had to manually configure it like this:

     ./configure --disable-lsp --disable-sigsegv --enable-texlive-build \
                 --prefix=/tmp/asyinst && make all

The reason is that CentOS 9 and earlier lack a package to provide /usr/bin/libtool. The libsigsegv package provides the libsigsegv.so.* libraries, but omits the sigsegv.h header file that is needed to build code locally to use that package! The LSP feature must also be disabled, because without it, the build tries to find boost and PyQT5 files that do not exist in the vendor package distribution.

The new Asymptote reports these features:

    % asy --version
    Asymptote version 2.98 [(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
    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
    XDR      External Data Representation (portable binary file format for V3D)
    LSP      Language Server Protocol
    Sigsegv  Distinguish stack overflows from segmentation faults

The last block is due to lack of CentOS 9 vendor packages needed for those features.


CentOS Stream 10 ppc64le failure

Compilation of TeX Live 2025 on CentOS Stream 10 ppc64le failed with internal compiler error: Segmentation fault in path-search file kpsestat.c, and in the Unicode library file ubidi.cpp with the native gcc-14.2.1 compiler family. The package system does not supply any other version of gcc.

I then switched to the clang-19.1.7 compiler family, but that too failed with internal compiler errors, this time in the pixman package in file pixman-fast-path.c. The package system does not supply any other version of clang.

A build from source code of a recent version of gcc and all its supported compilers takes about 45 minutes on one of our 32-core 64-hyperthread amd64 servers. However, a build on a virtual machine for the s390x CPU for just gcc and g++ took one week! Fortunately, that build was successful. I may consider such a build for CentOS Stream 10 ppc64le, after increasing the CPU count and memory size on its virtual machine.


CentOS Stream 10 s390x success [with workarounds]

The build of TeX Live 2025 on CentOS Stream 10 S390X with native compilers from gcc-14.2.1 failed with argument type mismatch errors in compiling pagesel.c in xdvik. There is more on that problem in the next section.

A new build with the clang-19.1.1 compilers was successful, including for Asymptote versions 2.88 and 3.00. The CentOS 10 package system for s390x lacks eigen, gsl, sigsegv, and texinfo. I installed the latter from source code, but have not done so for the other three.


CentOS Stream 10 x86_64 success [with workarounds]

The build of TeX Live 2025 on CentOS Stream 10 x86_64 with native compilers from gcc-14.2.1 failed with argument type mismatch errors in compiling pagesel.c in xdvik. No other version of gcc is available in the package system.

    ../../../texk/xdvik/gui/pagesel.c: In function 'xaw_update_list':
    ../../../texk/xdvik/gui/pagesel.c:541:41: error: passing argument 2 of
     'XawListChange' from incompatible pointer type [-Wincompatible-pointer-types]
      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,
          |                           ^

In that header file, the function prototype looks like this:

    void XawListChange
    (
     Widget                 w,
     _Xconst char           **list,
     int                    nitems,
     int                    longest,
    #if NeedWidePrototypes
     int                    resize
    #else
     Boolean                resize
    #endif
     );

That is identical to the prototype on an Ubuntu 24 system where the build succeeded, but the definitions of _Xconst may differ between the two systems.

I restarted a fresh build with the clang-19.1.7 compiler family, and that succeeded.

Compilation of Asymptote 2.99 failed with clang, which could not find the standard system header file <cassert>, even though it is present in the filesystem as /usr/include/c++/14/cassert. A one-line test program that includes that header file compiles with both clang++ and g++, so the build failure is puzzling. I therefore switched back to gcc, and that build succeeded.

The clang build failure bothered me, but on repeated attempts, it persisted. I therefore tried a simpler approach with ./configure CC=clang CXX=clang++ CXXFLAGS=-std=c++17 && make all check, and that succeeded.

A study of the build log file found the cause, exhibited with a one-line test file:

    % cat foo.cpp
    #include <cassert>

    ### compiler invocation recorded in log file
    % clang++ -c -fPIE -std=c++17 -stdlib=libc++ -Wall -Werror -Wno-parentheses foo.cpp
    foo.cpp:1:10: fatal error: 'cassert' file not found
        1 | #include <cassert>
          |          ^~~~~~~~~
    1 error generated.

    ### remove one compiler option:
    % clang++ -c -fPIE -std=c++17                -Wall -Werror -Wno-parentheses foo.cpp
    [no error report]

The offending option, -stdlib=libc++, is mentioned only twice in the Asymptote 2.99 source tree, in ltmain.sh and gc/libtool, and is not supplied by my build-asymptote.sh wrapper.

As of 18 February 2025, the master TeX Live 2025 source tree has had patches applied to fix the compilation failures in xdvik, and builds with both native clang and gcc compilers are now successful, including Asymptote-3.00.


Clear Linux x86_64 success [with workarounds]

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 700 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-19.1.5, gs-10.04.0, and gcc-14.2.1 (20250215). 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 2025 was successful.

I was able to build Asymptote-3.00, but, despite having all available boost bundles installed, I had to add the configure option --disable-lsp. The asy --version output reports that the LSP and Sigsegv features are disabled.


Debian 11 alpha failure

A build of TeX Live 2025 on Debian 11 Alpha failed because of inconsistencies in the package system that made it impossible to install needed packages. An apt-get update command downloads a registry of available packages, but apt-get install fails because the registered package is absent from the package Web site. I visited that site in a Web browser, and saw different, and newer, versions of the packages that were compiled as recently as March 2024, showing that the registry is simply wrong.

Support for the DEC Alpha CPU was terminated at Debian 11, so no newer Debian operating system is available for that machine.


Debian 12 aarch64 (arm64) success

The build of TeX Live 2025 on a Canakit Raspberry Pi 500 running Debian 12, with native gcc-12.2.0 compilers, was successful. Build of Asymptote versions 2.88, 2.98, 3.00, and 3.01 also succeeded.

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!]. The whole computer is about the dimensions of a deck of playing cards, but twice as thick.

In interactive use, this Raspberry Pi is notably peppier than our fastest Intel x86_64 (amd64) systems. I was even able to install a virtualization system on it, and then in that, install Fedora 41 for an emulated x86_64 CPU. That is the inverse of most of my virtual machines, which normally are hosted on several different x86_64 physical machines.

The limited memory and core count is, however, a constraint for parallelizable activities: the TeX Live 2025 build took about two hours of wall clock time, with another 15 minutes for the Asymptote build. The filesystem storage size is about three times more than I normally allocate to virtual machines for TeX Live builds, and thus, is more than ample.


Debian 12 armhf success

The build of TeX Live 2025, including Asymptote 2.98, 2.99, 3.00, and 3.01, using native gcc-12.2.0 compilers on Debian 12 armhf (32-bit ARM with hardware floating-point) was problem free.


Debian 12 i686 success

The build of TeX Live 2025, including Asymptote 2.88, 2.98, and 3.01, with native gcc-12.2.0 compilers on Debian 12 i686 (Intel x86) was problem free.


Debian 12 loongarch64 success [with workarounds]

Loongarch64 is the name of a computer CPU architecture that evolved in China from the Stanford University MIPS design. It is sometimes referred to as the Godson architecture. The Chinese company Loongson Technology originally designed MIPS 32-bit and 64-bit processors, and the name Loongson is a two-character Chinese name that translates as Dragon Core. However, the latest loongarch64 designs are no longer compatible with the MIPS instruction set.

I noticed several years ago that Loongson is one of the CPU architectures supported by both gcc (from November 2008) and qemu, but several attempts to create a virtual machine for that CPU always failed.

Our software test laboratory at my site has hundreds of virtual and physical machines, and it is of strong interest to have machines for as many different CPU architectures as possible, because testing on them helps ferret out bugs that are due to programmers' faulty assumptions, and misunderstandings, of CPU architectures and memory layout. Most user-level software should know little or nothing about the underlying hardware: it is the job of the operating system to provide a suitable programming interface so that hardware can be replaced without changes to user software, apart from a possible recompilation if the CPU changes.

I have long followed several Debian mailing lists for various CPU architectures, and in November 2024, I was able to initiate e-mail exchanges with one of the Debian developers who had mentioned having a running Loongson system. I learned that Debian support for Loongson is still a work in progress, and in particular, one needs Loongson firmware that is not yet available in the Debian package system. He showed me how to install it on a Fedora system, and then copy over the /usr/share/edk2 and /usr/share/qemu/firmware/50-edk2-loongarch64.json files from Fedora to the Ubuntu host where I wanted to run the virtual machine under QEMU. Here is what the core of the installer script looks like:

    qemu-system-loongarch64                                     \
        -m 4G                                                   \
        -machine virt                                           \
        -bios `pwd`/edk/edk2/loongarch64/QEMU_EFI.fd            \
        -smp cpus=4                                             \
        -netdev user,id=eth0,hostfwd=tcp::5900-:5900            \
        -net nic,netdev=eth0                                    \
        -device nec-usb-xhci,id=xhci,addr=0x1b                  \
        -device usb-tablet,id=tablet,bus=xhci.0,port=1          \
        -device usb-kbd,id=keyboard,bus=xhci.0,port=2           \
        -initrd install-initrd.gz                               \
        -kernel install-vmlinuz                                 \
        -append "root=/dev/sda1 console=ttyS0"                  \
        -nographic                                              \
        -cdrom $ISO/debian-12.0.0-loong64-NETINST-1.iso         \
        -drive file=`pwd`/debian-12-loong64.qcow2,format=qcow2

The -bios option supplies the location of the firmware files copied from Fedora. The -initrd and -kernel options supply the names of two files extracted with the guestfish utility from the ISO image file named in the -cdrom option. The two files have an added prefix install-, because they need to be distinguished from similar files extracted after installation has succeeded.

Once the installation completed, I shutdown the virtual machine, used guestfish to extract from the /boot directory the newer files initrd.img and vmlinuz, and created a new startup script that looks like this:

    qemu-system-loongarch64                                     \
        -m 16G                                                  \
        -machine virt                                           \
        -bios `pwd`/edk/edk2/loongarch64/QEMU_EFI.fd            \
        -smp cpus=4                                             \
        -device nec-usb-xhci,id=xhci,addr=0x1b                  \
        -device usb-tablet,id=tablet,bus=xhci.0,port=1          \
        -device usb-kbd,id=keyboard,bus=xhci.0,port=2           \
        -initrd initrd.img                                      \
        -kernel vmlinuz                                         \
        -append "root=/dev/vda2 console=ttyS0"                  \
        -nographic                                              \
        -drive file=`pwd`/debian-12-loong64.qcow2,format=qcow2  \
        -net nic,model=e1000,netdev=net0                        \
        -netdev user,\
    dns=192.168.123.1,\
    dnssearch=example.com,\
    dnssearch=vm.example.com,\
    id=net0,\
    net=192.168.123.0/24,\
    restrict=off,\
    ipv6=off,\
    hostfwd=tcp::24222-192.168.123.242:22

Only a few major architectures are directly supported by the virt-manager GUI tool that makes virtual machine creation relatively easy. Loongson is one of many CPUs where complicated shell scripts with too many unguessable options are needed. In particular, networking is complicated by the inability to assign a direct IPv4 network address. Instead, one has to use traffic forwarding through a special port. That is done through an entry like this in the $HOME/.ssh/config file:

    Host = debian12-loong64.vm.example.com debian12-loong64
            HostName = 127.0.0.1
            ProxyJump aaa.bbb.ccc.ddd,127.0.0.1:24222

A shell command ssh debian12-loong64 then uses port 24222, the concatenation of the last octet of the IPv4 address, 242, with the standard port number, 22, for ssh connections. In the ProxyJump line, the first IPv4 address is that of the host that runs the virtual machine. The second IPv4 address is the standard one for a local host, and the final field is the forwarding port number.

The Loongson machine has run stably since its creation several months ago, and I have successfully built many package on it, including several of my own that deal with the internals of computer arithmetic, and thus, required changes to handle the loongarch64 CPU. Apart from such expected changes, the machine has been trouble free for software porting, and with more than 150_000 Debian packages available, it provides a rich software development environment that is equivalent to that for other CPU types supported by Debian. In particular, the package system has a development version of TeX based on TeX Live 2025 sources.

I was therefore surprised when my standard script, build-texlive-2025.sh, failed on this VM using native gcc-14.2.0 compilers when it reached the point of compiling the libpng library. Consultation with another TeX Live team member, and investigation of the libpng code, showed that it had received extensive modifications for loongarch64 in January 2024 to support access to machine-specific instructions for graphics processing. The libpng code in TeX Live is, however, not a simple unbundling of the standard distribution, but has substantial rearrangements handled by another TeX Live team member.

My first thought was that perhaps there is a conflict between installed files for the Debian libpng package with those in TeX Live, even though the latter is intended to use only the version inside its own tree. Removing the Debian package is not possible, because that would also remove hundreds of other critical packages that depend on it.

To test my conjecture, I temporarily removed read access from the installed Debian libpng files. However, that did not repair the TeX Live build failure.

The next attempt was to predefine a compiler macro with TL_CONFIGURE_FLAGS=CFLAGS=-DPNG_LOONGARCH_LSX_IMPLEMENTATION=1, because it looked like the architecture might not have been properly identified by compiler symbols. That too failed.

If the Loongson architecture is unknown to libpng, it should fall back to using portable, but slower, code. Examination of the libpng source tree showed that it identified the Loongson CPU only via a single predefined macro. Thus, undefining that macro might be a solution. I therefore did that in a new build attempt with TL_CONFIGURE_FLAGS=CFLAGS=-U__loongarch_sx. That resulted in the libpng library being successfully compiled, but alas, later in the build, it broke another part of TeX Live.

My final try entirely replaced the source/libs/libpng directory with the one from the last annual TeX Live tree that did not have the Loongson code modifications, the 2023 version.

That fix allowed the rest of the build to complete normally. Both Asymptote 2.98 and 3.01 built with all of their features enabled.

This machine has been the one that posed the greatest difficulty in building TeX Live 2025, but it is gratifying to have finally succeeded, after more than three weeks of failed experiments. I'm prepared to work with other team members to find a solution to the libpng build failures on Loongson, and also to get that library code advanced to the latest release. If we succeed, then Loongson should be as simple to support as x86_64 in future annual TeX Live releases.

The virtual machine installation and startup scripts given at the start of this section should help other TeX Live developers create their own Loongson instances, ideally also for other O/S distributions that support that architecture. TeX and its software suite deserve to be available for everyone!


Debian 12 m68k partial success

The TeX Live 2025 build, except for Asymptote and xindy, with the native GNU compilers (gcc-13.3.0) on Debian 12 32-bit Motorola m68k was problem free.

Asymptote 2.88 failed to compile runarray.c because, after 7 minutes, g++ ran out of memory. The system already has the maximum memory supported by the architecture, and attempts with compiler versions 10, 12, 13, and 14, and with optimization level -O3 removed, failed for the same reason. The clang compiler family does not support the m68k architecture, so there are no other compiler choices on this system.


Debian 12 ppc64le success

The build of TeX Live 2025, including Asymptote 2.88 and 3.01, with native gcc-12.2.0 compilers on Debian 12 ppc64le (64-bit PowerPC with little-endian addressing) was problem free.


Debian 12 riscv64 success

The build of TeX Live 2025, including Asymptote 3.01, with native gcc-14.2.0 compilers on Debian 12 riscv64 was problem free.


Debian 12 s390x success

The build of TeX Live 2025 with native gcc-12.2.0 compilers on Debian 12 s390x was problem free. The build of Asymptote 3.01 also succeeded.


Debian 12 x86_64 success

The build of TeX Live 2025, including Asymptote 2.98, 3.00, and 3.01, with native gcc-14.2.0 compilers on Debian 12 x86_64 was problem free.


Debian 13 x86_64 success

The build of TeX Live 2025, including Asymptote 3.01, on Debian 13 x86_64 with native gcc-14.2.0 compilers was problem free.


DragonFlyBSD 6.4.0 x86_64 success

The TeX Live 2024 build with the native GNU compilers (gcc-8.3) on DragonFlyBSD 6.4.0 x86_64 failed in compiling xetex.

I switched compilers to the clang-16.0.6 family, and the build was successful, including Asymptote 2.99.

A subsequent build of Asymptote 3.00 went into an infinite loop in the threadleaktest, so I killed that test after two hours of CPU usage. The remaining tests completed successfully, and 3.00 has been made the default version of Asymptote on that system, but 2.99 is also preserved in the binary distribution.

Asymptote 3.01 built without problems, and passed all of its tests.

Discussions on the DragonFlyBSD developers mailing list indicate that a 6.4.1 release is in preparation, to be followed by a 6.6 major release. I reported on that list that TeX Live 2025 is now available, and that newer compiler versions are highly desirable.


Fedora 39 x86_64 success

The build of TeX Live 2025, including Asymptote 3.00 and 3.01, with the gcc-13.3.1 compiler family on Fedora 39 x86_64 was problem free.


Fedora 41 x86_64 success

The build of TeX Live 2025, including Asymptote 2.88, 2.99, 3.00, and 3.01 with the native gcc-14.2.1 comilers on Fedora 41 x86_64 was problem free.


FreeBSD 13.4 amd64 success

The TeX Live 2025 build with the native GNU compilers (gcc-13.3.0) on FreeBSD 13.4 amd64 was problem free, including for Asymptote 3.01. For the later, I had to add the --disable-lsp configure-time option to avoid boost-related compilation errors.


FreeBSD 13.5 amd64 success

FreeBSD 13.5, the final minor release of the version 13 series, was announced on 11 March 2025, and I created a new virtual machine for it the next day. The native TeX Live release in the package system is that for 2024.

The build of TeX Live 2025, and Asymptote 3.01, with native gcc-14.2.1 compilers on FreeBSD 13.5 was successful. For Asymptote, I had to add the --disable-lsp configure-time option to avoid boost-related compilation errors.


FreeBSD 14.2 amd64 success

The TeX Live 2025 build with the native GNU compilers (gcc-14.2.0) on FreeBSD 14.2 amd64 was problem free, including for Asymptote 2.88.

I did a fresh build with the clang-18.1.6 compiler family, and that too succeeded. Binaries are supplied for both compiler builds.

Attempts to build Asymptote 2.98 with several clang and gcc versions have not succeeded.

I was finally able to build Asymptote 2.99 with g++, but had to change the configuration option --enable-lsp to --disable-lsp to avoid boost-related compilation errors.

A similar attempt to build Asymptote 2.99 with clang++ failed with No rule to make target 'miniz.h', needed by 'tinyexr_impl.o'.

As of 18 February 2025, the master TeX Live 2025 source tree has had patches applied to fix the compilation failures in Asymptote, and builds of version 3.00 with both clang and gcc were successful. Asymptote 3.01 also built successfully with gcc.


FreeBSD 15.0 amd64 success [with workarounds]

This virtual machine was built from the latest development ISO image on 22 February 2025. The operating system is in a prerelease state, called 15.0-CURRENT

The TeX Live 2025 build with the native GNU compilers (gcc-14.2.1) on FreeBSD 15.0 amd64 was problem free.

For Asymptote-3.00, I had to use the configure flag --disable-lsp to avoid boost-related compilation errors. Here is the full build command:

    % env CC=/usr/local/bin/gcc14                                       \
          CFLAGS=-I/usr/local/lib                                       \
          CPPFLAGS=-I/usr/local/include                                 \
          CXX=/usr/local/bin/g++14                                      \
          CXXFLAGS=-I/usr/local/lib                                     \
          PYTHON=python3.11                                             \
          TL_CONFIGURE_FLAGS=--disable-lsp                              \
          $prefix/src/texlive/build-asymptote.sh texlive-20250219

After that success, I tried a build of TeX Live 2025 using the development clang compilers, version 21.0.0. That is a newer version than is available on any other platform in our large test farm, and newer even than is available at the compiler download site.

It is evident that FreeBSD developers are keen testers of the latest LLVM/clang compilers, and have been for several years, based on my extensive experience with earlier FreeBSD releases: I have more than 70 virtual machines from FreeBSD 7.7 to 15.0. Here are the build commands:

    % env CC=/usr/local/bin/clang-devel                                                 \
          CFLAGS=-I/usr/local/lib                                                       \
          CPPFLAGS=-I/usr/local/include                                                 \
          CXX=/usr/local/bin/clang++-devel                                              \
          CXXFLAGS=-I/usr/local/include                                                 \
          LDFLAGS='-L/usr/local/lib -Wl,-rpath,/usr/local/lib'                          \
          TL_CONFIGURE_FLAGS=LDFLAGS="-L/usr/local/lib\ -Wl,-rpath,/usr/local/lib"      \
          $prefix/src/texlive/build-texlive-2025.sh texlive-20250219

    % env CC=/usr/local/bin/clang-devel                                 \
          CFLAGS=-I/usr/local/lib                                       \
          CPPFLAGS=-I/usr/local/include                                 \
          CXX=/usr/local/bin/clang++-devel                              \
          CXXFLAGS=-I/usr/local/include                                 \
          LDFLAGS='-L/usr/local/lib -Wl,-rpath,/usr/local/lib'          \
          PYTHON=python3.11                                             \
          TL_CONFIGURE_FLAGS=--disable-lsp                              \
          $prefix/src/texlive/build-asymptote.sh texlive-20250219

Alas, the TeX Live 2025 part failed with compilation errors in the Unicode library directory, icu. That problem disappeared with later source code snapshots. Asymptote 3.00 and 3.01 built successfully.

With the TeX Live 2025 snapshot of 01 March 2025, I retried the build with the clang-21-0.0 compiler family. That was successful, including for Asymptote 3.01, which has all features enabled, except for the LSP one.


GhostBSD 24.07 amd64 success [with workarounds]

The TeX Live 2025 build with GNU compilers (gcc-12.4.0) on GhostBSD 24.07.1 amd64 was problem free, including Asymptote 2.88.

For Asymptote 3.00, I found that, even though the GNU Scientific Library, -lgsl, was installed, the configure script failed to find it. Examination of the config.log file revealed the cause: the test links with -lgsl, but on this system, that library depends on -lgslcblas, but does not record that fact. Compare these two reports:

    # GhostBSD 24.01 (and FreeBSD 14.2)
    % ldd /usr/local/lib/libgsl.so.27.0.0
    /usr/local/lib/libgsl.so.27.0.0:
            libm.so.5 => /lib/libm.so.5 (0x143eb6d0b000)
            libc.so.7 => /lib/libc.so.7 (0x143eb4256000)

    # GNU/Linux:
    % ldd /usr/lib/x86_64-linux-gnu/libgsl.so.27.0.0
            linux-vdso.so.1 (0x00007fff425e6000)
            libgslcblas.so.0 => /lib/x86_64-linux-gnu/libgslcblas.so.0 (0x00007f46e16e4000)
            libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f46e15fb000)
            libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f46e13e9000)
            /lib64/ld-linux-x86-64.so.2 (0x00007f46e19f8000)

Adding -lgslcblas to the LIBS variable passed to the configure script does not solve the problem, because the script does not use that variable in its test. I therefore edited the generated Makefile to add -lgsl -lgslcblas to the end of the LIBS variable, edited the generated config.h file to have #define HAVE_LIBGSL 1, and then built Asymptote. It now has the GSL feature in its --version report.


HardenedBSD 15.0 amd64 success

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 2025 runs release 15.0-CURRENT-HBSD.

The TeX Live 2025 build with the native GNU compilers (gcc-12.4.1) on HardenedBSD 15.0 amd64 succeeded, as did a build of Asymptote 2.88.

Additional package installations for the later Asymptote 3.01 release caused the gcc-12 family to be removed and replaced with the gcc-13.3.0 compilers. That new build was also successful.


HelloSystem 0.9.0 amd64 partial success

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.

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.

The build of TeX Live 2025 with native compilers (gcc-13.3.0) was successful.

Asymptote failed to link because of GLIBCXX_* symbol conflicts between -lstdc++ and linking done by either gcc-12.4.0 or gcc-13.3.0. Development of this O/S seems to have stalled for the last year, and no newer compiler releases, or operating system releases, are available. Consequently, I copied the 2024 version of Asymptote into the 2025 installation tree.


NetBSD 10.0 amd64 partial success [with workarounds]

The TeX Live 2025 build with the native GNU compilers (gcc-10.5.0) on 64-bit NetBSD 10.0 amd64 (= x86_64) was successful, but I first had to add -I/usr/pkg/include to CFLAGS and CXXFLAGS. I have since changed the build scripts to do that automatically for NetBSD.

The native Ghostscript version is now gs-10.04.0, and causes no problems. For the builds of the previous year, Ghostscript was too old, and I had to build gs-10.03.0 locally from source.

For Asymptote 2.99, I had to add the configure flag --disable-lsp to get part of the build done. I then found that getopt_long_only is not available, so I added #define getopt_long_only getopt_long in settings.cc. That got further, but linking failed, so I added GCLIB='-lfftw3 -lreadline' to the make command line. Then I found that the NetBSD libcurl does not supply curl_easy_init, so I add another configure option, --disable-curl. I also had to add the option PYTHON=/usr/pkg/bin/python3.11, because an executable named python3 does not exist. That produced more progress, but the build then failed like this:

    g++ -DHAVE_CONFIG_H -pthread -DFFTWPP_SINGLE_THREAD -Wall
        -I/usr/pkg/include -I.  -Itinyexr -I/usr/pkg/include
        -I/usr/pkg/include -std=c++17 -I/usr/pkg/include
        -I/usr/pkg/include -fno-var-tracking
        -Ibackports/optional/include -Iprc/include -ILspCpp/include -o
        settings.o -c settings.cc
    Traceback (most recent call last):
      File "/local/build/bare/texlive-20250211/source/utils/asymptote/GUI/buildtool.py",
        line 9, in <module> from PyQt5.uic import compileUiDir
    ModuleNotFoundError: No module named 'PyQt5'

NetBSD does not supply the PyQt5 module, so Asymptote 2.99 appears to be unbuildable on this system.

My next attempt was to revert to Asymptote 2.88, and this recipe finally produced a successful build:

    env CFLAGS=-I/usr/pkg/include                             \
        CXXFLAGS=-I/usr/pkg/include                           \
        PYTHON=/usr/pkg/bin/python3.12                        \
        TL_CONFIGURE_FLAGS='--disable-lsp --disable-curl'     \
        $prefix/src/texlive/build-asymptote.sh texlive-20250211

NetBSD 10.1 amd64 partial success [with workarounds]

The TeX Live 2025 build with the native GNU compilers (gcc-10.5.0) on 64-bit NetBSD 10.1 amd64 (= x86_64) (released 17 December 2024) was successful.

For Asymptote 3.01 on NetBSD 10.0 (see the preceding section), I found that -lcurl is missing curl_easy_init. That has been repaired in NetBSD 10.1. The patch to define getopt_long_only in settings.cc is still necessary. Alas, the needed PyQt5 module is still missing on NetBSD 10.1, so once again, I reverted to the old Asymptote 2.88 for the build, and that succeeded.


OpenBSD 7.3 amd64 success [with workarounds]

The build of TeX Live 2025, and Asymptote 2.99, on OpenBSD 7.3 amd64 using the clang-13.0.0 compiler family was problem free. However, for Asymptote, I had to add the configure option --disable-gc to avoid compilation errors. I also had to set the environment variable ASYMPTOTE_EPSDRIVER to eps2write, which is needed for Ghostscript versions 9.14 or later. This system has gs-10.01.1.

The package repository for OpenBSD 7.3 is no longer available, so I could not install additional packages that Asymptote could use.


OpenBSD 7.4 amd64 success [with workarounds]

The build of TeX Live 2025, and Asymptote 2.99, on OpenBSD 7.4 amd64 using the clang-13.0.0 compiler family was problem free. However, for Asymptote, I had to add the configure option --disable-gc to avoid compilation errors.

The package repository for OpenBSD 7.4 is no longer available, so I could not install additional packages that Asymptote could use.


OpenBSD 7.5 amd64 success [with workarounds]

The build of TeX Live 2025, and Asymptote 2.99, on OpenBSD 7.5 amd64 using the clang-16.0.6 compiler family was problem free. However, for Asymptote, I had to add the configure option --disable-gc to avoid compilation errors.


OpenBSD 7.6 amd64 success [with workarounds]

OpenBSD 7.6 was released on 08 October 2024, and continues the tradition on that O/S that minor versions may break ABI (Application Binary Interface) compatility. Thus, it is necessary to have separate TeX Live builds for each OpenBSD release (7.4, 7.5, 7.6, …).

Robert Alessi kindly provides builds of TeX Live on recent OpenBSD releases, and has given permission to mirror them at this site, here and here. The -current variant is for a machine that is frequently updated to move it toward OpenBSD 7.7.

Robert Alessi's site at https://www.ekdosis.org/texlive/ is the source of our copies, and also includes OpenBSD binaries for biber, a separate set of tools for bibliographies that is not part of the main TeX Live distribution, and that I do not normally build on the systems described at this Web site.

This O/S has new versions approximately every six months, so OpenBSD 7.7 should appear in April 2025. This site may be updated as soon as builds on that new release are available.

My first attempts at building TeX Live 2025 on this O/S using egcc (gcc-8.4.0) failed. Robert Alessi reported that he used the clang compilers, so I switched to clang-16.0.6, and the build, including of Asymptote 2.99, succeeded. However, for Asymptote, I had to add the configure option --disable-gc to avoid compilation errors.


OpenBSD 7.7-prerelease amd64 success [with workarounds]

Useful exchanges with Robert Alessi led to my creation of a new virtual machine that, starting with an OpenBSD 7.6 amd64 installation, moves via package upgrades toward the 7.7 release (expected in mid-March 2025).

The TeX Live 2025 build on this system was successful,

The Asymptote 3.00 build showed a problem: the /usr/bin/makeinfo tool is version 4.8, more than two decades old! A texinfo-7.1p0 package is available: it installs into /usr/local/bin, but the executable names are prefixed with g, and thus not found by the configure script tests. I also built and installed the latest source code release, texinfo-7.2. My build-asymptote.sh script ensures that our local software directory, $prefix/bin, appears ahead of system directories, so the latest tools from texinfo-7.2 are used. As with OpenBSD 7.6, I had to add the configure flag --disable-lsp.


openSUSE Leap 15.1 x86_64 success

The native gcc-7.5.0 compilers are too old to support C++17, which is needed this year for underlying libraries.

However, the build of TeX Live 2025 on openSUSE Leap 15.1 x86_64, using native clang-7.0.1 compilers was problem free.

The build of Asymptote 2.88 lacks GNU readine support, because the libreadline7 package, on which more than 5100 other openSUSE packages depend, has no header files. While there are libreadline6 and readline6 packages, their header files reside in /usr/include/readline6, but source file #include directives in Asymptote, and most other code that uses this package, expect them to be in /usr/include/readline.

Attempts to build Asymptote versions 2.98, 2.99, and 3.00 failed with C++ errors, and no newer compiler versions are available.


openSUSE Leap 15.6 x86_64 success

The native gcc-7.5.0 compilers do not support -std=c++17, so they cannot be used to build TeX Live 2025 on this system.

However, the build of TeX Live 2025, including Asymptote-3.01, on openSUSE Leap 15.6 x86_64, using native clang-17.0.6 compilers was problem free.


openSUSE Leap 16.0 Alpha x86_64 success

The build of TeX Live 2025 on openSUSE Leap 16.0 Alpha x86_64, include Asymptote-3.00, using native gcc-14.2.0 compilers was problem free.


PureOS 10 x86_64 success

PureOS is a Debian-based GNU/Linux that supplies only free software. It is also described in an encyclopedia article. Its version is 10 (Byzantium), based on Debian 11.7.

The build of TeX Live 2025 and Asymptote-3.00 with the native gcc-10.2.1 compilers was problem free, and all Asymptote features are enabled.


Rocky 8 x86_64 success [with workarounds]

The build of Tex Live 2025 on Rocky 8 x86_64 with native gcc-8.5.0 compilers was successful.

A build of Asymptote 2.88 succeeded, but I had to force it to ignore failed creation of documentation files.

Later versions of Asymptote cannot be built on this system because of python3 errors like this:

    Generating runfile.raw.i from runfile.cc
    Generating runsystem.raw.i from runsystem.cc
    Traceback (most recent call last):
      File "gen_preprocessed_depfile.py", line 261, in 
        main()
      File "gen_preprocessed_depfile.py", line 257, in main
        compile_for_preproc_gcc(opt, args.in_src_file, args.out_i_file)
      File "gen_preprocessed_depfile.py", line 180, in compile_for_preproc_gcc
        sp.run(args, check=True, stdout=sp.PIPE, stderr=sp.PIPE, text=True)
      File "/usr/lib64/python3.6/subprocess.py", line 423, in run
        with Popen(*popenargs, **kwargs) as process:
    TypeError: __init__() got an unexpected keyword argument 'text'

Rocky 9 ppc64le [in progress]

A build attempt of TeX Live 2025 on Rocky 9 Linux on ppc64le (PowerPC Little-Endian) with the native gcc-11.5.0 (20240719 (Red Hat 11.5.0-2)) compilers failed with an internal compiler error in compiling pngwtran.c in the libpng library.

The O/S package system has additional gcc compilers for major versions 12, 13, and 14, so I installed those for a retry.

With g++-12.2.1, the compiler went into an infinite loop (running for 18 hours overnight) while compiling harfbuzz.cc, a single C++ source file that includes header files that amount to almost 175,000 lines, of which about 138,000 are nonblank. The build machine has 4 CPUs and 12GB of DRAM.

Without rebooting, I deleted the build directory, and re-ran the build: oddly, this time it completed successfully. A build of Asymptote 3.01 with the gcc-12.2.1 family, however, failed with an internal compiler error while compiling lspdec.cc.

I redid the Asymptote build with the gcc-13.3.1 compilers. but that too got an internal compiler error, this time in knot.cc.

Another try for the Asymptote build with the gcc-14.2.1 compilers also got an internal compiler error, in oPRCFile.cc file.

A curious thing about these gcc errors is the message text: The bug is not reproducible, so it is likely a hardware or OS problem.

I retried the build of TeX Live 2025 with the clang-18.1.8 compiler family: that failed with an internal compiler error in compiling pathsearch.c. A build attempt for Asymptote 3.01 failed similarly in drawpath.cc.

The multiple failures for Rocky and Ubuntu on ppc64le suggest that the build problems lie in the QEMU emulator, version 8.2.2.

To test that conjecture, I decided to try switching to a different version of QEMU, for which I have at least 20 such locally built from various QEMU releases, with the latest being version 9.2.2, released on 24 February 2025. The virt-manager GUI tool does not make engine switches possible, so I captured the roughly 3700-character command line for the Rocky 9 ppc64le instance from the output of the process status command, ps auxww, and then shutdown the VM. I was then able to construct a much-simplified shell script that could bring up the VM, but alas, without a usable network. I then started a fresh TeX Live 2025 build with the native gcc-11.5.0 compilers, and TO BE CONTINUED.


Solaris 11.4 i86pc success

Apostolos Syropoulos in Xanthi, Greece, reported a successful build of TeX Live 2025 on OpenIndiana / Illumos, the open source continuation of Oracle / Sun Solaris 11.4. His build script is here, and the binary distribution is here.

I was later able to get a successful build of TeX Live 2025 on native Oracle Solaris 11.4 (Build-id 11.4.76.0.1.182.1, 02 December 2024), including Asymptote versions 2.98 and 3.00, using the native gcc-14.2.0 compilers.

Even though the library/readline package is installed, and supplies both the library and header files, the Asymptote configure script fails to find the package, because linking fails with missing symbols that are supplied by -lncurses, but that library is not used in the configuration tests. I have encountered many other systems where the dependency of readline on curses or ncurses is mishandled, and I view it as a fault of readline itself, and/or the vendor package system.

I looked at the configure.ac, configure, and Makefile.in files, but could not see any simple way to get -lncurses added to the readline test. I then just edited the config.h file to undefine the HAVE_EDITLINE_READLINE_H symbol, and define the HAVE_LIBREADLINE symbol. A build then produced a new asy executable with line editing enabled.


Trisquel 11.0 x86_64 success

Trisquel is one of the few GNU/Linux distributions that contains only free software. It is derived from the Ubuntu distribution, but has its own binary package repository. The build of TeX Live 2025, and Asymptote 3.01, on Trisquel 11.0.1 LTS (Long Term Support, code name Aramo, derived from Ubuntu 22 (code name Jammy Jellyfish)) on x86_64 was problem free.


Ubuntu 20.04 x86_64 success

The TeX Live 2025 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.01, I just had to add the configure flag --disable-lsp.


Ubuntu 22.04 ppc64le [in progress]

The build of TeX Live 2025 on Ubuntu 22.04 ppc64le with native gcc-12.3.0 failed because of fatal internal compiler errors while compiling pdftex0.c. The virtual machine has 6 CPUs and 24GB DRAM, and more then 40GB free storage space.

I retried the build with the gcc-11.4.0 compilers, and TO BE CONTINUED.


Ubuntu 22.04 s390x success

The build of TeX Live 2025 and Asymptote 3.0 with native compilers (gcc-11.4.0) on Ubuntu 22.04.5 LTS (Long-Term Support, until April 2027) (code name Jammy Jellyfish) on s390x was successful.


Ubuntu 22.04 x86_64 success

The TeX Live 2025 build with native compilers (gcc-11.4.0) on Ubuntu 22.04.5 LTS (Long-Term Support, until April 2027) (code name Jammy Jellyfish) on x86_64 was problem free. The build includes Asymptote 3.01.


Ubuntu 22.10 ppc64le failure

A build attempt for TeX Live 2025 on Ubuntu 22.10 (code name Kinetic Kudu) ppc64le failed because of internal compiler errors while compiling kpathsea. The build machine has 4 CPUs and 16GB of DRAM.

I switched to the clang-14.0.6 compiler family, but that build was stymied by missing packages.


Ubuntu 22.10 riscv64 failure

A build attempt for TeX Live 2025 on Ubuntu 22.10 riscv64 failed because of missing header files, and the vendor package repository has been removed.

I switched to the clang-14.0.6 compiler family, but that build was stymied by missing packages.


Ubuntu 23.04 riscv64 success

The TeX Live 2025 build with native compilers (gcc-12.3.0) on Ubuntu 23.04.6 (code name Lunar Lobster), including Asymptote 2.88, 3.00, and 3.01, on riscv64 was problem free.


Ubuntu 24.04 s390x success

The TeX Live 2025 build with native compilers (gcc-13.3.0) on Ubuntu 24.04.2 LTS (Long-Term Support, until April 2030) (code name Noble Numbat), including Asymptote 3.01, on s390x was problem free.


Ubuntu 24.04 x86_64 success

The TeX Live 2025 build with native compilers (gcc-13.3.0) on Ubuntu 24.04.1 LTS (Long-Term Support, until April 2030) (code name Noble Numbat), including Asymptote 3.01, on x86_64 was problem free.


Ubuntu 25.04 x86_64 success

The TeX Live 2025 build with native compilers (gcc-14.2.0) on Ubuntu 25.04 (code name Plucky Puffin (development branch)), including Asymptote 3.01, on x86_64 was problem free.