LFS-RPM/tlive-lfs.md

845 lines
30 KiB
Markdown
Raw Normal View History

2023-04-01 18:29:14 +08:00
TeXLive 2023 in LFS 11.3
========================
This document was written for TeXLive 2023 in LFS 11.3 but probably is
mostly applicable to other versions of LFS and to future versions of
TeXLive as well.
This document and the script within I consider to be Public Domain but
if you must have an actual license, Creative Commons CC0 works for me.
2023-04-01 22:50:17 +08:00
These instructions were tried on a very basic LFS 11.3 system with
just a few additions from BLFS, the important addition being
[curl](https://www.linuxfromscratch.org/blfs/view/stable/basicnet/curl.html)
which I chose to build against
[GnuTLS](https://www.linuxfromscratch.org/blfs/view/stable/postlfs/gnutls.html)
for TLS support. Building `curl` against OpenSSL (or LibreSSL) should also
work.
2023-04-02 10:23:51 +08:00
You should also have [GnuPG](https://www.linuxfromscratch.org/blfs/view/stable/postlfs/gnupg.html)
2023-04-02 11:05:37 +08:00
before installing TeXLive 2023 for package verification (performed
automatically by the TeXLive installer/updater).
2023-04-02 10:23:51 +08:00
2023-04-01 22:50:17 +08:00
These instructions also assume you have gone through the BLFS
[After LFS Configuration Issues](https://www.linuxfromscratch.org/blfs/view/stable/postlfs/config.html)
section and have implemented
[The Bash Shell Startup Files](https://www.linuxfromscratch.org/blfs/view/stable/postlfs/profile.html)
section.
2023-04-02 23:47:45 +08:00
Other dependencies can be resolved after install as needed, but these
three *probably* should be addressed sooner rather than later:
1. [Python Symbolic Link](#python-notes)
2. [XeTeX Required Libraries](#xetex)
3. [Ghostscript](#ghostscript)
Table of Contents
-----------------
* [Rationale](#rationale)
* [TeXLive Mountpoint](#texlive-mountpoint)
* [TeXLive User and Group](#texlive-user-and-group)
* [Install TeXLive 2023](#install-texlive-2023)
* [Post Install Administration](#post-install-administration)
* [LFS Missing Libraries](#lfs-missing-libraries)
* [Ghostscript](#ghostscript)
* [Ruby Dependency](#ruby-dependency)
* [Wish Dependency](#wish-dependency)
* [SNOBOL4 Dependency](#snobol4-dependency)
* [Python Notes](#python-notes)
* [Text Editors](#text-editors)
2023-04-01 18:29:14 +08:00
Rationale
---------
On an LFS system, software is generally installed from source. It is
possible to build TeXLive from source but under some situations, it
is *impractical* to do so.
TeXLive is a large collection of mostly architecture independent text
2023-04-02 11:05:37 +08:00
files and fonts from CTAN---The Comprehensive TeX Archive Network.
TeXLive does include a small number of compiled binaries.
2023-04-01 18:29:14 +08:00
2023-04-02 11:36:46 +08:00
Given the massive amount of architecture independent files, it often
2023-04-01 18:29:14 +08:00
makes sense to share a single TeXLive install between multiple operating
systems on the same physical computer, between multiple operating systems
on physically different computers all connected via the same LAN (via
NFS), or by installing TeXLive to a dedicated portable hard drive that
can be taken from place to place and connected to whichever computer
the TeX author is currently using.
Furthermore, for people who use LaTeX a lot, it often makes sense to
2023-04-02 11:05:37 +08:00
have multiple versions of TeXLive available. A document authored using
TeXLive 2016 may not properly build in TeXLive 2023 without some
2023-04-01 18:29:14 +08:00
time-consuming tweaks to the LaTeX code itself. If such a document
needs a minor edit, it is better to have the version of TeXLive the
LaTeX was originally authored under available than to have to potentially
spend hours updating LaTeX code.
This document explains installing and maintaining a TeXLive system in
LFS that can be shared with other operating systems, even on platforms
other than GNU/Linux.
2023-04-01 20:51:17 +08:00
TeXLive Mountpoint
------------------
Traditionally, the `/opt` filesystem is used for third-party products
that are maintained and updated *outside* of the operating system package
manager.
The typical structure is `/opt/<vendor>/<product>` and TeXLive fits
that paradigm perfectly.
The default install location is actually within `/usr/local` however
`/usr/local` generally should be reserved for software built locally
2023-04-02 11:05:37 +08:00
from source that is not under the control of a package manager.
2023-04-01 20:51:17 +08:00
As the root user, create the directory `/opt/texlive`:
mkdir -p /opt/texlive
If you will be sharing the TeXLive install between multiple operating
systems on the *same* hardware, you will want to either create a
2023-04-02 11:05:37 +08:00
partition on an internal drive or alternatively create a partition on
2023-04-01 20:51:17 +08:00
an external drive.
If you will be sharing the TeXLive install via NFS with other operating
systems on your LAN, you probably should use a partition on an internal
drive.
If you will be sharing the TeXLive install with other operating systems
by use of an external drive, you should use an external drive. Even a
USB thumb drive works.
If you are not sharing the TeXLive install then a separate partition
is not necessary.
For a separate partition, I recommend at least 25 GiB but I prefer 64 GiB
personally. TeXLive actually only needs about 7 GiB but having a larger
partition allows you to have multiple versions installed at the same
time.
I recommend using the `ext2` filesystem. TeXLive does not really benefit
from a journaled file system and especially if you are sharing it with
operating systems other than GNU/Linux, it is usually easier to find
software solutions for mounting `ext2` than for `ext4` or other modern
GNU/Linux filesystems.
2023-04-02 11:05:37 +08:00
Once your partition has been properly created and formatted, go ahead
and mount it at the `/opt/texlive` mount point.
2023-04-01 20:51:17 +08:00
If TeXLive is on an external drive, you want the `/etc/fstab` to auto-mount
2023-04-02 11:36:46 +08:00
it when detected but not attempt to mount it when not present:
2023-04-01 20:51:17 +08:00
UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /opt/texlive ext2 defaults,noauto 1 2
If TeXLive is on an internal drive, then you do want it to auto-mount
during boot:
UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /opt/texlive ext2 defaults 1 2
Obviously replace `XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX` with the
2023-04-02 11:36:46 +08:00
actual UUID (which you can find with the `blkid` command).
2023-04-01 20:51:17 +08:00
With the partition mounted, go ahead and create the following three
directories:
mkdir -p /opt/texlive/{2023,texmf-local,tladmin}
The first is where TeXLive 2023 will be installed. The second is for
local additions to the TeXLive system, such as additional fonts and macro
packages like [MathTime Pro 2](https://www.pctex.com/mtpro2.html). The
third is a home directory for the TeXLive administrative user. Keeping
the home directory for that user on the same partition as the TeXLive
2023-04-02 11:05:37 +08:00
install allows you to easily administrate the install from any Unix
2023-04-01 20:51:17 +08:00
operating system the partition is mounted on---should you choose to
do so.
2023-04-01 18:29:14 +08:00
TeXLive User and Group
----------------------
2023-04-01 20:51:17 +08:00
The next thing to do is create a `texlive` user and group. The purpose
of the group is two-fold:
2023-04-01 18:29:14 +08:00
1. It provides a group for the texlive administrator.
2. It provides a group for users of the texlive system.
When TeXLive is available, *any* user on the system can use it by simply
adjusting their PATH environmental variable. For users that *want* to
use the TeXLive system, it is easier if the environmental variables are
already set up for them when they log in.
By adding users who *want* to use the TeXLive system to the `texlive`
group, those users can automatically have their environmental variables
2023-04-02 11:05:37 +08:00
(PATH, INFOPATH, MANPATH) adjusted to use the TeXLive system while other
2023-04-01 18:29:14 +08:00
user accounts (including system users and daemons) that do not need
2023-04-01 18:43:23 +08:00
to use the TeXLive system do not have their environmental variables
2023-04-01 18:29:14 +08:00
adjusted.
The purpose of the `texlive` user is to have an otherwise unprivileged
user account that installs and administrates the TeXLive system.
2023-04-02 11:05:37 +08:00
When sharing a TeXLive install, each Unix system should have both the
2023-04-01 21:25:55 +08:00
`texlive` user and group and they should have the same user-id and
group-id, at least if you wish to be able to be able to also administrate
2023-04-02 11:05:37 +08:00
the TeXLive system from any Unix system using the partition.
2023-04-01 21:25:55 +08:00
The UID/GID I personally use is `450` for both. The reason I chose
`450` is because it is well above `100` (under `100` is usually used
2023-04-02 11:05:37 +08:00
for system users and daemons) yet below 500. Most Unix systems today
2023-04-01 21:25:55 +08:00
start user accounts at `1000` but some use `500` as the first personal
account UID/GID, so I chose `450` to specifically be below that.
When creating the `texlive` user, make sure to set the home directory
to `/opt/texlive/tladmin` and the shell to `/bin/bash` (or to `/usr/bin/bash`
on systems that put `bash` in `/usr/bin`).
I personally do not set a password for the `texlive` user. You can
become the `texlive` user by first logging in to the `root` account
and then issuing the following command:
su - texlive
If you have [sudo](https://www.linuxfromscratch.org/blfs/view/stable/postlfs/sudo.html)
2023-04-02 11:05:37 +08:00
installed *with the default BLFS configuration*, then users in the
`wheel` group can become the texlive user with the following command:
2023-04-01 21:25:55 +08:00
sudo su - texlive
2023-04-02 11:05:37 +08:00
That is my preferred method.
2023-04-01 21:25:55 +08:00
Note that you only need to become the `texlive` user to administer the
system. Usually that means once a month or so, installing updates. Or
whenever you think you come across a bug, to see if it is already fixed
before reporting it.
2023-04-01 21:41:27 +08:00
As the root user, copy the relevant `/etc/skel` files into the `/opt/texlive/tladmin`
directory:
cp /etc/skel/{.bash_logout,.bash_profile,.bashrc} /opt/texlive/tladmin/
Finally, set the correct permissions:
chown -R texlive:texlive /opt/texlive/tladmin
chown texlive:texlive /opt/texlive/{2023,texmf-local}
You are now ready to install TeXLive 2023.
Install TeXLive 2023
--------------------
2023-04-01 22:14:43 +08:00
To install TeXLive 2023, first become the `texlive` user:
sudo su - texlive
As the `texlive` user, retrieve the installer:
TMPDIR="`mktemp --tmpdir -d tlive-XXXXXXXXXXXX`"
pushd ${TMPDIR}
curl -L -O https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
Note the `-L` option is necessary because it will redirect you to a mirror.
2023-04-01 22:50:17 +08:00
Unpack the archive, enter the installer directory, and install it:
2023-04-01 22:14:43 +08:00
2023-04-01 22:50:17 +08:00
tar -zxf install-tl-unx.tar.gz
cd install-tl-20*
2023-04-01 22:14:43 +08:00
/usr/bin/perl ./install-tl \
--texdir="/opt/texlive/2023" \
--texmflocal="/opt/texlive/texmf-local" \
--no-interaction
2023-04-02 11:36:46 +08:00
There are some other options (such as default paper size) but those can
be set after install. Normally I like to set paper size in the document
2023-04-01 22:14:43 +08:00
itself however ff you plan to use TeXLive to build documentation that
comes with source packages in LFS/BLFS, you probably want to set the
2023-04-02 11:36:46 +08:00
default paper size to the size of paper your printer uses.
2023-04-01 21:41:27 +08:00
2023-04-02 11:05:37 +08:00
That is covered in the [Paper Size](#paper-size) section.
2023-04-01 22:14:43 +08:00
The install will likely take an hour or so, depending upon the speed
of the mirror used for the install.
Once installed, remove the temporary install directory:
popd
# optionally - since in /tmp it should be deleted automatically eventually
rm -rf ${TMPDIR}
2023-04-01 18:29:14 +08:00
/etc/profile.d/texlive.sh
-------------------------
The following script is what I use to set up the various environmental
2023-04-01 18:43:23 +08:00
variables for TeXLive in LFS. It is an adaptation of a script I first
2023-04-01 22:50:17 +08:00
wrote for use in CentOS for TeXLive 2014, the adaptation being I used
2023-04-02 10:23:51 +08:00
the `pathappend` function from the BLFS bash `/etc/profile` script.
2023-04-01 22:50:17 +08:00
See [The Bash Shell Startup Files](https://www.linuxfromscratch.org/blfs/view/stable/postlfs/profile.html)
in the BLFS book.
2023-04-01 18:29:14 +08:00
This script only sets up the path for non-root users of the `texlive`
group, and it does not need to be updated when you update TeXLive
2023-04-01 22:50:17 +08:00
itself to a new version, it always adjusts to the newest version
of TeXLive installed.
2023-04-01 18:29:14 +08:00
# /etc/profile.d/texlive.sh - set *PATH variables for TeXLive
checkuser () {
### returns 0 only for non-root members of texlive group
if [ "`id -u`" == "0" ]; then
return 1
fi
TLGID="`id -g texlive`" 2> /dev/null
if [ $? -ne 0 ]; then
return 1
fi
for id in `id -G`; do
if [ "${id}" == "${TLGID}" ]; then
return 0
fi
done
return 1
}
tlversion () {
### returns 0 only if it finds an ls-R in texmf-dist
### only checks for versions within last seven years.
YYYY=`date +%Y`
for n in 0 1 2 3 4 5 6 7; do
DIR="`echo "${YYYY} - ${n}" |bc`"
if [ -f /opt/texlive/${DIR}/texmf-dist/ls-R ]; then
printf ${DIR}
return 0
fi
done
return 1
}
tlplatform () {
HARDWARE="`uname -m`"
OS="`uname -o`"
case "${OS}" in
GNU/Linux)
case "${HARDWARE}" in
x86_64)
printf "x86_64-linux"
;;
arm64)
printf "aarch64-linux"
;;
i386 | i486 | i586 | i686)
printf "i386-linux"
;;
*)
# hardware not (yet) supported by script
return 1
;;
esac
;;
*)
# OS not (yet) supported by script
return 1
;;
esac
return 0
}
if checkuser; then
TLPLATFORM="`tlplatform`"
if [ $? -eq 0 ]; then
TLIVEV="`tlversion`"
if [ $? -eq 0 ]; then
2023-04-02 10:23:51 +08:00
# pathappend defined in BLFS/YJL /etc/profile
pathappend /opt/texlive/${TLIVEV}/bin/${TLPLATFORM}
pathappend /opt/texlive/${TLIVEV}/texmf-dist/doc/info INFOPATH
pathappend /opt/texlive/${TLIVEV}/texmf-dist/doc/man MANPATH
2023-04-01 18:29:14 +08:00
fi
fi
fi
# End /etc/profile.d/texlive.sh
2023-04-01 18:43:23 +08:00
With that file installed within `/etc/profile.d` LFS should automatically
set up the environmental variables for users within the `texlive` group
to use the TeXLive system. At least for users who use `bash` as their
login shell.
2023-04-01 18:29:14 +08:00
2023-04-01 18:43:23 +08:00
An equivalent for `tcsh` has not (yet) been written.
2023-04-01 18:29:14 +08:00
2023-04-01 22:50:17 +08:00
Note to use this method for setting up the environmental variables on
other GNU/Linux distributions (or other operating systems) you will
likely have to port it. CentOS/Fedora for example do not define the
2023-04-02 23:32:42 +08:00
`pathappend` function, on Linux distributions that ship with a packaged
(often old) TeXLive you want the TeXLive 2023 paths at the beginning,
and on macOS the appropriate place to mount the partition is probably
`/usr/local/opt/texlive` rather than `/opt/texlive`. Or maybe
`/Volumes/texlive`. Just pick one... 😜
2023-04-01 22:50:17 +08:00
2023-04-01 22:14:43 +08:00
If you would prefer to have the texlive environmental variables set
2023-04-01 22:50:17 +08:00
for *every* login user (except `root`) *without* needing to put every
login user in the `texlive` group, just have the `checkuser ()` function
return `0` for the `texlive` user and for any user with a UID greater
than `999`.
I highly recommend against modifying the environmental variables for
the root user, or for system/daemon users, for security reasons.
2023-04-01 22:14:43 +08:00
Post Install Administration
---------------------------
2023-04-02 06:43:53 +08:00
### Updates
Periodically it is a good idea to apply updates to the TeXLive system.
When the `tlmgr` command itself needs an update, it generally has to
be updated by itself before any other packages can be updated.
To keep my system up to date, I have the following shell script in
`/opt/texlive/tladmin` and run it as the `texlive` user about once a
month, or whenever I think about it:
#!/usr/bin/env bash
# Begin update-tl.sh
#
tlmgr update --self
if [ $? -eq 0 ]; then
tlmgr update --all
fi
# End update-tl.sh
I use `#!/usr/bin/env bash` as the shebang because I do not know what
operating system I might want to run it from, or where that operating
system has `bash` installed.
### Local Files
2023-04-02 23:32:42 +08:00
If you have any fonts you want to use with TeXLive or TeX packages that
are not part of TeXLive, put them in the `/opt/texlive/texmf-local`
tree and then as the `texlive` user, run the command `texhash` to update
the `ls-R` file in `texmf-local` so that TeXLive knows where to find the
files.
2023-04-02 06:43:53 +08:00
2023-04-02 10:23:51 +08:00
If any of the fonts need a fontmap file enabled, use the `updmap-sys`
variant of `updmap` to enable them so that they are enabled for all
users regardless of which operating system has the TeXLive partition
mounted.
2023-04-02 06:43:53 +08:00
### Paper Size
By default, a TeXLive install will use the A4 paper size for documents
that do not specify a paper size.
Generally it is a good idea to *always* set the intended paper size
in your project but for projects intended to be compiled anywhere---as
is the case with open source software documentation---it is better not
to specify the paper size so that the documentation can be built to
match the paper size it is most likely to be printed on.
If you are in the United States and would prefer U.S. Letter to A4 when
the document does not specify the paper size, run the following command:
tlmgr paper letter
If you need to change it back to A4:
tlmgr paper a4
### Binary Platform Support
By default, the TeXLive installer only installs binaries for one
platform. If you need support for another platform, you can install
support for an additional platform.
To see all available platform options as well as which platforms are
already installed, use the command:
tlmgr platform list
To add an available platform, use `tlmgr add <platform>`. For example,
to add support for macOS so that you can share the TeXLive install with
macOS, you would run the command:
tlmgr platform add universal-darwin
If you need to remove a platform you are no longer using, then you can
use the same command to add the platform, substituting `remove` in
place of `add`.
### Adobe Base 35 Fonts
Most people can skip this.
2023-04-02 11:36:46 +08:00
TeXLive ships with the metric compatible URW++ clones of the Adobe Base35
2023-04-02 06:43:53 +08:00
Postscript Level 2 fonts.
If you happen to have the genuine Adobe Base35 fonts installed in the
proper place within your `texmf-local` tree:
texmf-local/fonts/type1/adobe/base35/
Then you can configure TeXLive to use the genuine Adobe fonts. If they
are named using the "berry" names (e.g. phvbo8an.pfb):
updmap-sys --setoption LW35 ADOBEkb
2023-04-02 22:40:28 +08:00
On the other hand if they have the Adobe vendor file names
2023-04-02 06:43:53 +08:00
(e.g. `hvnbo___.pfb`):
updmap-sys --setoption LW35 ADOBE
2023-04-02 11:36:46 +08:00
Visually, almost no one can tell the difference between the free URW++
2023-04-02 06:43:53 +08:00
clones and the genuine Adobe fonts, but if you happen to have the
genuine Adobe fonts you might as well use them for projects that call
the Base35 postscript fonts.
2023-04-01 22:14:43 +08:00
2023-04-02 06:43:53 +08:00
Modern LaTeX projects that want to use fonts of the Base35 look and feel
generally should use the
[TeX Gyre](https://www.gust.org.pl/projects/e-foundry/tex-gyre/index_html)
OpenType fonts instead, as they have *much better* glyph coverage, but
some macro packages which have an internal need to typeset characters
(such as the packages for generating barcodes) will still specify the
actual Base35 fonts internally for backwards compatibility, and some
2023-04-02 11:36:46 +08:00
open source software with LaTeX documentation uses the Base35 fonts.
2023-04-01 22:14:43 +08:00
2023-04-02 10:23:51 +08:00
### Commercial Math Fonts
If you are not writing for a commercial publication, the free math
fonts that are part of TeXLive almost certainly meet your needs. See
[CTAN Maths Font](https://ctan.org/topic/font-maths).
2023-04-02 11:36:46 +08:00
Commercial publications however often have an established work-flow
2023-04-02 10:23:51 +08:00
and like to specify what macro packages and fonts you are allowed to
use in order to be allowed to make them money.
Some publications will require you to use
[MathTime Pro 2](https://www.pctex.com/mtpro2.html) for your math font
(usually in combination with `times.sty` as your main body font)
and other publications will require you use the
[Lucida Fonts](https://tug.org/store/lucida/index.html).
If you are writing for such a publication, the proper place to install
the files is within the `/opt/texlive/texmf-local` tree.
Both packages come with install instructions but in both cases I often
see some users confused.
1. First put the files in their proper place within the `texmf-local`
tree.
2. Then *as the `texlive` user* run the `texhash` command.
3. then *as the `texlive` user* run the `updmap-sys` variant of the
`updmap` command when enabling the font map file. Otherwise the fonts
will not be system-wide enabled for all users.
When you upgrade to a new version of TeXLive, you do not need to
re-install those packages, but you will need to re-run the appropriate
`updmap-sys` command to re-enable the needed map file in the new version
of TeXLive.
2023-04-02 00:48:11 +08:00
LFS Missing Libraries
---------------------
2023-04-01 18:29:14 +08:00
2023-04-02 22:40:28 +08:00
With a bare-bones LFS install, the following TeXLive 2023 installed
2023-04-01 18:43:23 +08:00
binaries have missing shared library dependencies.
2023-04-01 18:29:14 +08:00
2023-04-01 19:15:01 +08:00
Note that without these libraries installed, I was able to use TeXLive
2023-04-02 00:48:11 +08:00
2023 within LFS 11.3 to compile TeX projects originally authored for
2023-04-02 10:23:51 +08:00
LuaLaTeX compilation without any problems.
2023-04-01 19:15:01 +08:00
Most if not all of the missing shared library dependencies will be met
once an LFS/BLFS 11.3 system has the X11 windowing system installed.
2023-04-01 18:43:23 +08:00
### xetex
2023-04-01 18:29:14 +08:00
This is probably the most important component of TeXLive to support
even if you do not use it yourself, it is quite likely that at some
2023-04-02 10:23:51 +08:00
point you will need to compile a LaTeX document written for XeLaTeX if
2023-04-01 18:29:14 +08:00
you are involved at all in the TeX world.
2023-04-02 22:40:28 +08:00
The missing libraries after a bare-bones LFS install are:
2023-04-01 18:29:14 +08:00
* libfontconfig.so.1
* libfreetype.so.6
2023-04-01 19:15:01 +08:00
Relevant BLFS packages:
2023-04-01 19:21:35 +08:00
* [FreeType2](https://www.linuxfromscratch.org/blfs/view/stable/general/freetype2.html)
2023-04-01 19:15:01 +08:00
* [Fontconfig](https://www.linuxfromscratch.org/blfs/view/stable/general/fontconfig.html)
2023-04-01 18:43:23 +08:00
### metafont
2023-04-01 18:29:14 +08:00
2023-04-01 19:15:01 +08:00
The `mf` program is metafont and is used to generate TeX native fonts.
2023-04-02 10:23:51 +08:00
In this day in age, generally vector fonts (Type 1, TrueType, OpenType)
2023-04-02 22:40:28 +08:00
are used for new LaTeX projects and at least with LuaLaTeX, a bare-bones
2023-04-02 10:23:51 +08:00
LFS install has what is needed to deal with those. However sometimes older
LaTeX projects will want metafont available.
2023-04-01 18:29:14 +08:00
2023-04-02 22:40:28 +08:00
The missing libraries after a bare-bones LFS install are:
2023-04-01 18:29:14 +08:00
2023-04-01 18:43:23 +08:00
* libSM.so.6
* libICE.so.6
* libXext.so.6
* libX11.so.6
2023-04-01 18:29:14 +08:00
2023-04-01 18:43:23 +08:00
### Asymptote
2023-04-01 18:29:14 +08:00
Most users probably do not need this to work.
2023-04-01 19:15:01 +08:00
The `asy` command invokes a script-based vector graphics language for
2023-04-01 18:29:14 +08:00
generating technical drawings. It can be used to create very high
quality figures. At this point, most high quality figures are actually
generated as postscript or PDF images using programs outside of the
TeXLive system, but it is *possible* you may need this command to work
especially if you are working with older TeX projects.
2023-04-02 22:40:28 +08:00
The missing libraries after a bare-bones LFS install are:
2023-04-01 18:29:14 +08:00
2023-04-01 18:43:23 +08:00
* libGLX.so.0
* libglut.so.3
* libGL.so.1
2023-04-01 18:29:14 +08:00
2023-04-02 10:23:51 +08:00
If you need Asymptote, I recommend building it independently of TeXLive.
See BLFS [Asymptote](https://www.linuxfromscratch.org/blfs/view/stable/pst/asymptote.html).
You can then remove the binary from TeXLive. As the `texlive` user:
tlmgr remove asymptote.x86_64-linux --no-depends-at-all
However understand that doing so will mean `asy` may not be available
to other x86_64-linux operating systems unless they too have the binary
installed separate from TeXLive.
2023-04-01 18:43:23 +08:00
### xdvi-xaw
2023-04-01 18:29:14 +08:00
In the old days, the standard way to use a TeX system was to generate
a DVI file that could then be sent to be printed or rendered by a device
with an appropriate DVI driver.
2023-04-02 22:40:28 +08:00
When generating a postscript file, one would then use the program `dvips`
2023-04-01 18:29:14 +08:00
to create a postscript file from the DVI file.
DVI files are rarely generated now, but when they are generated you may
2023-04-01 19:15:01 +08:00
want the `xdvi-xaw` program to view the DVI file on your display before
2023-04-01 18:29:14 +08:00
it is printed or further processed into something else.
2023-04-02 22:40:28 +08:00
The missing libraries after a bare-bones LFS install are:
2023-04-01 18:29:14 +08:00
2023-04-01 18:43:23 +08:00
* libXaw.so.7
* libXmu.so.6
* libXt.so.6
* libSM.so.6
* libICE.so.6
* libXext.so.6
* libXpm.so.4
* libX11.so.6
2023-04-01 18:29:14 +08:00
2023-04-01 18:43:23 +08:00
### pdfclose, pdfopen
2023-04-01 18:29:14 +08:00
Those two programs are not needed on GNU/Linux.
The missing library if you want them to work anyway is:
2023-04-01 18:43:23 +08:00
* libX11.so.6
2023-04-01 18:29:14 +08:00
2023-04-02 10:23:51 +08:00
Ghostscript
-----------
Even though modern TeX engines can output directly to PDF and ghostscript
2023-04-02 11:36:46 +08:00
no longer plays the same role in a TeX work-flow that it used to play,
2023-04-02 10:23:51 +08:00
you will at some point find yourself needing to install
[Ghostscript](https://www.linuxfromscratch.org/blfs/view/stable/pst/gs.html).
2023-04-02 23:32:42 +08:00
Ruby Dependency
---------------
A few executable scripts depend upon Ruby. If you need those scripts,
install [Ruby](https://www.linuxfromscratch.org/blfs/view/stable/general/ruby.html).
Wish Dependency
---------------
A few executable scripts depend upon `wish` which is provided by Tk.
If you need those scripts, install
[Tk](https://www.linuxfromscratch.org/blfs/view/stable/general/tk.html).
Note that Tk requires the X11 system.
SNOBOL4 Dependency
------------------
A single script, `texaccents`, requires `snobol4`. It does not seem to
2023-04-02 23:47:45 +08:00
be part of BLFS but can be found at https://www.regressive.org/snobol4/csnobol4/curr/ .
2023-04-02 23:32:42 +08:00
Python Notes
------------
2023-04-02 10:23:51 +08:00
2023-04-02 22:40:28 +08:00
Python2 is officially deprecated.
2023-04-02 10:23:51 +08:00
2023-04-02 22:40:28 +08:00
Unfortunately, many GNU/Linux distributions have a practice of providing
`/usr/bin/python` as a symbolic link to the system Python binary, whether
it is Python 2 or Python 3.
2023-04-02 10:23:51 +08:00
2023-04-02 22:40:28 +08:00
Unfortunately many scripts that use either `/usr/bin/python` or
`/usr/bin/env python` instead of *explicitly* calling `python2`
2023-04-02 23:53:53 +08:00
or `python3` do not work with both versions.
2023-04-02 10:23:51 +08:00
2023-04-02 23:32:42 +08:00
It appears in TeXLive that the TeX maintainers have cleaned up that mess
within TeXLive. Many scripts do explicitly call `python3` or `python2`
and those that do not explicitly call a versioned `python` do in fact
work with either, *possibly* with one exception.
2023-04-02 10:23:51 +08:00
2023-04-02 22:40:28 +08:00
A small handful of scripts use the following un-versioned shebang:
2023-04-02 10:23:51 +08:00
2023-04-02 22:40:28 +08:00
#!/usr/bin/env python
2023-04-02 10:23:51 +08:00
2023-04-02 22:40:28 +08:00
The list:
2023-04-02 10:23:51 +08:00
2023-04-02 22:40:28 +08:00
* ebong{,.py}
* latex-papersize{,.py}
* lily-glyph-commands{,.py}
* lily-image-commands{,.py}
* lily-rebuild-pdfs{,.py}
* lilyglyphs-common.py
* {,de}pythontex{,.py}
* pythontex_2to3.py
* pythontex_install.py
* texliveonfly{,.py}
2023-04-02 10:23:51 +08:00
2023-04-02 22:40:28 +08:00
An even smaller handful of scripts use the following un-versioned shebang:
2023-04-02 10:23:51 +08:00
2023-04-02 22:40:28 +08:00
#!/usr/bin/python
2023-04-02 10:23:51 +08:00
2023-04-02 22:40:28 +08:00
The list:
* pyMergeChanges.py
* de-macro
Python scripts without a `.py` suffix are in the architecture dependent
`bin/[arch]` directory and have an identical script with a suffix in the
`texmf/scripts`
directory.
The `de-macro` script is unique in that it does not have a `.py` suffix
in the version within the `texmf/scripts` directory.
The system Python for LFS 11.3 is Python 3 but LFS does not create a
`/usr/bin/python` symbolic link. If you need any of these Python scripts
in your LaTeX work-flow, you have to have it. Modifying the scripts
themselves to call `python3` will get undone whenever you update TeXLive.
As the `root` user:
ln -svf python3.11 /usr/bin/python
A summary of the Python scripts that call an un-versioned `python`:
### Ebong
2023-04-02 10:23:51 +08:00
2023-04-02 22:40:28 +08:00
I could not find any reference to whether or not this script has been
tested with Python 3 but it *looks* like it should work to me.
2023-04-02 10:23:51 +08:00
2023-04-02 22:40:28 +08:00
It is used as a helper for writing Bengali in Rapid Roman Format, I
have no way to test whether it works the same in Python 3 as it does
in Python 2 but it *looks* to me like it should work.
2023-04-02 10:23:51 +08:00
2023-04-02 22:40:28 +08:00
### Lilyglyphs
The `lilyglyphs` Python scripts have been compatible with Python 3
since September 30, 2020. See the
2023-04-02 23:32:42 +08:00
[Lilyglyph CTAN Announcement](https://ctan.org/ctan-ann/id/mailman.3260.1601492366.2548.ctan-ann@ctan.org).
2023-04-02 22:40:28 +08:00
### Pythontex
The `pythontex` Python scripts that do not use a version specific shebang
simply detect the system python so that scripts with either a `python2`
or a `python3` versioned shebang can be called.
### TexLiveOnFly
This script is useless when a full TeXLive install was performed, the
sole purpose of that script is to download TeXLive packages that are
needed but not present in the local install.
The comments in the script itself specifies it works with either
Python2 or Python3.
### pyMergeChanges.py
This script specifies that it *only* works with Python 3. It really
should thus have a `#!/usr/bin/python3` or `#!/usr/bin/env python3`
shebang but it does not.
### The `de-macro` Script
2023-04-02 10:23:51 +08:00
2023-04-02 22:40:28 +08:00
This script specifies that it works with either Python 2 or Python 3.
2023-04-02 10:23:51 +08:00
2023-04-02 00:48:11 +08:00
Text Editors
------------
To compose your LaTeX projects, you need a text editor you know how
to use, preferably one with LaTeX syntax highlighting.
When using UTF-8 (as you should for anything new), the text editor should
not insert a BOM (Byte Order Mark) at the beginning of the document.
Allegedly a BOM is no longer a problem in TeXLive since TeXLive 2018
but I have not verified that always is the case, and it probably is
not the case for some commercial TeX distributions that publishers
often use.
Use a text editor that does not insert a BOM.
2023-04-02 11:05:37 +08:00
### Traditional Unix-like Operating Systems CLI
2023-04-02 00:48:11 +08:00
The `vim` editor that is part of LFS is sufficient but if you do a *lot*
of work in LaTeX it may be worth your time to learn how to use
[GNU Emacs](https://www.linuxfromscratch.org/blfs/view/stable/postlfs/emacs.html).
2023-04-02 11:05:37 +08:00
### Traditional Unix-like Operating Systems GUI
2023-04-02 00:48:11 +08:00
For a GUI editor, I *really* like LaTeXila but the project first was
integrated in GNOME3 as [GNOME-LaTeX](https://gitlab.gnome.org/swilmet/gnome-latex)
and then it appears the original author has left or been pushed out.
I just use LaTeXila 3.26.1 and do not bother updating it, I am not a
fan of GNOME 3.
LaTeXila 3.26.1 builds and works well in [MATE](https://mate-desktop.org/).
Unfortunately I do not know of a current mirror that still hosts the
LaTeXila tarballs but it can be found in the old Fedora source RPMs.
### macOS
To share TeXLive as installed here with macOS, you need to be able to
mount `ext2` filesystems. There are several solutions, pick one.
Note that MacTeX is just TeXLive with a few extra GUI programs that I
personally found to be useless. On macOS for a text editor, I highly
recommend using [BBEdit](https://www.barebones.com/products/bbedit/).
The free version works well with LaTeX but BBEdit is worth paying for.
### Windows
It is possible to run TeXLive on Windows but it is *possible* the
Windows installer is actually required.
Most people I know in the LaTeX world who use Windows just use
[MiKTeX](https://miktex.org/) on Windows, and generally use the
[Notepad++](https://notepad-plus-plus.org/downloads/) text editor.
When I have had to use Windows, any projects I was working on in TeXLive
had no problems compiling in MiKTeX, MiKTeX is highly compatible with
TeXLive since both use CTAN for their macro packages. Just be sure that
Notepad++ uses Unix line breaks to avoid projects with mixed line breaks.
A proper UTF-8 text editor without a BOM (Byte Order Mark) is recommended.
Do not try to use Windows Notepad, it always adds a BOM. Use Notepad++
configured to save as UTF-8 without the BOM.