Index of /pub/texlive-utah-2019

[ICO]NameLast modifiedSize

[PARENTDIR]Parent Directory  -
[DIR]Images/2019-04-29 17:32 -
[TXT]README.html2019-12-14 15:00 116K
[   ]SYS.texlive-2019.csh2019-05-09 11:27 7.1K
[   ]SYS.texlive-2019.sh2019-05-09 11:27 6.2K
[DIR]bin/2019-09-19 18:31 -
[   ]build-asymptote.sh2019-06-08 10:43 5.5K
[   ]build-texlive-2019.sh2019-08-21 09:20 52K
[   ]fix-texlive-2019-links.sh2019-05-03 07:35 16K
[   ]make-texlive-binary-distributions.sh2019-05-17 10:34 1.6K
[   ]make-texlive-binary-distributions.sh.old2019-04-08 17:23 1.4K
[   ]make-texlive-snapshot-2019.sh2019-03-25 07:17 1.5K
[   ]show-file-counts.sh2019-07-06 15:15 2.1K
[   ]show-lib-deps.sh2016-04-26 07:12 1.3K
[   ]show-texlive-libs.sh2016-06-17 12:10 2.0K
[DIR]texlive-utah-2020/2021-04-02 11:20 -


                     

TeX Live 2018 frozen

Updates for TeX Live 2018 were officially frozen on 5 March 2019. Work is now in progress to prepare the TeX Live 2019 release. You can find information on downloading the older release here. Once you have run the update procedure described there, you need not do so again: you have the final state of the 2018 software.

TeX Live 2019 released!

The TeX Live 2019 source tree was frozen on 10 April 2019, and DVD production was started shortly thereafter. TeX Live 2019 was prereleased on 14 April 2019, with a master ISO DVD image available here at the TUG North American master mirror in Utah, and via links to numerous regional mirrors at the worldwide master TUG site in Paris, France. Apple Mac OS X users will likely also want to install the separately maintained and distributed TeXShop system that provides a graphical user interface to part of TeX Live on that platform. The Utah pretest site below serves as a historical record of development, and includes binary distributions for several platforms that are not included on the DVD. The Utah site continues to receive updates as TeX Live 2019 is built on even more systems. Those binary distributions are now mirrored at http://ctan.ijs.si/mirror/texlive/texlive-bin/ (Slovenia) and http://ftp.linux.cz/pub/tex/local/texlive-bin/ (Czech Republic). For the latter, you can also replace http: by ftp: or rsync:. In 2016, we built distributions for more than 100 different operating-system environments. However, in 2017, the Utah developer was traveling abroad during much of the DVD production period, so the build count for 2017 is much lower. Because most of the executable programs do not change much from year to year, if you need them for a system that is not included on the DVD, or by your operating system distribution system, you can likely use the 2016 versions in TeX Live 2017 or later installations. If that does not work for you, feel free to contact this author who may be able to create a 2019 build for you.
Although most vendor distributions for Unix-like systems include TeX Live in (usually many) optional packages, their offerings are often two to five years behind. You should have no difficulty in doing your own TeX Live 2019 installation from the DVD or ISO images, and then, if your platform is not supported by a suitable bin subdirectory on the DVD, copying one from this site into that location. For example, you might eventually have /your/choice/here/texlive/2019/bin/amd64-trident1812 and all that you then need to do is place that directory into your PATH variable ahead of any other directory that might contain an alternate TeX implementation. TeX Live releases are always engineered to be installable under any desired filesystem location; all file references by software within the tree are relative to the texlive component in the pathname. A four-digit year is always the next path component, making it easy to have multiple TeX Live yearly versions installed without any possibility of conflict.

TeX Live 2019 early access

Original version: Mon Apr 1 14:42:01 2019
Last updates: ... Sat Dec 14 15:00:00 2019

This directory contains files created in support of building and using a pre-release of the TeX Live 2019 distribution. That release was officially made on 29 April 2019, and is expected to be available on DVD in mid-summer 2019 (a copy arrived in Utah via postal mail on 18 June 2019); you can download it electronically here. 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.

A test lab at this site has scores of flavors of Unix on 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-2019.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 2019 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 and 2019 binary executable programs now mandate compiler support for more recent versions of ISO Standard C++, and such compilers are unavailable for many 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.

