The TeX Users Group provides a comprehensive TeX system called TeX Live from which Linux distributions build their own system for inclusion in their package repositories. For some time I have noticed some bugs that have caused minor breakage in a long and complex document I have been preparing each time one of the distributions I use regularly updates their distribution. In one case (openSUSE Tumbleweed) it became unusable. The Linux distribution which had the most stable and reliable TeX Live native distribution, and the one I switched to when the other distributions had a problem on the part of the document I was working on the time also had a major problem after an update, I decided to install the TeX Live distribution from TUG. This article describes one of the installation methods of the latest stable release of TeX Live from TUG.
I had considered using the TUG's distribution of TeX Live in the past, but the non-ideal experience I had with MikTeX on Windows compared with the simplicity of using a Linux distribution's package manager dissuaded me. I also had the impression that installing the TUG's TeX Live would be more complicated than it turned out to be. When an Arch update finally broke the last completely working TeX Live installation I had of all the installations on all distributions on my G5, I decided to go ahead and uninstall the distributions' version of TeX Live available from their repos and switch to the TeX Live from TUG, installed from the TeX Live ISO image, as opposed to the other installation methods.
This was a good decision, and one I recommend other TeX/LaTeX users consider using. TUG provides a well tested and stable yearly release whose components can be updated, if desired, using a TeX Live management tool included with the installation. It seems Linux distributions base their inclusions in their repositories on these updated components which, unlike the yearly release, are not thoroughly tested, leading to the instabilities and bugs I experienced. Installing this version on all the distributions I use will give me, in addition to stability, a consistent experience on all the distributions I use.
There installation media are available:
I chose the ISO based installation method because:
The installer is a Perl script, so it needs to be installed on the system. Most distributions include it by default. To use the available GUI mode, Tcl and its extension Tk (Tcl/Tk) are required. As I write this on Manjaro, I had already installed TeX Live on Arch, openSUSE Tumbleweed, Kubuntu, and Fedora, but I don't remember if they were already installed, by default or through some other prior package installation. On Manjaro Tcl/Tk is made available by installing the packages tcl andtk, of which tcl was already installed.
Some installer GUI related options, namely the expert, wizard, and perltk options (entered as -gui=expert, -gui=wizard, and -gui=perltk) require the Perl::Tk Perl module. such as advanced advanced and Perl, which is usually installed by Linux distributions. But it requires Perl modules that may not be installed by default in some distributions. If the installer is used in graphical mode, Tcl/TK is required, Perl::Tk for advanced options in GUI installer. In my prior installations I didn't use any of these options, so I don't know if this is generally installed by default. On Manjaro however, it happened to not be installed (which makes sense since Tk wasn't already installed. Installing the package perl-tk makes it available.
The prerequisites are summarized below:
I chose the ISO medium for installation instead of the net installer. The ISO image as well as the files necessary for verifying the authenticity of the image are in the mirror subdirectory at /systems/texlive/Images/ with the obvious extensions. There are two sets of these files, one set named with only the release year, and the other set named with the release year and an appended full date. I downloaded texlive2020.iso.
Before executing the installer, some minor tasks are necessary.
sudo mkdir -p /mnt
sudo mount -t iso9660 -o ro,loop,noauto /home/brook/DataEXT4/SoftwareDownloads/texlive/texlive2020.iso /mnt
Perform the following steps to start the installer.
, this is
16:53:14 ⏚ [brook@G5-MANJARO:/mnt] $ cd /mnt
16:53:14 ⏚ [brook@G5-MANJARO:/mnt] 19h48m55s $ sudo perl install-tl -guiBecause this is executed with root privileges, the installation will be in a path writable by root , by default to /usr/local/texlive/2020 for this release. It is possible to install multiple versions of Tex Live by changing the final directory in the path. For example, when the 2021 version of the stable TeX Live is released it can be installed alongside the 2020 version at /usr/local/texlive/2021. Issuing the command as a regular user, or without using sudo will install it to the user's home directory. I chose the former.
After invoking the command to start the installer with sudo, the splash window shown in the first image in the following set of screenshots is presented very briefly before the screen of the second image is presented. The installer is only one screen with various installation settings displayed, with buttons that can be clicked to change values in a modal window. The details of some of the settings and modals are listed below.
Most settings that are shown in the installer refer to the TeX Directory Structure. If not adding any TeX/LaTeX components or LaTeX styles and classes from other sources, it does not need to be investigated. However, if adding these, it is preferable to refer to the The TeX Live Guide—2020, or for more detail, the TeX Directory Structure documentation available as a PDF.
Although the TeXLive distribution is very comprehensive in the packages it includes, there may be a situation where a needed package may not be available in the distribution; or if it is included in the distribution, the version of the package may be problematic. For these situations, it is possible to manually install the package in a path generated by the TeXLive installer just for such manual installations, namely /usr/local/texlive/texmf-local. In our case we modified this path for maual TeX package installations (see Image 5, above) to /usr/local/texlive/2020/texmf-local in order to be able to install multiple versions of TeXLive.
One such package, available at the GitHub repository Holzhaus/latex-rail, is the modernized version of the Rail package for LaTeX which works with a companion c program -- the executable of which is also called rail -- to generate syntax diagrams in the LaTeX document. The c program must be compiled locally and the executable, its associated resources, such as the man page, and the LaTeX package installed manually. A Makefile distributed with latex-rail makes these tasks simple. All that is required is to ensure the compilation requirements are met, and to edit the Makefile to specify the location of the TeXLive installation.
The README file specifies that " lex and yacc (or compatible programs such as flex and bison) and a C compiler" are required. The requirement for lex can typically be satisfied by installing a package named flex on many distributions. The yacc requirement can be satisfied by a package named byacc. GCC which includes a c compiler should already be installed on most distributions. Before continuing, be sure to install these packages.
The Makefile sets some variables to make the compilation of the program, and the installaiton of the program and the LaTeX package simple. The variables are displayed in the following listing, which shows the variables before editing to make it compatible with our installation of TeXLive.
PREFIX = /usr/local DESTDIR = BINDIR=$(PREFIX)/bin TEXDIR=$(PREFIX)/texlive/texmf-local/tex/latex/rail MANDIR=$(PREFIX)/share/man MANSUFFIX=l
Since TeXLive was installed under /usr/local, the value of PREFIX does not have to be modified. None of the other variable values that depend on PREFIX have to be modified either, except the value of TEXDIR. The TEXDIR variable defines the root path of locally installed TeX packages under the main root installation path. Since we modified the main installation path from the default
/usr/local/texlive
to
/usr/local/texlive/2020
we must change the value of TEXDIR from
TEXDIR=$(PREFIXi)/texlive/texmf-local/tex/latex/rail
to
TEXDIR=$(PREFIXi)/texlive/2020/texmf-local/tex/latex/rail
After making the above edit to the Makefile, all that is necessary the is to change directory to the directory to which the distributed files were cloned and to run make as an unprivileged user and make install with elevated privileges. This is shown in the following image.
The TeX Live distribution from the TUG provides an stable alternative to TeX Live as distributed by distributions which may include components that are not as thoroughly tested as those in the yearly TUG release. The installer is easy to use, and after installing as above requires no further configuration.
Installing the distribution form the TUG also allows the installation of multiple yearly releases on the system. As mentioned above, when the 2021 version of the yearly release becomes available, it can be installed to /usr/local/texlive/2021 alongside the 2020 version installed to /usr/local/texlive/2020. This multi-version installation will only require an adjustment of the user's $PATH.
The installation of TeX Live as described here also installs TeX Live Manager, which has a CLI and GUI interface, shown below.
It allows users to view information on the installed components, as well as install new components and update existing components. It must be used with care to not introduce instability to the installed packages. For example, without modifying the source of TeX Live components used by the tool, installing new packages may install current versions instead of those that are part of the yearly release.
It may be interesting to some that removing the packages that comprise the existing TeX Live installation with one command in Arch Based distributions required the esoteric command
sudo pacman -Rncs $(pacman -Qsq texlive).
16:23:40 ⏚ [brook@G5-MANJARO:~] 1 $ sudo pacman -Rncs $(pacman -Qsq texlive) checking dependencies... :: ghostscript optionally requires texlive-core: needed for dvipdf :: inkscape optionally requires texlive-core: latex formulas Package (18) Old Version Net Change kile 2.9.93-2 -20.91 MiB libsigsegv 2.12-2 -0.03 MiB libsynctex 2020.54586-6 -0.14 MiB t1lib 5.1.2-8 -1.17 MiB texmaker 5.0.4-1 -36.66 MiB texlive-bibtexextra 2020.55376-1 -24.42 MiB texlive-bin 2020.54586-6 -64.40 MiB texlive-core 2020.55416-1 -411.62 MiB texlive-fontsextra 2020.55407-1 -1324.82 MiB texlive-formatsextra 2020.54498-1 -3.18 MiB texlive-games 2020.55271-1 -3.31 MiB texlive-humanities 2020.55389-1 -1.99 MiB texlive-latexextra 2020.55418-1 -53.05 MiB texlive-music 2020.54758-2 -36.09 MiB texlive-pictures 2020.55342-1 -23.32 MiB texlive-pstricks 2020.55289-1 -39.11 MiB texlive-publishers 2020.55415-1 -58.44 MiB texlive-science 2020.55390-1 -13.69 MiB Total Removed Size: 2116.35 MiB :: Do you want to remove these packages? [Y/n]
On openSUSE Tumbleweed it was necessary to switch to root first before running the installer because of the following error
19:10:31 [brook@G5-openSUSE:/mnt] $ perl install-tl -gui 19:15:24 θ65° [brook@G5-openSUSE:/mnt] 3m4s $ sudo !! sudo perl install-tl -gui application-specific initialization failed: no display name and no $DISPLAY environment variable Error in startup script: no display name and no $DISPLAY environment variable while executing "load /usr/lib64/libtk8.6.so Tk" ("package ifneeded Tk 8.6.10" script) invoked from within "package require Tk" (file "./tlpkg/installer/install-tl-gui.tcl" line 33)
Executing the command after switching to the root user with the - option, the command executed successfully.
19:17:13 θ66° [brook@G5-openSUSE:/mnt] 5s $ su - root Password: G5-openSUSE:~ # cd /mnt G5-openSUSE:/mnt # perl install-tl -gui