![lualatex не работает под www-data](https://rvso.com/image/392343/lualatex%20%D0%BD%D0%B5%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82%20%D0%BF%D0%BE%D0%B4%20www-data.png)
мы используем 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
, вероятно, у него даже нет оболочки.