As of 25 September 2019, the following builds have been successful by the TeX Live team, or at Utah:

    % show-file-counts.sh
    461      aarch64-linux
    449      amd64-clonos
    462      amd64-freebsd
    453      amd64-freebsd104
    447      amd64-freebsd113
    450      amd64-freebsd12
    452      amd64-freebsd13
    459      amd64-freebsd13b
    449      amd64-ghostbsd1812
    450      amd64-hardenedbsd12
    449      amd64-midnightbsd11
    459      amd64-netbsd
    435      amd64-netbsd72
    436      amd64-netbsd81
    447      amd64-openbsd62
    447      amd64-openbsd63
    447      amd64-openbsd64
    435      amd64-os108
    450      amd64-trident1812
    453      amd64-trident1905
    449      amd64-trueos1806
    461      armhf-linux
    441      i386-centos5
    442      i386-centos6
    453      i386-centos7
    453      i386-fedora-rawhide
    462      i386-freebsd
    452      i386-freebsd104
    450      i386-freebsd112
    447      i386-freebsd113
    450      i386-freebsd12
    450      i386-freebsd13
    462      i386-freebsd13b
    462      i386-linux
    459      i386-netbsd
    462      i386-slackel72
    457      i386-solaris
    428      powerpc64le-centos7
    453      x86_64-antix17
    462      x86_64-blackarch
    448      x86_64-centos6
    453      x86_64-centos7
    462      x86_64-centos8
    453      x86_64-clearlinux
    462      x86_64-darwin
    462      x86_64-darwinlegacy
    453      x86_64-debian10
    449      x86_64-dragonflybsd541
    444      x86_64-dragonflybsd561
    460      x86_64-dragonflybsd562
    453      x86_64-fedora30
    453      x86_64-hyperbola
    453      x86_64-kali
    462      x86_64-linux
    450      x86_64-linux-devuan20
    455      x86_64-linuxmusl
    453      x86_64-mageia70
    453      x86_64-manjaro18
    453      x86_64-mint191
    450      x86_64-mxlinux18
    452      x86_64-openmandriva40
    453      x86_64-opensuse-tumbleweed
    462      x86_64-oracle8
    453      x86_64-parabola
    453      x86_64-pclinuxos
    452      x86_64-redhat8
    462      x86_64-slackel72
    453      x86_64-slackware15
    452      x86_64-solaris
    440      x86_64-solaris114
    452      x86_64-ubuntu1804
    453      x86_64-ubuntu1904
    453      x86_64-ubuntu1910
    453      x86_64-ubunturr
    453      x86_64-xubuntu1804

    Total: 75 systems

    Missing binaries [compared to i386-freebsd]:

    aarch64-linux                   : biber
    amd64-clonos                    : asy biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev tex2xindy uplatex-dev xelatex-dev xindy.mem xindy.run
    amd64-freebsd104                : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    amd64-freebsd113                : biber dvilualatex-dev ketcindy latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev tex2xindy texindy uplatex-dev xelatex-dev xindy xindy.mem xindy.run
    amd64-freebsd12                 : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev tex2xindy uplatex-dev xelatex-dev xindy.mem xindy.run
    amd64-freebsd13                 : biber dvilualatex-dev ketcindy latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    amd64-freebsd13b                : biber ketcindy pamphletangler platex-dev uplatex-dev
    amd64-ghostbsd1812              : asy biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev tex2xindy uplatex-dev xelatex-dev xindy.mem xindy.run
    amd64-hardenedbsd12             : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev tex2xindy uplatex-dev xelatex-dev xindy.mem xindy.run
    amd64-midnightbsd11             : asy biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev tex2xindy uplatex-dev xelatex-dev xindy.mem xindy.run
    amd64-netbsd                    : asy biber xasy
    amd64-netbsd72                  : asy biber cfftot1 dvilualatex-dev dvisvgm latex-dev lualatex-dev mmafm mmpfb otfinfo otftotfm pamphletangler pdflatex-dev platex-dev t1dotlessj t1lint t1rawafm t1reencode t1testpage teckit_compile tex2xindy ttftotype42 uplatex-dev xelatex-dev xetex xindy.mem xindy.run
    amd64-netbsd81                  : biber cfftot1 dvilualatex-dev dvisvgm latex-dev lualatex-dev mmafm mmpfb otfinfo otftotfm pamphletangler pdflatex-dev platex-dev t1dotlessj t1lint t1rawafm t1reencode t1testpage teckit_compile tex2xindy ttftotype42 uplatex-dev xelatex-dev xetex xindy.mem xindy.run
    amd64-openbsd62                 : asy biber dvilualatex-dev latex-dev luajittex lualatex-dev mfluajit pamphletangler pdflatex-dev platex-dev tex2xindy uplatex-dev xelatex-dev xindy.mem xindy.run
    amd64-openbsd63                 : asy biber dvilualatex-dev latex-dev luajittex lualatex-dev mfluajit pamphletangler pdflatex-dev platex-dev tex2xindy uplatex-dev xelatex-dev xindy.mem xindy.run
    amd64-openbsd64                 : asy biber dvilualatex-dev latex-dev luajittex lualatex-dev mfluajit pamphletangler pdflatex-dev platex-dev tex2xindy uplatex-dev xelatex-dev xindy.mem xindy.run
    amd64-os108                     : asy biber cfftot1 dvilualatex-dev dvisvgm latex-dev lualatex-dev mmafm mmpfb otfinfo otftotfm pamphletangler pdflatex-dev platex-dev t1dotlessj t1lint t1rawafm t1reencode t1testpage teckit_compile tex2xindy ttftotype42 uplatex-dev xelatex-dev xetex xindy.mem xindy.run
    amd64-trident1812               : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev tex2xindy uplatex-dev xelatex-dev xindy.mem xindy.run
    amd64-trident1905               : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    amd64-trueos1806                : asy biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev tex2xindy uplatex-dev xelatex-dev xindy.mem xindy.run
    armhf-linux                     : biber
    i386-centos5                    : asy biber dvilualatex-dev dvisvgm ketcindy latex-dev luajittex lualatex-dev mfluajit mfluajit-nowin pamphletangler pdflatex-dev platex-dev teckit_compile texluajit texluajitc uplatex-dev xasy xelatex xelatex-dev xetex
    i386-centos6                    : asy biber dvilualatex-dev ketcindy latex-dev luajittex lualatex-dev mfluajit mfluajit-nowin pamphletangler pdflatex-dev platex-dev teckit_compile texluajit texluajitc uplatex-dev xasy xelatex xelatex-dev xetex
    i386-centos7                    : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    i386-fedora-rawhide             : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    i386-freebsd104                 : biber dvilualatex-dev ketcindy latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    i386-freebsd112                 : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev tex2xindy uplatex-dev xelatex-dev xindy.mem xindy.run
    i386-freebsd113                 : biber dvilualatex-dev ketcindy latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev tex2xindy texindy uplatex-dev xelatex-dev xindy xindy.mem xindy.run
    i386-freebsd12                  : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev tex2xindy uplatex-dev xelatex-dev xindy.mem xindy.run
    i386-freebsd13                  : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev tex2xindy uplatex-dev xelatex-dev xindy.mem xindy.run
    i386-freebsd13b                 : biber ketcindy pamphletangler
    i386-netbsd                     : asy biber xasy
    i386-slackel72                  : biber ketcindy
    i386-solaris                    : tex2xindy texindy xindy xindy.mem xindy.run
    powerpc64le-centos7             : asy biber dvigif dvilualatex-dev dvipdfm dvipdfmx dvipdft dvipng ebb extractbb ketcindy latex-dev luajittex lualatex-dev mfluajit mfluajit-nowin mpost pamphletangler pdflatex-dev platex-dev pmpost synctex tex2xindy texindy texluajit texluajitc uplatex-dev upmpost xasy xdvipdfmx xelatex-dev xindy xindy.mem xindy.run
    x86_64-antix17                  : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-blackarch                : biber ketcindy
    x86_64-centos6                  : asy biber dvilualatex-dev ketcindy latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev teckit_compile uplatex-dev xasy xelatex xelatex-dev xetex
    x86_64-centos7                  : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-centos8                  : biber ketcindy
    x86_64-clearlinux               : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-debian10                 : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-dragonflybsd541          : biber dvilualatex-dev latex-dev luajittex lualatex-dev pamphletangler pdflatex-dev platex-dev tex2xindy uplatex-dev xelatex-dev xindy.mem xindy.run
    x86_64-dragonflybsd561          : biber dvilualatex-dev ketcindy latex-dev luajittex lualatex-dev pamphletangler pdflatex-dev platex-dev tex2xindy texindy texluajit texluajitc uplatex-dev xelatex-dev xindy xindy.mem xindy.run
    x86_64-dragonflybsd562          : biber ketcindy luajittex pamphletangler
    x86_64-fedora30                 : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-hyperbola                : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-kali                     : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-linux-devuan20           : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev tex2xindy uplatex-dev xelatex-dev xindy.mem xindy.run
    x86_64-linuxmusl                : asy tex2xindy texindy xasy xindy xindy.mem xindy.run
    x86_64-mageia70                 : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-manjaro18                : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-mint191                  : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-mxlinux18                : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev tex2xindy uplatex-dev xelatex-dev xindy.mem xindy.run
    x86_64-openmandriva40           : biber dvilualatex-dev ketcindy latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-opensuse-tumbleweed      : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-oracle8                  : biber ketcindy
    x86_64-parabola                 : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-pclinuxos                : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-redhat8                  : biber dvilualatex-dev ketcindy latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-slackel72                : biber ketcindy
    x86_64-slackware15              : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-solaris                  : luajittex mfluajit mfluajit-nowin tex2xindy texindy texluajit texluajitc xindy xindy.mem xindy.run
    x86_64-solaris114               : asy biber dvilualatex-dev ketcindy latex-dev luajittex lualatex-dev mfluajit mfluajit-nowin pamphletangler pdflatex-dev platex-dev tex2xindy texindy texluajit texluajitc uplatex-dev xasy xelatex-dev xindy xindy.mem xindy.run
    x86_64-ubuntu1804               : biber dvilualatex-dev ketcindy latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-ubuntu1904               : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-ubuntu1910               : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-ubunturr                 : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev
    x86_64-xubuntu1804              : biber dvilualatex-dev latex-dev lualatex-dev pamphletangler pdflatex-dev platex-dev uplatex-dev xelatex-dev

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 were obtained as part of the pre-test installation (described below):

    aarch64-linux           i386-freebsd        i386-solaris        x86_64-linux
    amd64-freebsd           i386-linux          x86_64-darwin       x86_64-linuxmusl
    amd64-netbsd            i386-netbsd         x86_64-darwinlegacy x86_64-solaris

