lualatex не работает под www-data

lualatex не работает под www-data

мы используем lualatexдля создания некоторых автоматически генерируемых документов на нашем веб-сервере.

У нас есть сервер на базе Ubuntu 18.04, на котором Nginx работает как веб-сервер. Nginx работает не как root, а как другой пользователь www-data. На некоторых сайтах есть скрипт, который генерирует файл LaTeX. Этот файл LaTeX компилируется без ошибок, если его вызвать вручную как пользователя rootс lualatex filename.tex. Поэтому я осмелюсь сказать, что все необходимые классы, стили и т. д. доступны.

Если тот же файл запустить от имени пользователя www-dataс использованием той же идентичной команды, он остановится почти сразу после загрузки входного файла LaTeX и вызова LaTeX2e.

По иронии судьбы, lualatexотправляет возвращаемое значение 0, т.е. никакой ошибки. Сгенерирован только файл журнала, который состоит из 12 строк. Даже файл журнала не содержит никаких ошибок или дальнейших подсказок, почему lualatexне удалось. Вот указанный файл журнала:

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

Есть ли у кого-нибудь подсказки, что сделать, чтобы lualatexзапустить этот веб-сервер (с ограниченными правами пользователя www-data)?

решение1

Как предположил daleif, luaotfload не может найти подходящий каталог для своих кэшей, поскольку в пользовательском каталоге нет доступного для записи каталога texmf-var ẁww-data. Но вы можете помочь lualatex: Вместо того, чтобы запускать

lualatex <your options> filename.tex

вы можете использовать

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

где /tmpможет быть любой каталог, в который пользователь www-dataможет записывать данные.

Как предположил Ульрике Фишер в чате, это может быть лишь признаком более серьезной проблемы: вам действительно следует добавить какой-то путь для записи в TEXMFVAR. Поэтому лучшим решением будет создать какой-то каталог (я буду использовать /some/dir/for/www-data), для которого www-dataесть права на запись, а затем установить переменную окружения TEXMFVARв значение /some/dir/for/www-data:перед выполнением lualatex. Как это сделать, зависит от вашего конкретного вызова , lualatexпоскольку www-data, вероятно, у него даже нет оболочки.

Связанный контент