Files
klammertext/doc/install/raspberry_pi_install.md

5.0 KiB

Klammertext on a Raspberry Pi

A Raspberry Pi runs Linux, and Klammertext's Linux installation applies on it: the same compiler, the same Python, the same TeX Live, the same runtime.env. So this page is short. It says which Pi and which system the installation was done on, sends you to the Linux page, and then says what is specific to a small machine: what its four cores and its memory mean for the build, what TeX Live takes there, and what to do if a step runs out of room. The steps were followed on a Raspberry Pi 5 Model B with 8 GB of memory, running the 64-bit Raspberry Pi OS (Debian 12, "bookworm"), from a fresh clone of the public repository.

The system

Use the 64-bit Raspberry Pi OS, whichever edition (with desktop or Lite). The installation on this page was done on it; the 32-bit edition was not tried. Its Debian base has everything the Linux page asks for, under the same package names, and uname -m says aarch64.

Everything below happens in a terminal on the Pi, or over ssh to it. Nothing needs the desktop.

Installing Klammertext

Follow linux_source_install.md, from its first line. Everything on it applies: the packages by apt-get (g++, make, python3-dev, the image library python3-openimageio, poppler-utils), the clone, the line in ~/.bashrc that sources runtime.env, the build, TeX Live by the bundled script, the verification. No command on that page is different on the Pi.

What the Pi did with them, on the machine this page was written on:

Step On a Raspberry Pi 5 (8 GB)
Compiler GCC 12.2, the Debian 12 package
Python 3.11, with OpenImageIO 2.4 from python3-openimageio
make -C com under five minutes, four jobs
Engine test suite (make -C tst test) about two minutes, all passing
TeX Live a 770 MB tree under ~/external/texlive/2026, aarch64-linux binaries
Memory in use at the height of the build about 1.6 GB
Temperature at the height of the build 57 °C on the passive heat sink, no throttling

Cores and memory

The build runs one compile per core, four on a Pi 5, and more jobs than cores gain nothing: a compile keeps a core busy, so eight jobs on four cores only take turns. Four jobs is what the Linux page's build command does on a Pi by itself, with no option to add.

Memory is the other side. The optimizing compiler takes up to about half a gigabyte for one of the larger source files, and four of them at once took the machine's use to about 1.6 GB, which an 8 GB Pi 5 does not notice. By that measurement a 4 GB model has room for the same four-job build. On a model with less memory, or if the build ever stops with out of memory allocating, lower the count:

make -C com JOBS=2      # or JOBS=1: slower, and it finishes

The default Raspberry Pi OS swap file is small (512 MB), which is why the job count is the thing to lower rather than something to wait out: a build that has run out of memory does not finish by itself.

TeX Live

The Linux page's TeX Live script fetches the binaries for the machine it runs on, so on a Pi it installs the aarch64-linux set with no option given. The download is about 600 MB and the finished tree about 770 MB; plan the time by your connection, since the download is most of it. runtime.env finds the tree under ~/external/texlive/2026 on the Pi as it does anywhere, and ktext hello.kt -t pdf then works from the Linux page's verification section.

The container route

The prebuilt Klammertext images are built for arm64 as well as amd64, so linux_container_install.md applies on a 64-bit Raspberry Pi OS with Docker installed, and Docker pulls the arm64 build by itself. That route was not part of the installation this page records; the source route above is what was done and measured.

Troubleshooting

The build stops with out of memory allocating, or the Pi freezes during it. The machine has run out of memory for the number of compiles running at once. Restart it if it froze, then build with fewer jobs, make -C com JOBS=2 or JOBS=1, as in Cores and memory above.

python3 -c "import OpenImageIO" fails. Install the Debian package, sudo apt-get install python3-openimageio; it is the OpenImageIO for the system Python that ktext is built against. A pip install is refused into the system Python on Debian 12 without --break-system-packages, and the package avoids that.

xelatex: command not found. The TeX Live tree is not under ~/external/texlive/<year>, where runtime.env looks, or the shell was started before the tree existed. Open a new terminal; if that does not help, check the path the script was given.

The Pi gets hot during the build. A four-core compile for several minutes is the hardest thing Klammertext asks of the machine. The build on this page peaked at 57 °C on the passive heat sink the Pi came with, well below the point where the system slows the processor down, and vcgencmd get_throttled reported no throttling. A Pi without any heat sink may throttle, which makes the build slower but not wrong.