All others have been built at the University of Utah almost entirely in facilities of the Department of Mathematics, with an additional build for powerpc64le-centos7 done on a system kindly made available by the Center for High Performance Computing.

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.

ArchLinux (arch), ClearLinux, Fedora Rawhide (fedorarh), GUIX, Hyperbola, Kali, PCLinuxOS (pclinuxos), 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 x86_64-linux
    Library dependencies of TeX Live executables in x86_64-linux:

    ld-linux-x86-64              afm2pl afm2tfm aleph amstex asy autosp axohelp bbox bg5conv biber bibtex bibtex8 bibtexu cef5conv cefconv cefsconv cfftot1 chkdvifont chktex cslatex 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 dviluatex dvipdfm dvipdfmx dvipng dvipos dvips dviselect dvispc dvisvgm dvitodvi dvitomp dvitype ebb eplain epsffit eptex etex euptex extconv extractbb gftodvi gftopk gftype gregorio gsftopk hbf2gf inimf initex jadetex kpseaccess kpsereadlink kpsestat kpsewhich lacheck lamed latex lollipop luacsplain luajittex lualatex 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 otangle otfinfo otftotfm otp2ocp outocp ovf2ovp ovp2ovf patgen pbibtex pdfclose pdfcslatex pdfcsplain pdfetex pdfjadetex pdflatex pdfmex pdfopen pdftex pdftosrc pdfxmltex pdvitomp pdvitype pfb2pfa pk2bm pktogf pktype platex pltotf pmpost pmxab pooltype ppltotf prepmx ps2pk psbook psnup psresize psselect pstops ptex ptftopl r-mpost r-pmpost r-upmpost scor2prt sjisconv synctex t1ascii t1asm t1binary t1disasm t1dotlessj t1lint t1mac t1rawafm t1reencode t1testpage t1unmac t4ht tangle teckit_compile tex tex2aspc tex2xindy tex4ht texlua texluac texluajit texluajitc texsis tftopl tie ttf2afm ttf2pk ttf2tfm ttfdump ttftotype42 upbibtex updvitomp updvitype uplatex upmendex upmpost uppltotf uptex uptftopl utf8mex vftovp vlna vptovf weave wofm2opl wopl2ofm wovf2ovp wovp2ovf xdvi-xaw xdvipdfmx xelatex xetex xindy.run xmltex
    libGL                        asy
    libGLEW                      asy
    libGLU                       asy
    libGLX                       asy
    libGLdispatch                asy
    libICE                       asy inimf mf mflua mflua-nowin mfluajit mfluajit-nowin xdvi-xaw
    libSM                        inimf mf mflua mflua-nowin mfluajit mfluajit-nowin 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 inimf mf mflua mflua-nowin mfluajit mfluajit-nowin xdvi-xaw
    libXi                        asy
    libXmu                       xdvi-xaw
    libXpm                       xdvi-xaw
    libXt                        xdvi-xaw
    libXxf86vm                   asy
    libbz2                       xelatex xetex
    libc                         afm2pl afm2tfm aleph amstex asy autosp axohelp bbox bg5conv biber bibtex bibtex8 bibtexu cef5conv cefconv cefsconv cfftot1 chkdvifont chktex cslatex 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 dviluatex dvipdfm dvipdfmx dvipng dvipos dvips dviselect dvispc dvisvgm dvitodvi dvitomp dvitype ebb eplain epsffit eptex etex euptex extconv extractbb gftodvi gftopk gftype gregorio gsftopk hbf2gf inimf initex jadetex kpseaccess kpsereadlink kpsestat kpsewhich lacheck lamed latex lollipop luacsplain luajittex lualatex 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 otangle otfinfo otftotfm otp2ocp outocp ovf2ovp ovp2ovf patgen pbibtex pdfclose pdfcslatex pdfcsplain pdfetex pdfjadetex pdflatex pdfmex pdfopen pdftex pdftosrc pdfxmltex pdvitomp pdvitype pfb2pfa pk2bm pktogf pktype platex pltotf pmpost pmxab pooltype ppltotf prepmx ps2pk psbook psnup psresize psselect pstops ptex ptftopl r-mpost r-pmpost r-upmpost scor2prt sjisconv synctex t1ascii t1asm t1binary t1disasm t1dotlessj t1lint t1mac t1rawafm t1reencode t1testpage t1unmac t4ht tangle teckit_compile tex tex2aspc tex2xindy tex4ht texlua texluac texluajit texluajitc texsis tftopl tie ttf2afm ttf2pk ttf2tfm ttfdump ttftotype42 upbibtex updvitomp updvitype uplatex upmendex upmpost uppltotf uptex uptftopl utf8mex vftovp vlna vptovf weave wofm2opl wopl2ofm wovf2ovp wovp2ovf xdvi-xaw xdvipdfmx xelatex xetex xindy.run xmltex
    libcrypt                     biber xindy.run
    libdl                        asy biber dvilualatex dviluatex dvisvgm inimf luacsplain luajittex lualatex luatex mf mflua mflua-nowin mfluajit mfluajit-nowin pdfclose pdfopen texlua texluac texluajit texluajitc xdvi-xaw xindy.run
    libexpat                     xelatex xetex
    libfontconfig                xelatex xetex
    libfreebl3                   biber xindy.run
    libfreetype                  xelatex xetex
    libgcc_s                     asy luajittex mfluajit mfluajit-nowin texluajit texluajitc
    libglut                      asy
    libm                         afm2pl afm2tfm aleph amstex asy axohelp biber bibtex bibtex8 bibtexu cfftot1 cslatex csplain ctangle ctie ctwill ctwill-refsort ctwill-twinx cweave dvicopy dvigif dvilualatex dviluatex dvipdfm dvipdfmx dvipng dvipos dvips dvisvgm dvitomp dvitype ebb eplain eptex etex euptex extractbb gftodvi gftopk gftype inimf initex jadetex lamed latex lollipop luacsplain luajittex lualatex luatex mag mex mf mf-nowin mflua mflua-nowin mfluajit mfluajit-nowin mfplain mft mllatex mltex mmafm mmpfb mpost odvicopy odvitype ofm2opl omfonts opl2ofm otangle otfinfo otftotfm otp2ocp outocp ovf2ovp ovp2ovf patgen pbibtex pdfcslatex pdfcsplain pdfetex pdfjadetex pdflatex pdfmex pdftex pdftosrc pdfxmltex pdvitomp pdvitype pfb2pfa pk2bm pktogf pktype platex pltotf pmpost pmxab pooltype ppltotf ps2pk ptex ptftopl r-mpost r-pmpost r-upmpost scor2prt synctex t1dotlessj t1lint t1rawafm t1reencode t1testpage tangle teckit_compile tex texlua texluac texluajit texluajitc texsis tftopl tie ttf2afm ttf2pk ttf2tfm ttftotype42 upbibtex updvitomp updvitype uplatex upmendex upmpost uppltotf uptex uptftopl utf8mex vftovp vptovf weave wofm2opl wopl2ofm wovf2ovp wovp2ovf xdvi-xaw xdvipdfmx xelatex xetex xindy.run xmltex
    libncurses                   xindy.run
    libnsl                       biber
    libpng15                     xelatex xetex
    libpthread                   asy biber xelatex xetex
    librt                        asy
    libstdc++                    asy
    libtinfo                     xindy.run
    libutil                      biber
    libuuid                      inimf mf mflua mflua-nowin mfluajit mfluajit-nowin xdvi-xaw xelatex xetex
    libxcb                       asy inimf mf mflua mflua-nowin mfluajit mfluajit-nowin pdfclose pdfopen xdvi-xaw
    libz                         asy xelatex xetex
    linux-vdso                   afm2pl afm2tfm aleph amstex asy autosp axohelp bbox bg5conv biber bibtex bibtex8 bibtexu cef5conv cefconv cefsconv cfftot1 chkdvifont chktex cslatex 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 dviluatex dvipdfm dvipdfmx dvipng dvipos dvips dviselect dvispc dvisvgm dvitodvi dvitomp dvitype ebb eplain epsffit eptex etex euptex extconv extractbb gftodvi gftopk gftype gregorio gsftopk hbf2gf inimf initex jadetex kpseaccess kpsereadlink kpsestat kpsewhich lacheck lamed latex lollipop luacsplain luajittex lualatex 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 otangle otfinfo otftotfm otp2ocp outocp ovf2ovp ovp2ovf patgen pbibtex pdfclose pdfcslatex pdfcsplain pdfetex pdfjadetex pdflatex pdfmex pdfopen pdftex pdftosrc pdfxmltex pdvitomp pdvitype pfb2pfa pk2bm pktogf pktype platex pltotf pmpost pmxab pooltype ppltotf prepmx ps2pk psbook psnup psresize psselect pstops ptex ptftopl r-mpost r-pmpost r-upmpost scor2prt sjisconv synctex t1ascii t1asm t1binary t1disasm t1dotlessj t1lint t1mac t1rawafm t1reencode t1testpage t1unmac t4ht tangle teckit_compile tex tex2aspc tex2xindy tex4ht texlua texluac texluajit texluajitc texsis tftopl tie ttf2afm ttf2pk ttf2tfm ttfdump ttftotype42 upbibtex updvitomp updvitype uplatex upmendex upmpost uppltotf uptex uptftopl utf8mex vftovp vlna vptovf weave wofm2opl wopl2ofm wovf2ovp wovp2ovf xdvi-xaw xdvipdfmx xelatex xetex xindy.run 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/2019/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.

