0033 — AsciiDoc в Debian Bookworm
Введение
В Debian Bookworm добавили несколько пакетов для поддержки AsciiDoc:
Пакет | Версия |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В использовании этих пакетов вижу проблему: они привязаны к версии Debian и не будут обновляться. Ну разве что там выявят проблемы безопасности. Такова политика релизов Debian. По этой причине целесообразно установить Ruby, но без пакетов AsciiDoc.
Установка Ruby
Удалите пакеты Debian, если они установлены:
sudo apt purge \ asciidoc \ asciidoc-base \ asciidoc-common \ asciidoc-dblatex \ asciidoc-fop \ asciidoc-tests \ asciidoctor
Обновите кеш APT:
sudo apt update
Установите Ruby, его зависимости, инструменты сборки (нужны для нативной сборки некоторых библиотек) и заголовочные файлы:
sudo apt install \ build-essential \ libedit-dev \ libffi-dev \ libssl-dev \ libyaml-dev \ ruby-dev \ ruby-full
Установите Bundler:
sudo gem install bundler
Настройка Bundler
Настройте ваш проект на работу с Bundler:
Если в корневом каталоге проекта уже есть
Gemfile
, переместите его куда-нибудь в другое место, иначе не получится инициализировать Bundler.В корневом каталоге проекта выполните команду инициализации:
bundle init
Заполните созданный
Gemfile
, например:# frozen_string_literal: true source 'https://rubygems.org' gem 'asciidoctor' gem 'asciidoctor-pdf' gem 'pygments.rb'
Настройте Bundler:
Выберите режим работы в Production:
bundle config set deployment false
Укажите путь к каталогу для хранения гемов. По умолчанию они хранятся в одном из подкаталогов домашнего каталога, но мне больше нравится, когда они хранятся в каталоге проекта:
bundle config set path .bundle/gems
Установите гемы:
bundle install
Сборка
Для сборки проекта вызовите команду asciidoctor
или asciidoctor-pdf
, но не напрямую, а с помощью Bundler:
bundle exec asciidoctor-pdf <параметры>
Я использую Makefile
такого вида:
CC = bundle exec asciidoctor-pdf \
--attribute pdf-fontsdir="src/fonts/;GEM_FONTS_DIR" \
--attribute pdf-theme=white \
--attribute pdf-themesdir=src/themes/ \
--backend pdf \
--destination-dir=./build/ \
--failure-level "INFO" \
--source-dir=./src/ \
--verbose \
--warnings
BOOK = gnu-emacs-for-technical-writers
DATE = $(shell date +%Y-%m-%d)
build-pdf:
${CC} --out-file="${BOOK}" ./src/index.adoc
white: $(theme)
${CC} --out-file="$(BOOK)-$(DATE).pdf" ./src/index.adoc
monokai:
${CC} --attribute pdf-theme=monokai --out-file="$(BOOK)-$(DATE)-monokai.pdf" ./src/index.adoc
.PHONY: clean
clean:
rm build/*.*
Обновление
Выполнять обновление можно только если у вас не-продуктовое окружение (значение упомянутого выше параметра production
равно false
).
Чтобы обновить гемы, выполните в каталоге проекта команду:
bundle update