LuaLaTeX non produce output in Flatpak TeXLive
Attualmente sto lavorando per rendere TeXLive utilizzabile in Linux Flatpaks, tuttavia LuaLaTeX "silenziosamente" fallisce e non ho idea di cosa potrebbe essere sbagliato o da dove iniziare. L'output ei sintomi non sono dissimili da Lualatex non produce output (MiKTeX) , tuttavia non sono né su Windows con codifica UCS / ANSI, né i miei file o $HOME
in un percorso non ASCII, né utilizzo MikTeX.
Sto riutilizzando il mwe dalla domanda collegata:
Compilazione
abc \bye
con luatex
funziona ma se carico il pacchetto otf:
\input luaotfload.sty
abc \bye
Ottengo:
$ luatex mwe.tex
This is LuaTeX, Version 1.12.0 (TeX Live 2020)
restricted system commands enabled.
(./mwe.tex
(/usr/lib/sdk/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload.sty
(/usr/lib/sdk/texlive/texmf-dist/tex/latex/base/ltluatex.tex)
Si può notare che nell'ultima riga dell'output / log manca una nuova riga che potrebbe indicare un crash del motore (?).
Inoltre, l'esecuzione luaotfload-tool -u
anche con la massima verbosità non fornisce alcun output. Tuttavia, per quello che vale, ConTeXt MkIV (cioè usando LuaTeX come backend) funziona bene.
La mia prima ipotesi era che Flatpak fosse basato sulla versione DVD di TeXLive 2020 senza aggiornamenti poiché (incluse due versioni minori di luaotfload) era troppo vecchio. Attualmente sto lavorando per poter utilizzare istantanee giornaliere più recenti di TeXLive in Flatpak (https://github.com/flathub/org.freedesktop.Sdk.Extension.texlive/pull/28), tuttavia questo non ha modificato nessuno dei comportamenti precedenti (ho confermato che sto effettivamente eseguendo luaotfload 3.14 nel Flatpak).
Passaggi per riprodurre:
Configura il telecomando flathub e la tua distribuzione per avere flatpaks nel tuo percorso, quindi installa TeXLive:
$ flatpak install org.freedesktop.Sdk.Extension.texlive
Esegui una shell all'interno della sandbox e inserisci l'SDK di TeXLive nel PERCORSO:
$ flatpak run --command=/usr/bin/sh --devel org.freedesktop.Sdk [ org.freedesktop.Sdk ~ ]$ source /usr/lib/sdk/texlive/enable.sh
Crea un MWE e costruisci:
[ org.freedesktop.Sdk ~ ]$ cat > mwe.tex \input luaotfload.sty abc \bye [ org.freedesktop.Sdk ~ ]$ luatex mwe.tex
Risposte
Recentemente ho riscontrato lo stesso problema quando ho provato a creare documenti TeX con Nix . Dopo un po 'di debug ho scoperto che il problema fondamentale è che TEXMFCACHE
non è scrivibile. Esaminando texmf.cnf
troviamo i valori predefiniti in
[📦 org.freedesktop.Sdk ~]$ cat /usr/lib/sdk/texlive/texmf-dist/web2c/texmf.cnf | grep -e '^TEXMFVAR' -e '^TEXMFSYSVAR' -e '^TEXMFCACHE' TEXMFSYSVAR = $TEXMFROOT/texmf-var
TEXMFVAR = ~/.texlive2020/texmf-var
TEXMFCACHE = $TEXMFSYSVAR;$TEXMFVAR
Per Flatpak, alcuni vengono sostituiti ./install-tl -portable
dall'opzione come parte del processo di confezionamento del Flatpak:
[📦 org.freedesktop.Sdk ~]$ cat /usr/lib/sdk/texlive/texmf.cnf | grep -e '^[^%]' TEXMFLOCAL = $SELFAUTOPARENT/texmf-local
TEXMFHOME = $TEXMFLOCAL TEXMFVAR = $TEXMFSYSVAR
TEXMFCONFIG = $TEXMFSYSCONFIG ASYMPTOTE_HOME = $TEXMFCONFIG/asymptote
Quindi originariamente TEXMFCACHE
è definito in termini di TEXMFSYSVAR
e TEXMFVAR
. Il primo, di TEXMFSYSVAR
solito non è scrivibile sulla maggior parte dei sistemi, mentre il secondo TEXMFVAR
, si presume sia sempre scrivibile. Questa ipotesi ovviamente fallisce se tutto è montato come un overlay di sola lettura del sistema, come su Nix.
Nel Flatpak il problema non è lo stesso, ma correlati, come TEXMFVAR
e quindi anche TEXMFCACHE
indicare TEXMFSYSVAR
solo (a causa della -portable
opzione). Poiché questa directory è di sola lettura, anche questo non riesce.
Fortunatamente puoi sovrascrivere i valori texmf.cnf
impostando semplicemente le variabili di ambiente con lo stesso nome. Quindi, ad esempio, potremmo usare
$ flatpak run --env=TEXMFVAR=/tmp --command=/usr/bin/sh --devel org.freedesktop.Sdk
Qui ho scelto TEXMFVAR=/tmp
, ma funzionerebbe anche qualsiasi altra directory che è garantita come scrivibile, ad es TEXMFVAR=/run/user/$(id -u)
. Per Flatpaks sarebbe ragionevole impostarli sul valore (non sugli host!) $XDG_CACHE_HOME
, Ad esempio ~/.var/app/com.visualstudio.code/cache/texmf-var
quando si utilizza l'SDK all'interno di VS Code.
Anche la semplice impostazione TEXMFCACHE
risolverebbe il luaotfload
problema. Tuttavia, se devi generare tfm
o pk
caratteri al volo, sbatterai di nuovo contro un muro, perché questo richiede l'accesso in scrittura a TEXMFVAR
.