Binaries 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 will likely run on CentOS 7 and CentOS 8, but also on Debian, openSUSE, Red Hat, Ubuntu, and other distributions. Similarly, Solaris 10 binaries run just fine on Solaris 11. FreeBSD binaries are often usable on ClonOS, GhostBSD, HardenedBSD, MidnightBSD, 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-2019.csh

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


Choosing a TeX Live repository mirror

As noted earlier, the master TeX Live repository is located in Paris, France. 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 Paris mirror 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 Paris mirror 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.


Updating your TeX Live 2019 pre-test installation

Every few days, I update my TeX Live 2019 pre-test installation tree like this on my CentOS 7 workstation:

    $ PATH=/path/to/texlive/2019/bin/x86_64-linux-centos-7:$PATH
    $ export PATH

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

    ### Update TeX Live 2019 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 an example 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/2019/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 Paris, France, is on Central European Time (UTC/GMT + 2 hours in summer, UTC/GMT + 1 hour in winter).


Build problems and other remarks for TeX Live 2019

Donald Knuth's TeX and METAFONT, and their associated TeXware and MFware programs and data files, have proven extraordinarily robust over almost 40 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 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 30 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 with about 1500 directories, 17_000 files, 230 Makefiles, and 80 GNU-style configure scripts. The binary subdirectory for each platform contains up to 454 programs. The total amount of source code just in the main languages (Asymptote, C, C++, Java, Lisp, PostScript, and Web) is about 3_520_000 lines. Programs in five scripting languages (awk, lua, perl, python, shell) contribute another 2_330_000 lines. In addition, in the final TeX Live installation tree, there are about 7_220_000 lines of code in the TeX macro language. In round figures, there are more than 13.3 million lines of code in TeX Live 2019!

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

BlackArch success

BlackArch Linux is a based on Arch Linux, and like it, uses a rolling release model. Although it was somewhat troublesome to install, due to repeated failures of the installer script, when the script finally completed and the system rebooted, I found that it has recent versions of gcc and clang compilers, and TeX Live 2019 is available in its package system. However, tlmgr is not supplied, so changing the default paper size required edits to /usr/share/texmf-dist/psutils/paper.cfg and /etc/texmf/tex/generic/tex-ini-files/pdftexconfig.tex, followed by running fmtutil-sys --all.

Once I had installed the packages needed by TeX Live builds, the texlive-20190904 source-code snapshot built without problems, including Asymptote.

CentOS 6 partial success

CentOS 6 and Scientific Linux 6 are subsets of the commercially supported Red Hat 6 Enterprise Linux, first released in 2010, and supported by the vendor until 2024. However, in 2019 at the final minor release, CentOS 6.10, /usr/bin/gcc is version 4.4.7 (20120313), and /usr/bin/clang is version 3.4.2 (20140109), and both are too old to support C++11 syntax. Thus, TeX Live 2018 and 2019 cannot be built on them without access to newer software.

Fortunately, at Utah, we have made strong efforts to build and install newer versions of both compiler families, and we have recent releases of gcc versions 4 through 9 installed. Red Hat does not offer clisp, but we have built and installed several releases of that Common Lisp implementation.

The C++11 requirements are confined to Asymptote and to the ICU Unicode library that is needed by xetex. Thus, it is of interest to see just how much of TeX Live 2019 can be built on CentOS 6, and I was pleased to obtain almost complete success.

Because I anticipated that several manual steps would be needed to assist in the job, instead of using the build-texlive-2019.sh script, I used the original source/Build script. Two main tricks are needed: (a) -liconv must be available as a locally built static library because it is not in the CentOS package system, and (b) clisp must be in the PATH. Here is what I did on a large server to get a build on CentOS 6 that should be usable at other sites, and for many other older Linux distributions:

    % unsetenv CONFIG_SITE
    % setenv TOPDIR /local/build/bare
    % setenv INSTDIR $TOPDIR/texlive-20190406/source/inst/bin/x86_64-pc-linux-gnu
    % mkdir -p $INSTDIR
    % set path = ( /bin /usr/bin $INSTDIR )
    % cd $TOPDIR
    % cp /usr/local/bin/clisp $INSTDIR
    % setenv LD_LIBRARY_PATH $TOPDIR{}:/usr/local/ashare/gcc/gcc-6-20180725/lib64
    % env CC=$B/gcc-6                                                                   \
          CXX=$B/g++-6                                                                  \
          TL_CONFIGURE_ARGS='--disable-xetex --disable-luajittex --disable-mfluajit'    \
          TL_MAKE_FLAGS=-j128                                                           \
          texlive-20190406/source/Build --no-clean
    % cd texlive-20190406/source/Work/texk/xdvik
    % rm xdvi-bin
    % make iconv_libs=/usr/local/lib64/libiconv.a all install
    % cd $TOPDIR/texlive-20190406/source/Work/utils/xindy
    % make all install

CentOS 5 partial success

On a 32-bit x86 machine running the older CentOS 5 operating system (first introduced in early 2007, and supported until late 2020), I attempted a similar procedure to that for CentOS 6. Unfortunately, it failed in compilation of dvisvgm because of code conflicts in locale support. I added --disable-dvisvgm to TL_CONFIGURE_ARGS, and that led to a successful fresh build. The build compilers are from the gcc-20180221 (6.4.1) distribution that I had previously built on the machine.

CentOS 7 success

On a newly installed 32-bit x86 machine running the latest CentOS 7 operating system (7.6.1810 from the AltArch repository that supports additional platforms beyond x86_64 first introduced in early 2007), my usual build-texlive-2019.sh and build-asymptote.sh scripts worked without problems, when I set CC=$B/gcc-6.5.0, CXX=$B/g++-6.5.0, and CLISP=$B/clisp, all built locally from source code releases. The native CentOS C/C++ compilers are too old (gcc-20150623 (4.8.5)) for C++-11 language levels.

