LuaLaTeXはFlatpakTeXLiveで出力を生成しません
私は現在、Linux FlatpaksでTeXLiveを使用できるようにすることに取り組んでいますが、LuaLaTeXは「サイレントに」失敗し、何が間違っているのか、どこから始めればよいのかわかりません。出力と症状は、Lualatexが出力を生成しない(MiKTeX)と同じですが、UCS / ANSIエンコーディング$HOME
を使用するWindowsを使用しておらず、ファイルや非ASCIIパスを使用しておらず、MikTeXを使用していません。
リンクされた質問のmweを再利用しています:
コンパイル
abc \bye
でluatex
動作しますが、私はOTFパッケージをロードする場合:
\input luaotfload.sty
abc \bye
私は得る:
$ 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)
出力/ログの最後の行に、エンジンのクラッシュ(?)を示す可能性のある改行がないことに注意してください。
さらに、luaotfload-tool -u
最高の冗長性で実行しても、出力はまったく得られません。ただし、その価値については、ConTeXt MkIV(つまり、バックエンドとしてLuaTeXを使用)は正常に機能します。
私の最初の仮定は、FlatpakがTeXLive 2020のDVDリリースに基づいており(luaotfloadの2つのマイナーリリースを含む)、更新がないというものでした。私は現在、FlatpakでTeXLiveの最近のスナップショットを毎日使用できるように取り組んでいます(https://github.com/flathub/org.freedesktop.Sdk.Extension.texlive/pull/28)、ただし、これによって上記の動作は変更されませんでした(Flatpakでluaotfload 3.14を実際に実行していることを確認しました)。
再現する手順:
フラットハブリモートとディストリビューションを構成して、パスにフラットパックが含まれるようにしてから、TeXLiveをインストールします。
$ flatpak install org.freedesktop.Sdk.Extension.texlive
サンドボックス内でシェルを実行し、TeXLiveSDKをPATHに配置します。
$ flatpak run --command=/usr/bin/sh --devel org.freedesktop.Sdk [ org.freedesktop.Sdk ~ ]$ source /usr/lib/sdk/texlive/enable.sh
MWEを作成し、ビルドします。
[ org.freedesktop.Sdk ~ ]$ cat > mwe.tex \input luaotfload.sty abc \bye [ org.freedesktop.Sdk ~ ]$ luatex mwe.tex
回答
最近、Nixを使用してTeXドキュメントを作成しようとしたときに、同じ問題に直面していました。いくつかのデバッグの後、根本的な問題はTEXMFCACHE
書き込み可能ではないことであることがわかりました。texmf.cnf
調べてみると、デフォルト値は
[📦 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
Flatpakの場合、Flatpak./install-tl -portable
のパッケージ化プロセスの一部としてオプションによってオーバーライドされるものがあります。
[📦 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
だから、もともとTEXMFCACHE
の用語で定義されているTEXMFSYSVAR
とTEXMFVAR
。最初のものは、TEXMFSYSVAR
通常、ほとんどのシステムで書き込み可能ではないが、後者は、TEXMFVAR
常に書き込み可能であると仮定されます。もちろん、Nixのように、すべてがシステムの読み取り専用オーバーレイとしてマウントされている場合、この仮定は失敗します。
Flatpakでは問題は同じではありませんが、関連する、としてTEXMFVAR
も、これとTEXMFCACHE
ポイントTEXMFSYSVAR
のみ(による-portable
オプション)。このディレクトリは読み取り専用であるため、これも失敗します。
幸いtexmf.cnf
、同じ名前の環境変数を設定するだけで、の値をオーバーライドできます。たとえば、
$ flatpak run --env=TEXMFVAR=/tmp --command=/usr/bin/sh --devel org.freedesktop.Sdk
ここで私はを選択しましたがTEXMFVAR=/tmp
、書き込み可能であることが保証されている他のディレクトリも同様に機能しますTEXMFVAR=/run/user/$(id -u)
。Flatpaksの$XDG_CACHE_HOME
場合、たとえば~/.var/app/com.visualstudio.code/cache/texmf-var
VS Code内でSDKを使用する場合など、Flatpaksを(ホストではなく)値に設定するのが妥当です。
設定TEXMFCACHE
するだけでもluaotfload
問題は解決します。あなたが生成する必要がある場合は、tfm
またはpk
上のフォントこれはへの書き込みアクセスを必要とするため、あなたは再び壁にヒットします飛びますTEXMFVAR
。