The Arm Linux binaries are incompatible with older systems
Liviu Ionescu
ilg at livius.net
Thu Sep 23 22:21:59 CEST 2021
For several years I used TeX Live 2018 in a cross-platform build environment (Docker based for Intel & Arm Linux, a separate folder on macOS).
When I tried to upgrade all platforms to TeX Live 2021, the `install-tl` script failed in the Arm Docker images.
After several investigations, I found out that the LUA binaries are compiled agains GLIBC_2.28 (probably on a Raspberry Pi):
% grep GLIB install-tl.log
texlua: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by texlua)
luatex: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by luatex)
luajittex: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by luajittex)
luajithbtex: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by luajithbtex)
luahbtex: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by luahbtex)
luatex: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by luatex)
luatex: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by luatex)
luatex: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by luatex)
luatex: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by luatex)
luatex: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by luatex)
luahbtex: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by luahbtex)
For compatibility with older systems, my build environment is based on Ubuntu 16, which uses an older GLIBC (2.23), and thus the system loader cannot load the more recent binaries:
```
# ldd --version
ldd (Ubuntu GLIBC 2.23-0ubuntu11.3) 2.23
# ldd -v /opt/texlive/bin/aarch64-linux/luatex
/opt/texlive/bin/aarch64-linux/luatex: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by /opt/texlive/bin/aarch64-linux/luatex)
linux-vdso.so.1 => (0x0000007fa2e9b000)
libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000007fa22bf000)
libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000007fa2212000)
libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000007fa20cc000)
/lib/ld-linux-aarch64.so.1 (0x0000007fa2e70000)
Version information:
/opt/texlive/bin/aarch64-linux/luatex:
libm.so.6 (GLIBC_2.17) => /lib/aarch64-linux-gnu/libm.so.6
libdl.so.2 (GLIBC_2.17) => /lib/aarch64-linux-gnu/libdl.so.2
libc.so.6 (GLIBC_2.28) => not found
libc.so.6 (GLIBC_2.17) => /lib/aarch64-linux-gnu/libc.so.6
/lib/aarch64-linux-gnu/libdl.so.2:
ld-linux-aarch64.so.1 (GLIBC_PRIVATE) => /lib/ld-linux-aarch64.so.1
libc.so.6 (GLIBC_PRIVATE) => /lib/aarch64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.17) => /lib/aarch64-linux-gnu/libc.so.6
/lib/aarch64-linux-gnu/libm.so.6:
libc.so.6 (GLIBC_PRIVATE) => /lib/aarch64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.17) => /lib/aarch64-linux-gnu/libc.so.6
/lib/aarch64-linux-gnu/libc.so.6:
ld-linux-aarch64.so.1 (GLIBC_2.17) => /lib/ld-linux-aarch64.so.1
ld-linux-aarch64.so.1 (GLIBC_PRIVATE) => /lib/ld-linux-aarch64.so.1
```
Same for the 32-bit version:
```
# ldd -v /opt/texlive/bin/armhf-linux/luatex
/opt/texlive/bin/armhf-linux/luatex: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.28' not found (required by /opt/texlive/bin/armhf-linux/luatex)
libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xf7c9f000)
libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xf7c27000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xf7b3b000)
/lib/ld-linux-armhf.so.3 (0xf7cb2000)
Version information:
/opt/texlive/bin/armhf-linux/luatex:
libdl.so.2 (GLIBC_2.4) => /lib/arm-linux-gnueabihf/libdl.so.2
libm.so.6 (GLIBC_2.4) => /lib/arm-linux-gnueabihf/libm.so.6
libc.so.6 (GLIBC_2.28) => not found
libc.so.6 (GLIBC_2.7) => /lib/arm-linux-gnueabihf/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib/arm-linux-gnueabihf/libc.so.6
/lib/arm-linux-gnueabihf/libdl.so.2:
ld-linux-armhf.so.3 (GLIBC_PRIVATE) => /lib/ld-linux-armhf.so.3
libc.so.6 (GLIBC_PRIVATE) => /lib/arm-linux-gnueabihf/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib/arm-linux-gnueabihf/libc.so.6
/lib/arm-linux-gnueabihf/libm.so.6:
libc.so.6 (GLIBC_PRIVATE) => /lib/arm-linux-gnueabihf/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib/arm-linux-gnueabihf/libc.so.6
/lib/arm-linux-gnueabihf/libc.so.6:
ld-linux-armhf.so.3 (GLIBC_2.4) => /lib/ld-linux-armhf.so.3
ld-linux-armhf.so.3 (GLIBC_PRIVATE) => /lib/ld-linux-armhf.so.3
```
To be noted that the Intel Linux LUA binaries were built on an old enough system such that installing TeX Live 2021 was possible even inside the very old Ubuntu 12 x86_64 and i386 Docker images.
---
So, for now, unless you have a better suggestion (like selectively disabling the LUA packages?), I have to stick with the 2018 distribution for all platforms; but since the 2018 distribution can no longer be installed on more recent macOS releases, for macOS I'm forced to upgrade to 2021, resulting an inconsistent environment, which usually asks for trouble.
It would be great to rebuild the Arm LUA binaries (64/32-bit) on an Ubuntu 16 (this can be easily done with existing Docker images), to increase compatibility of the TeX Live distribution. In fact the world did not start with the Raspberry Pi revolution.
Regards,
Liviu
p.s. If needed, the full install log is attached.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: install-tl.log
Type: application/octet-stream
Size: 372230 bytes
Desc: not available
URL: <https://tug.org/pipermail/tex-live/attachments/20210923/b7b51051/attachment-0001.obj>
-------------- next part --------------
More information about the tex-live
mailing list.