When using a nonstandard C++ compiler for building Asymptote, it is necessary to force static linking of the strongly compiler-version dependent -lstdc++ library; otherwise, the asy executable contains a reference to the local pathname of that library, and is not usable at sites without that library. That requires addition of the option -static-libstdc++ to the CFLAGS variable (which Asymptote uses for C++ compiler options, instead of the conventional CXXFLAGS variable). The build-asymptote.sh script has been recently modified to automatically provide that option.

CentOS 8 success

The CentOS 8 ISO images were released on 24 September 2019, almost five months after Red Hat 8, and two months after Oracle 8.

Annoyingly, some library packages lack companion packages to supply C/C++ header files needed for compilation of other software that uses those libraries. I found that problem for bison, flex, giflib, libffcall, libgc, libsigsegv, and possibly others. I therefore had to build all of them from source code, and install them in our local software tree. With my earlier work on Red Hat 8, I got help from their technical support staff, who identified the Code Builder Ready repository as a source for those critically-needed packages. However, access to Red Hat's repositories require commercial licenses, so that repository is not usable for CentOS 8 installations. It is unclear yet whether CentOS 8 has any comparable repository.

I added the Extra Packages for Enterprise Linux (EPEL) 8 repository with

    # dnf install epel-release

That added 1477 packages to the list of available ones, but it did not provide the missing packages with header files.

It seems to me utterly foolish to separate installed header files from installed libraries: both are needed for source builds of packages that use those libraries. Similar separations are found on many other Linux distributions, but usually for each package libfoo, there is an associated libfoo-devel package that supplies the header files.

CentOS 8 lacks CLisp, so I had to build it from source code, using the recipe

    % ./configure --prefix=${prefix}                        \
                --with-libffcall-prefix=${prefix}           \
                --with-libsigsegv-prefix=${prefix}          \
                libdir=$L/lib64                             \
                CFLAGS=-I$L/include                         \
                LDFLAGS="-Wl,-rpath,$L/lib64 -L$L/lib64"    \
                LIBS='-lsigsegv -lffcall'

The TeX Live 2019 build was uneventful, but the Asymptote build failed because my build-asymptote.sh script supplied the desirable link-time option -static-libstdc++. Alas, CentOS 8 appears to have no package to provide a 64-bit static -lstdc++ library, even though the gcc-c++ package supplies a 32-bit companion. I therefore ran the configure command manually, omitting the problem option. The build got further, but again died because dvipdf is not available. As reported later for Oracle 8, that program was supplied in the ghostscript-9.07 package on CentOS 7, but it is absent from ghostscript-9.25 in CentOS 8.

Because only the Asymptote executable is needed, I forced the build to continue with make -i -k all check, and found that all tests passed. I therefore installed asy in the TeX Live 2019 tree, and packaged the complete binaries for x86_64-centos8 for retrieval from links at the top of this Web page.

WARNING: I applied a temporary bug fix for an error in a CentOS 8 (and also Oracle 8 and Red Hat 8) startup file for the tcsh shell. At the start of /etc/csh.cshrc, I inserted the assignment set TERM=xterm. That fixes erroneous code in /etc/profile.d/lang.csh that uses the TERM variable without testing for its being set. That file was rewritten incorrectly from the one in version 7 of those operating systems. The correct fix is a rewrite of the buggy file, which will take a few extra lines, but my one-line assignment solves the problem for now. The impact of the bug is that tcsh silently stops processing its startup files, and never reads the user's $HOME/.cshrc file that customizes the environment. That in turn means that remote commands issued from ssh connections may fail to work correctly: for me, they completely broke my automated software build procedures.

ClearLinux success

ClearLinux is a relatively recent distribution of GNU/Linux that is prepared and supported by Intel Corporation, and intended to exploit features of the latest Intel processors. As such, it needs rather new hardware, and UEFI booting, and thus, cannot run on most of the existing installed base of Intel x86_64 systems.

To find out whether your own x86_64 hardware can run ClearLinux natively, or in a container, or in a virtual machine, download and run Intel's script clear-linux-check-config.sh with the command-line options host and container in turn. Here is what that output looks like on a recent Intel NUC low-cost workstation box with a Core i7-7100U CPU:

    % ./clear-linux-check-config.sh host
    Checking if host is capable of running Clear Linux* OS

    SUCCESS: 64-bit CPU (lm)
    SUCCESS: Supplemental Streaming SIMD Extensions 3 (ssse3)
    SUCCESS: Streaming SIMD Extensions v4.1 (sse4_1)
    SUCCESS: Streaming SIMD Extensions v4.2 (sse4_2)
    SUCCESS: Advanced Encryption Standard instruction set (aes)
    SUCCESS: Carry-less Multiplication extensions (pclmulqdq)
    SUCCESS: EFI firmware

    % ./clear-linux-check-config.sh container
    Checking if host is capable of running Clear Linux* OS in a container

    SUCCESS: 64-bit CPU (lm)
    SUCCESS: Supplemental Streaming SIMD Extensions 3 (ssse3)
    SUCCESS: Streaming SIMD Extensions v4.1 (sse4_1)
    SUCCESS: Streaming SIMD Extensions v4.2 (sse4_2)
    SUCCESS: Advanced Encryption Standard instruction set (aes)
    SUCCESS: Carry-less Multiplication extensions (pclmulqdq)
    SUCCESS: Virtualisation support (vmx)
    SUCCESS: Kernel module kvm
    SUCCESS: Kernel module kvm_intel
    FAIL: Nested KVM support

ClearLinux has a rather different view of software package management. Instead of having tens of thousands of relatively small packages, as most GNU/Linux distributions do, it groups software collections into bundles, searchable and installable with commands like this:

    # swupd search-file /bin/gcc
    Searching for '/bin/gcc'

    Bundle c-basic [installed] (1790 MB on system)
            /usr/bin/gcc-ranlib
            /usr/bin/gcc-nm
            /usr/bin/gcc-ar
            /usr/bin/gcc

    Bundle c-extras-gcc7 (112 MB to install)
            /usr/bin/gcc7
            /usr/bin/gcc-ranlib7
            /usr/bin/gcc-nm7
            /usr/bin/gcc-ar7

    Bundle c-extras-gcc8 (118 MB to install)
            /usr/bin/gcc-ranlib-8
            /usr/bin/gcc-nm-8
            /usr/bin/gcc-ar-8
            /usr/bin/gcc-8

    …

    # swupd bundle-add c-extras-gcc7
    Loading required manifests...
    Downloading packs (32.84 Mb) for:
     - c-extras-gcc7
            ...100%
    Finishing packs extraction...
    No extra files need to be downloaded
    Installing bundle(s) files...
            ...100%
    Calling post-update helper scripts.
    Successfully installed 1 bundle

    # swupd info
    Installed version: 29750
    Version URL:       https://cdn.download.clearlinux.org/update
    Content URL:       https://cdn.download.clearlinux.org/update

The default, and latest, compilers available in the package system are gcc version 9.1.1 and clang version 8.0.0, both having been released in the last month before writing this. The kernel version is 5.1.7, when, apart from ArchLinux on ARM, openSUSE Tumbleweed, Parabola Linux-libre, and PCLinuxOS, few other GNU/Linux distributions in mid-2019 have even reached kernel version 5.0.

I found some unusual features of ClearLinux:

Once suitable compilers and clisp had been installed on ClearLinux, the build and installation of TeX Live 2019, and Asymptote, went flawlessly.

