lualatex no se ejecuta bajo www-data

lualatex no se ejecuta bajo www-data

Estamos utilizando lualatexpara producir algunos documentos generados automáticamente en nuestro servidor web.

Tenemos un servidor basado en Ubuntu 18.04, en el que Nginx se ejecuta como servidor web. Nginx no se ejecuta como root, sino como un usuario diferente www-data. En algunos sitios web hay un script que genera un archivo LaTeX. Este archivo LaTeX se compila sin errores, si se llama manualmente como usuario rootcon lualatex filename.tex. Por lo tanto, me atrevo a decir que todas las clases, estilos y demás necesarios están disponibles.

Si se ejecuta el mismo archivo como usuario www-data, usando el mismo comando idéntico, se detiene casi inmediatamente después de cargar el archivo de entrada LaTeX y llamar a LaTeX2e.

Irónicamente, lualatexenvía un valor de retorno de 0, es decir, sin error. Solo se genera un archivo de registro, que tiene 12 líneas de largo. Incluso el archivo de registro no contiene errores ni más sugerencias, ¿por qué lualatexno tuvo éxito? Este es dicho archivo de registro:

This is LuaTeX, Version 1.07.0 (TeX Live 2019/dev/Debian)  (format=lualatex 2019.3.12)  12 MAR 2019 16:53
 restricted system commands enabled.
**04-201901.tex
(./04-201901.tex
LaTeX2e <2018-12-01>
Lua module: luaotfload-main 2019-02-14 2.96 luaotfload entry point
Lua module: luaotfload-init 2019-02-14 2.96 luaotfload submodule / initializatio
n
Lua module: lualibs 2019-02-14 2.64 ConTeXt Lua standard libraries.
Lua module: lualibs-extended 2019-02-14 2.64 ConTeXt Lua libraries -- extended c
ollection.
Lua module: luaotfload-log 2019-02-14 2.96 luaotfload submodule / logging

¿Alguien tiene alguna sugerencia sobre qué hacer para lualatexejecutar este servidor web (con derechos restringidos como usuario www-data)?

Respuesta1

Como lo sugiere daleif, luaotfload no puede encontrar un directorio adecuado para sus cachés porque no hay un directorio texmf-var grabable en el directorio de usuario de ẁww-data. Pero tú puedes ayudar lualatex: en lugar de correr

lualatex <your options> filename.tex

puedes usar

TEXMFCACHE=:/tmp/ lualatex <your options> filename.tex

donde /tmppuede estar cualquier directorio www-dataen el que el usuario pueda escribir.

Como sugirió Ulrike Fischer en el chat, esto podría ser solo un indicador de un problema mayor: realmente deberías agregar alguna ruta de escritura a TEXMFVAR. Entonces, una mejor solución sería crear algún directorio (usaré /some/dir/for/www-data), para el cual www-datatenga permisos de escritura y luego configurar la variable de entorno TEXMFVARantes /some/dir/for/www-data:de ejecutar lualatex. Cómo hacer esto depende de su invocación específica lualatexporque www-dataprobablemente ni siquiera tenga un shell.

información relacionada