Не работает clean на ubuntu 18.04
Closed this issue · 11 comments
С пакетом texlive-full версии 2017.20180305-1, который входит в актуальную поставку Ubuntu 18.04, у latexmk недоступна опция -pdfxe.
В результате clean на последнем мастере ругается и операция не проходит:
make clean
Subroutine cleanup1 redefined at (eval 9) line 373, <GEN0> chunk 1.
Use of uninitialized value $xelatex_default_switches in string eq at (eval 9) line 54, <GEN0> chunk 1.
Latexmk: -pdfxe bad option
Latexmk: Bad options specified
Use
latexmk -help
to get usage information
Makefile:122: recipe for target 'clean-target' failed
make[1]: *** [clean-target] Error 10
Makefile:130: recipe for target 'clean' failed
make: *** [clean] Error 2
Предлагаю автоматически определять, доступна ли опция -pdfxe, и при недоступности использовать опцию -xelatex.
В качестве решения проблемы предлагаю Вам в файле usercfg.mk
добавить строку BACKEND ?= -xelatex
.
Как именно Вы предлагаете определять наличие опции -pdfxe
? По номеру версии?
Ну да, опция появилась с версии 4.52b. http://personal.psu.edu/jcc8/software/latexmk/versions.html
Можно как-то так извлечь номер версии
latexmk --version | grep -oP '(?<=Version\s)[0-9a-z\.]+'
и, если версия более старая, "проваливаться" в -xelatex.
Беда в том, что в Makefile
нельзя опираться на стандартные команды unix #240.
Подтверждаю наличие проблемы на полностью обновленной Ubuntu 18.04.2 LTS.
На 16.04.6 LTS даже добавление в систему известного ppa:jonathonf/texlive-2018
не помогает поскольку будет все равно использоваться старый системный latexmk
без опции -pdfxe
.
А на 18.04 LTS с ppa:jonathonf/texlive-2019
будет тоже самое, поскольку в обеих версиях используется старый 4.41 (по вашему мнению) latexmk
.
Не поймите меня не правильно, это конструктивная критика.
Ваш проект очень полезный и нужный. Видно, что проделана огромная работа.
Но есть одно "но".
Не могли бы вы четко в readme написать какие версии TeXLive и latexmk
вы используете при работе над проектом (и под какой версией операционной системы)?
И не гнаться при этом за самыми новыми версиями!
В академической среде сейчас многие работают под Ubuntu LTS и Debian.
Сейчас получается, что проект нормально собирается только под Ubuntu 19.04, основанной на Debian 10 Buster и имеющей 9 месяцев поддержки.
При этом многие используют поддерживаемую в течение 5 лет Ubuntu 16.04 LTS и до выхода 20.04 LTS не будут спешить обновляться.
Очень не хочется ставить виртуальную машину ради нового дистрибутива TeXLive и latexmk
только из-за вашей прихоти.
Вариант с Docker почти работоспособный, но нужно ставить шрифты дополнительно и там не запускается TexStudio в нужной нам в сложившихся обстоятельствах версии Debian Buster.
Постарайтесь, пожалуйста снизить требования к TeXLive, latexmk
и других требуемых для сборки компонентов до приемлемого уровня LTS дистрибутивов GNU/Linux.
Готов помочь в тестировании.
--
С уважением,
к.т.н. N0rbert.
П.С. Написанное выше также касается и #214 c biblatex
и biber
. Тут тоже не нужно гнаться за новейшими версиями.
Использование LTS версий звучит разумно. Использование же docker контейнеров считаю необходимым.
Например, собрав образ из следующего Dockerfile
:
FROM debian:buster AS base
WORKDIR /data
VOLUME /data
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
RUN apt-get update -q && \
DEBIAN_FRONTEND=noninteractive apt-get install -qy make texlive-xetex \
texlive-generic-extra texlive-lang-cyrillic fonts-liberation latexmk biber && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
fc-cache -f -v
FROM base
USER 1000:1000
ENTRYPOINT ["make"]
можно запускать сборку почти с тем-же синтаксисом, что и Make
:
docker run --rm -v $(pwd):/data diser:debian-buster dissertation-preformat BACKEND=-pdfxe
Как минимум, таким образом можно будет проверить актуальность рекомендуемых к установке пакетов. А вообще, такой способ сборки можно было бы сделать рекомендуемым, т.к. при этом есть гарантия работы шаблона на всех машинах, где запускается docker.
такой способ сборки можно было бы сделать рекомендуемым
Рекомендуемым вообще — нет, а вот пользователям LTS линуксов — да, если считают, что им поможет. Я бы всё же посоветовал не ставить texlive из линуксовых репозиториев, а воспользоваться инструкцией по установке vanilla texlive со stackexchange или официального сайта texlive.
Не Линуксами и докерами едиными живут люди вообще и аспиранты в частности (ну и да здравствуют форки)!
Документирование советов по запуску/автоматизации на готовых образах docker или на создаваемых из персонального Dockerfile (как дополнительный функционал) — приветствуется.
Я бы всё же посоветовал не ставить texlive из линуксовых репозиториев, а воспользоваться инструкцией по установке vanilla texlive со stackexchange или официального сайта texlive.
Это крайняя мера не для начинающих пользователей и плохой Windows-way подход.
Но за equivs
спасибо, не знал про него.
Документирование советов по запуску/автоматизации на готовых образах docker или на создаваемых из персонального Dockerfile (как дополнительный функционал) — приветствуется.
В нынешнем виде использование Docker будет не дополнительной функциональностью, а основной и единственной работоспобной для LTS версий, поскольку, похоже, не удается порекомендовать авторам проекта снизить требования к номерам версий основных компонентов TeXLive.
@seregaxvm
Использование же docker контейнеров считаю необходимым.
В результате этого обсуждения я пришел к такому же выводу. Благодарю за первый набросок решения.
Ниже следует инструкция, воспроизводимость которой я проверил на Ubuntu 16.04 LTS.
Добавил установку пакета со шрифтами Microsoft.
В качестве бонуса добавил установку TeXStudio, он теперь работает (!), но почему-то не делает список литературы при заявленном списке пакетов.
Написал короткий скрипт-обертку для запуска команд в контейнере, но он пока далек от того что сделано в dockertexstudio.sh
.
Чтобы не плодить сущности попросил мейнтейнера контейнеров DockerTex добавить шрифты Microsoft в контейнер и написал ему как заставить работать TexStudio из его контейнера. Так что скоро, надеюсь, можно будет использовать его собранный контейнер.
Обновление от 20190730 - инструкция для создания собственного контейнера на практике оказалась слишком сложной, но доступна в прошлой версии этого комментария.
При использовании Docker наиболее простым вариантом видится все-таки использование готового контейнера.
Обновление от 20190730 - инструкция для модификации контейнеров DockerTex включена в документацию проекта и представлена в виде файлов Dockerfile
(модификация контейнера) и install-dockertex.sh
(скрипт автоматизированной установки). Исходный вариант инструкции доступен в прошлой версии этого комментария.