The ClearLinux package system includes most of TeX Live 2019, but Asymptote and programs that depend on clisp are absent. Although the TeX Live tlmgr program is available as /usr/bin/tlmgr, it fails to run because it cannot find TLConfig.pm, even though that file is installed in /usr/share/tlpkg/TeXLive/TLConfig.pm. Thus, it is difficult to change the paper size from its normal default of A4. See elsewhere for a description of the default paper configuration mess, and how to solve it.

Consequently, the complete TeX Live 2019 build for ClearLinux available here in bin/x86_64-clearlinux may be of use at other ClearLinux sites.

DragonFlyBSD success

DragonFlyBSD was forked from FreeBSD 4.x in 2003 with the intent of significantly improving multiprocessor and multithreaded performance, and of developing a completely new filesystem, Hammer, capable of distributed storage replication and file-based snapshots. By 2019, the kernel had been demonstrated to be capable of running over a million simultaneous processes, and network throughput has been significantly improved over DragonFlyBSD releases just a few years older.

In late August 2019, a DragonFlyBSD developer announced an early implementation of dfbeadm, similar to the beadm (Boot Environment ADMinistration) command in the Solaris and some BSD families, to make it easy to capture the state of the entire system before a major upgrade and a reboot. If problems arise from the upgrade, one can use dfbeadm to revert to the previous boot environment, and reboot, restoring the system to its pre-upgrade state.

Our test laboratory has included virtual machines for DragonFlyBSD versions from release 3.2 in late 2012, up to the latest, 5.6.2, in August 2019.

Because of significant kernel and library differences, DragonFlyBSD is not capable of running FreeBSD executables, but its development team has an outstanding record of supplying a large prebuilt binary package repertoire (more than 30,000 packages at release 5.6.2), including the latest development versions of gcc 4.x to 10.x, as well as clang versions from 4.x to 8.x. I have found DragonFlyBSD a pleasant and reliable system to use. Generally, if software packages can be built on GNU/Linux and FreeBSD, they should also be buildable on DragonFlyBSD.

The DragonFlyBSD development cycle is fairly short, and binary package archives for older releases tend to disappear from the Internet, so users need to be prepared to run O/S updates at least a couple of times a year.

The DragonFlyBSD package system does not supply clisp, but after installing some needed libraries, I built it without problems from source code with these commands:

    tar xf /some/path/to/clisp-2.49.92.p3.tar.gz
    cd clisp-2.49.92.p3
    ./configure --prefix=$prefix                            \
                --with-libffcall-prefix=/usr/local          \
                --with-libiconv-prefix=/usr/local           \
                --with-libpth-prefix=/usr/local             \
                --with-libreadline-prefix=/usr/local        \
                --with-libsigsegv-prefix=/usr/local         \
                --with-libunistring-prefix=/usr/local       \
        && gmake all check
    gmake install

The bin subdirectory of this Web site contains TeX Live 2019 binaries for a few recent versions of DragonFlyBSD. On the most recent one, 5.6.2, the build of texlive-20190820 includes asy and xindy.

FreeBSD success, after workarounds

The main build of TeX Live 2019 worked without problems on FreeBSD 10.4, 11.2, 12.0, and 13.0 on x86_64, and 11.2 and 13 on x86. FreeBSD 13 was released in early April 2019, during the last stages of the TeX Live 2019 build season, and at the same time ISO images for FreeBSD versions before 11.2 were removed from all repositories. Thus, I could not initially offer an x86 build for FreeBSD 10.4, because I had no ISO image file for it. In early May 2019, prerelease ISO images for FreeBSD 11.3 became available, and I created new machines for x86 and x86_64, and built TeX Live 2019 on those two.

Asymptote proved more of a problem, but with the help of its author, we found a solution. For FreeBSD, one has to revert to an older version of the Boehm garbage collector package. The build can then be done like this:

    % cd texlive-20190409/source/utils/asymptote
    % wget http://www.hboehm.info/gc/gc_source/gc-7.4.4.tar.gz
    % set path = ( /usr/local/bin /bin /usr/bin  )
    % ./configure --enable-gc=7.4.4 && gmake all check

The PATH variable must begin with /usr/local/bin because /usr/bin contains an older version of makeinfo that cannot handle the TeXinfo files processed in the Asymptote build. That recipe is expected to be a short-term workaround, and fixes to Asymptote are expected soon to restore the ability to use any recent version of the Boehm gc package.

The binary package systems for most versions of FreeBSD do not supply the clisp package that is needed to build the xindy document indexing tool. Fortunately, thanks to collaborative work in 2018 by the TeX Live team and the clisp developer, clisp can now be easily built on many more systems than in the past, and it was easily built from source code on our FreeBSD systems. Even better, the resulting executable depends only on one shared library, libc.so (-lc), so as long as it is found in the PATH, the resulting xindy depends only on vendor-supplied libraries, and thus should be usable on other FreeBSD systems of the same or later versions. That executable dynamically loads another one, xindy.run, that depends on a small number of additional libraries, all of which are likely to be already present on most systems. If not, they are readily installed with the vendor binary package manager. On the FreeBSD family, that could be a command like this:

    % sudo pkg install ncurses

On 5 July 2019, I found that there is an archive site with installation DVD images for old FreeBSD releases at ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/ISO-IMAGES/. That allowed creation of a new virtual machine for FreeBSD 10.4 on x86, and a subsequent successful build on it of Clisp and all of TeX Live 2019, including Asymptote.

FreeBSD 11.3 was officially released on 4 July 2019, and shortly thereafter, I created VMs for x86 and x86_64. I simply copied over the local software installation trees from the corresponding 11.3 prerelease VMs, and did not bother to rebuild TeX Live 2019, because the gcc and clang compiler versions did not change with the official release.

Working with Asymptote's author on a new VM running FreeBSD 13 on x86_64 (amd64), more fixes to the source code were found, and this recipe led to a successful standalone build:

    % git clone http://github.com/vectorgraphics/asymptote asymptote-2019-08-03
    % cd asymptote-2019-08-03
    % ./autogen.sh
    % wget https://github.com/ivmai/bdwgc/releases/download/v8.0.4/gc-8.0.4.tar.gz
    % wget http://www.ivmaisoft.com/_bin/atomic_ops/libatomic_ops-7.6.10.tar.gz
    % ./configure --enable-gc=8.0.4 --enable-texlive-build && gmake all check

The resulting executable was then added to the binary directory from a TeX Live 2019 build on FreeBSD 13 done a few days earlier, and then packaged for download here. There is also an x86 bundle.

Kali 2019.2 success

Kali Linux uses a rolling release model with Debian-style packaging. A new VM for it was built on 10 June 2019 from a weekly DVD snapshot. Its kernel version, 4.19.0, is slightly newer than that on Ubuntu 18.10, and the file /etc/os-release identifies the operating-system version as 2019.2. Its C compilers are gcc (version 8.3.0) and clang (7.0.1), and clisp is in the package system. Configuration and package installation was easily done, following recipes used for earlier Kali and Ubuntu machines.

Builds of TeX Live 2019 and Asymptote went flawlessly.

MidnightBSD partial success

On MidnightBSD 1.1, the build of xetex failed because link libraries in the generated Makefile are in the wrong order: they have -lfreetype before -lfontconfig, and -lexpat is missing altogether. The correct order is exhibited in this one-line patch:

    % diff texk/web2c/Makefile~ texk/web2c/Makefile
    254c254
    < am__append_100 = $(FONTCONFIG_LIBS)
    ---
    > am__append_100 = $(FONTCONFIG_LIBS) $(FREETYPE2_LIBS) -lexpat

