lualatex não roda quando está em www-data

lualatex não roda quando está em www-data

estamos usando lualatexpara produzir alguns documentos gerados automaticamente em nosso servidor web.

Temos um servidor baseado no Ubuntu 18.04, no qual o Nginx é executado como servidor web. O Nginx não funciona como root, mas como um usuário diferente www-data. Em alguns sites existe um script que gera um arquivo LaTeX. Este arquivo LaTeX compila sem erros, se for chamado manualmente como usuário rootcom lualatex filename.tex. Portanto, atrevo-me a dizer que todas as classes, estilos e outros itens necessários estão disponíveis.

Se o mesmo arquivo for executado como user www-data, usando o mesmo comando idêntico, ele para quase imediatamente após carregar o arquivo de entrada LaTeX e chamar o LaTeX2e.

Ironicamente, lualatexenvia um valor de retorno de 0, ou seja, sem erro. Há apenas um arquivo de log gerado, com 12 linhas. Mesmo o arquivo de log não contém erros ou outras dicas sobre o motivo lualatexdo fracasso. Este é o referido arquivo de log:

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

Alguém tem alguma dica sobre o que fazer para lualatexrodar neste servidor web (com direitos restritos como usuário www-data)?

Responder1

Conforme sugerido por daleif, luaotfload não consegue encontrar um diretório adequado para seus caches porque não há diretório texmf-var gravável no diretório do usuário de ẁww-data. Mas você pode ajudar lualatex: em vez de correr

lualatex <your options> filename.tex

você pode usar

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

onde /tmppode ser qualquer diretório no qual o usuário www-datapossa gravar.

Conforme sugerido por Ulrike Fischer no bate-papo, isso pode ser apenas um indicador de um problema maior: você realmente deveria adicionar algum caminho gravável para TEXMFVAR. Portanto, uma solução melhor seria criar algum diretório (vou usar /some/dir/for/www-data), para o qual www-datatenha permissões de gravação e, em seguida, definir a variável de ambiente TEXMFVARcomo /some/dir/for/www-data:antes de executar lualatex. Como fazer isso depende da sua invocação específica, lualatexporque www-dataprovavelmente nem tem shell.

informação relacionada