With that patch, the build was restarted, and produced a xetex executable. However, Asymptote failed to build on that system, and xindy cannot be built because clisp is not installable from the binary package system.

The reason that xetex can be built successfully on some other systems is that they have a -lfontconfig library with additional subsidiary libraries that are automatically searched, as in this example from a GNU/Linux system:

    % readelf -d /usr/lib/libfontconfig.so.1 | grep Shared
 0x00000001 (NEEDED)                     Shared library: [libfreetype.so.6]
 0x00000001 (NEEDED)                     Shared library: [libexpat.so.1]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]

Curiously, readelf on MidnightBSD 1.1 produces similar results, yet the extra libraries are not found without our patch.

NetBSD partial success

On NetBSD 7.2, the gcc compiler is version 4.8.5, too old to compile some code in TeX Live 2018 and later. An initial build attempt with clang (version 6.0.1) failed because code in dvisvgm contained references to the unsupported data type __float128. I restarted the build with

    % env  CC=/usr/pkg/bin/clang                                        \
          CXX=/usr/pkg/bin/clang++                                      \
          TL_CONFIGURE_ARGS='--disable-dvisvgm'                         \
          build-texlive-2019.sh texlive-20190404

That got somewhat further, but failed in lcdf-typetools because of the __float128 type. I tried a fresh build like this:

    % env  CC=/usr/pkg/bin/clang                                         \
          CXX=/usr/pkg/bin/clang++                                       \
          TL_CONFIGURE_ARGS='--disable-dvisvgm --disable-lcdf-typetools' \
          build-texlive-2019.sh texlive-20190404

That build succeeded, and produced 429 executables for the bin/amd64-netbsd72 directory. However, Asymptote failed to compile because of unrecognized C++ syntax, and xindy failed to build, even though clisp is installed. The additional TL_CONFIGURE_ARGS settings have now been incorporated in the build-texlive-2019.sh script.

With NetBSD 8.0 and 8.1, compilers are newer: gcc 5.5.0 and clang 7.0.1. I found that the C++ parts of xpdf needed the -std=c++11 compiler option to expose the symbol SIZE_MAX in system header files, requiring another tweak to the build-texlive-2019.sh script. Asymptote built successfully.

OpenBSD partial success

Unlike most other operating systems, on OpenBSD, binary executables are generally not runnable on other O/S releases, even minor ones, because of incompatible system libraries and library versions. At Utah, we have OpenBSD 4.9, 5.1, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6.0, 6.1, 6.2, 6.3, and 6.4 systems for software testing. Thus, TeX Live must be completely rebuilt for each O/S release.

On OpenBSD 6.4 (amd64-openbsd64), compilation with the native cc compiler (really, clang version 6.0.0) failed in the luajit engine. I did a fresh build like this:

    % env CC=/usr/bin/cc                                                \
         CXX=/usr/bin/c++                                               \
         TL_CONFIGURE_ARGS='--disable-luajittex --disable-mfluajit'     \
         build-texlive-2019.sh texlive-20190402

That succeeded, but the C++ compiler could not compile Asymptote. Although clisp is installed from the OpenBSD package system, xindy could not be built either. The additional TL_CONFIGURE_ARGS settings have since been added to the build-texlive-2019.sh script.

The same procedure worked for OpenBSD 6.2 and 6.3, where Asymptote and xindy also failed to build.

On OpenBSD 6.1, clang++ is version 4.0.0, which is too old to handle the C++11 syntax used in part of the TeX Live 2018 and 2019 code. Thus, 6.1 and older versions of OpenBSD cannot compile the current TeXLive, without substantial work in building and installing newer compilers, libraries, and other packages from source code.

OpenMandriva Lx 4.0 success (after source code patch)

OpenMandriva Lx 4.0 is a new release of 11 May 2017, with major changes compared to the 3.0 release of 4 July 2017. In particular, the packing system has been changed from urpmi to dnf, the same used on recent Fedora and Red Hat releases, and with a syntax closely resembling that of its predecessor yum, and also that of apt-get from the Debian, Ubuntu, and related families. Also, the default C and C++ compilers used to build the entire distribution are now from clang 8.0.1; the 3.0 release used gcc 7.3.0. However, OpenMandriva provides no Common Lisp implementations, so I first had to build libffcal and clisp from source code. Conveniently, the package system offers libraries for -lgc, -lreadline, and -lsigsegv, all of which clisp needs. Once that was done, the build-texlive-2019.sh script ran flawlessly.

However, build-asymptote.sh bailed out with a complaint that sqrt is not found in the -lm math library. The problem is that the square-root operation is one of the basic five required by IEEE 754 arithmetic since 1985, so many CPU architectures supply it in hardware, eliminating the need to have a software implementation. There is a weak symbol for it in /lib64/libm.so.6. I therefore changed the configure.ac script to instead test for lgamma, a complicated function introduced in 1999 ISO Standard C that is unlikely to ever be commonly implemented in hardware. I then ran autoconf and autoheader to regenerate configure and config.h.in, respectively, and Asymptote then built successfully. Similar changes have been necessary on a few other platforms, so it would be advisable for the master source code of Asymptote to be updated accordingly.

OpenMandriva Lx 4.0 has more than 29,600 packages. I explicitly installed about 200 of them, bringing in almost 4300 others due to dependencies, just to get a suitable software base for installing TeX Live 2019, and many of my own software tools.

Oracle Linux 8 success (after workarounds)

As of late September 2019, the CentOS 8 project has yet to release any installer images [they finally appeared on 24 September]. Red Hat's major release of May 2019 is covered below. Oracle repackages Red Hat Enterprise Linux with additional software available to paying customers, but the base Oracle Linux releases are always free.

From timestamps in the downloaded ISO image, the Oracle 8 release was prepared in late July 2019, and I successfully installed it here on 18 September 2019. I expected that a TeX Live 2019 build on Oracle 8 would be straightforward, but their package repository lacks a few packages that are needed in TeX Live, and adding the Extra Packages for Enterprise Linux (EPEL) 8 repository did not provide the missing ones.

Because of missing packages, and total lack of support for Lisp from Red Hat, Oracle, and CentOS, I first built and installed current source code distributions of libsigsegv and libffcall on Oracle 8, and then was able to build the latest available clisp. I also installed all of the TeX Live 2018 packages in the Oracle 8 binary repository, expecting that to bring in all of the libraries needed for a TeX Live 2019 build.

I then fetched a fresh texlive-20190919 source tree, and found that it built without problems on Oracle 8.

However, a build of Asymptote initially failed because of the sqrt test described earlier. I replaced it by a test for lgamma in configure.ac, reran autoconf, and got the Asymptote executable to build, but the validation test failed because dvipdf is not installed. That program is available in the ghostscript-9.07 package on CentOS 7, but it is absent from ghostscript-9.25 in Oracle 8.

Because only the Asymptote executable is needed, I forced the build to continue with make -i -k all check, and found that all tests passed. I therefore installed asy in the TeX Live 2019 tree, and packaged the complete binaries for x86_64-oracle8 for retrieval from links at the top of this Web page.

OS108 partial success

OS108 is a recent operating system release that builds on NetBSD 8.0. It is new enough that the GNU autoconf system does not yet recognize it, but fortunately, that can be worked around with a suitable --build option. That difference mandated separate recognition of OS108 in build-texlive-2019.sh and build-asymptote.sh.

The only gcc version available is 5.5.0; the clang compiler is version 7.0.1.

The OS108 package system has clisp, needed for xindy, but lacks -lGLEW, which is preferred, but optional, for Asymptote.

This section is still being written!

Parabola Linux success (after minor tweak)

Parabola Linux uses the pacman package management system, like Arch Linux and Hyperbola Linux. Also like those systems, it uses a rolling-release model. There are more than 22,000 packages available for Parabola, so installing the prerequisites for a TeX Live 2019 build was easy. clisp, freeglut, and glew are all in the package system.

A first attempt at building TeX Live 2019 on Parabola failed because dvipng needs the pod2man utility for preparing its documentation, and that tool was not in the default search path, /bin:/usr/bin. I found the missing program in the directory /usr/bin/core_perl, so I modified the build-texlive-2019.sh script to check for pod2man in that location, and if so, add its directory to the PATH. With that change, the build of TeX Live 2019, including Asymptote, succeeded.

Puppy Linux 8.0 failure

Puppy Linux was first released in 2003, and since version 6.0 in 2014, builds upon Ubuntu releases. The latest Puppy version is 8.0, using Ubuntu 18.04 LTS (Long Term Stable). One might therefore expect that installation would be trivial, and building of TeX Live 2019 would succeed the first time. Neither is the case, and I would change built on to broken on to better describe my experience with Puppy 8.0.

I had tried, and failed, to install Puppy 6.0 on VMware a few years ago: mouse tracking in the window system was unusable, and Puppy seems excessively wedded to a GUI approach to computing and computer management.

With Puppy 8.0, the mouse problems remain, this time on both VirtManager and OVirt, but I succeeded on VirtualBox, with a somewhat working mouse. I was able to get enough configuration work done to allow a remote login from a terminal window where I could complete the job without depending on a mouse. The binary package system, pup, runs in a GUI, and was almost impossible to use because of mouse tracking problems. Web searches for package management on Puppy seemed to offer only GUI alternatives, but I finally discovered that the pkg command, invoked as env -i HOME=/root PATH=/bin:/sbin:/usr/bin:/usr/sbin pkg, seemed to offer a solution. That setting of HOME is essential, because the package installation history is kept in $HOME/.packages and $HOME/.pkg. The pkg command's names-all option returns a list of 61,460 available packages, and its add option installs them by name. Unfortunately, it omits their dependencies, but I later found that the deps option can find and install them. Still, after installing several versions of gcc and clang, attempts to compile a simple C program to print hello, world failed because of missing header files. Comparing the counts of header files in /usr/include between Puppy and Ubuntu 18.04, I found that about 2/3 of them are missing in Puppy.

The command dpkg-query -S on Debian and Ubuntu systems can be used to find the package that supplies a missing file, but Puppy's version is broken. I found several candidate package names on Ubuntu and installed them on Puppy, and got simple C programs to compile. However, they would not link, because they tried to find library files in a nonexisting /usr/x86_64-linux-gnu/lib directory. After much frustration, I simply created a symbolic link from /usr/lib to that missing directory. That seemed to fix many problems, and several of my bibliography tools were then able to be successfully built, validated, and installed.

The sad Puppy story is not over, however, because I found that although the bison and flex packages are listed in the Puppy repository, they are not installable. After tries with multiple source code distributions of each, I was able to build and install older versions of them that way, and that permitted complete builds, validations, and installations of all of my bibliography tools.

I found that the package-system supplied clang compilers do not run on Puppy, because they are linked against newer system libraries; they complain about unknown symbols GLIBCXX_3.4.21 and GLIBCXX_3.4.22, and immediately exit. I found similar problems with the poppler-utils package that supplies pdftotext and other useful tools.

I did binary package installations of numerous libraries and tools needed as prerequisites for TeX Live builds, including clisp. I also installed the TeX Live 2017 binary distribution. However, when I attempted to build TeX Live 2019 from source code, one of its configure scripts complained that it could not find a working cpp program for C++ use. At that point, after too many hours of aggravation from Puppy Linux 8.0, I gave up. It looks to me like the Puppy developers have taken a solid Ubuntu base and then wrecked it by further gratuitous repackaging and faulty dependency tracking.

I may return to Puppy Linux in the future, but probably not until another major Puppy release past 8.0 appears. In the meantime, I will continue to use Puppy for automated build testing of other software packages.

Red Hat Enterprise Linux 8 success

Red Hat Enterprise Linux (RHEL) 8 was released on 9 May 2019. It is a commercially supported distribution that requires annual licensing. The free, and unsupported, derivative, CentOS 8, was delayed for four months, for reasons described here. Because we expect to have numerous systems on CentOS 8 in the future, I registered for, downloaded, and built a new RHEL 8 machine on a 30-day evaluation, after which, updates will no longer be available without a license.

Setup of the RHEL 8 system was similar to that for recent Fedora releases (Fedora is Red Hat's aggressive development channel). After building from source code numerous packages of interest to me, and explicitly installing about 300 binary packages from Red Hat, I reached more than 1850 installed packages (because of package dependencies).

The native C/C++ compilers are from gcc-8.2.1 (20180905) and clang-7.0.1. That is a huge advance over CentOS 7, where they are gcc-4.8.5 (20150623) and clang-3.4.2, and that means that builds of C++ code should be much less of a problem than on previous Red Hat and CentOS systems.

Although Red Hat strives to provide an industrial-strength Linux distribution, I did encounter a few issues:

I filed several problem reports with the Red Hat support team, and quickly got positive responses from them that have resolved all of my issues. The key point is to edit the file /etc/yum.repos.d/redhat.repo, and in the block labeled codeready-builder-for-rhel-8-x86_64-rpms, change an assignment to read enabled = 1. That adds of the order of 1000 additional packages to the repository offerings. I then installed the packages bison-devel, flex-devel, freeglut-devel, freeglut, gc, gc-devel, glew-devel, guile-devel, guile, libGLEW, libffi-devel, libffi, libsigsegv-devel, libsigsegv, libstdc++-static, readline-devel, and readline. With those additions, clisp built without problems, and without the need to download and install separate packages for -ffi, -gc, and -lsigsegv. TeX Live 2019 and Asymptote also built without any issues.

Salix failure

On Salix 14.2 (a Linux distribution forked from Slackware), libfreetype2 is not available from the package system, so compilation fails in the build of gd. Fortunately, the binaries available in x86_64-linux appear to work on Salix.

SlackEl 7.2 success

Slackel is a GNU/Linux distribution based on Slackware and Salix. I installed VMs for 32-bit and 64-bit versions of Slackel 7.2, and was pleased to find that the gcc and clang compiler packages are recent releases, and that the Slackel package system already includes TeX Live 2019. Nevertheless, I made my own build attempts with a texlive-20190904 snapshot on both VMs: both succeeded, and Asymptote built flawlessly.

Slackware 14.2 failure

On Slackware 14.2 (one of the earliest Linux distributions), configuring in the freetype2 directory fails to work properly: the build subsequently attempts to compile the Microsoft Windows file, ftver.rc, and immediately fails. A fresh build that switched from gcc-8.3.0 to clang-8.0.0 failed for the same reason.

Slackware 14.2+ success

I created a new Slackware virtual machine using the latest DVD image. It is a post-14.2 version that I tentatively numbered 15. Its /etc/slackware-version file reports it as 14.2+; similar files on our older Slackware systems lack the plus sign. Those older systems get their updates from http://mirrors.us.kernel.org/slackware/slackware64-14.2/, whereas the new Slackware VM uses http://mirrors.us.kernel.org/slackware/slackware64-current/, as recorded in their /etc/slackpkg/mirrors files.

A build of TeX Live 2019, and Asymptote, on the new Slackware 14.2+ system went flawlessly, and the binaries are available here in bin/x86_64-slackware15 .