Сборка Brotli из исходников на Fedora 29

Краткий обзор
Brotli — алгоритм безпотерьного сжатия общего назначения, сочетающий модернизированный вариант LZ77, кодирование Хаффмана и моделирование контекста 2-го порядка. Часто даёт плотнее сжатие по сравнению с deflate при сопоставимой скорости. Проект открытый (MIT), спецификация формата описана в RFC 7932.
Важно: в этом руководстве целевая система — Fedora 29. На других версиях Fedora или дистрибутивах могут потребоваться незначительные изменения путей и пакетов.
Что нужно
- Система Fedora 29.
- Непривилегированный пользователь с sudo-доступом.
Быстрая проверка системы
Проверьте версию Fedora:
cat /etc/fedora-release
# Fedora release 29 (Twenty Nine)Настройка временной зоны (опционально, если требуется):
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'Обновите пакеты операционной системы:
sudo dnf check-update; sudo dnf update -yПеред сборкой: установка инструментов
Установите базовые инструменты для сборки:
sudo dnf install -y wget gcc make bc sed autoconf automake libtool git treeЧеклист перед началом сборки:
- Доступ в интернет для клонирования репозитория.
- Достаточно места на диске для исходников и сборки.
- Наличие sudo.
Клонирование исходников и просмотр документации
Клонируйте репозиторий Brotli:
git clone https://github.com/google/brotli.gitПерейдите в каталог с исходниками:
cd brotliСоздайте страницу man для команды brotli (копирование из каталога с исходниками в системный каталог man):
sudo cp ~/brotli/docs/brotli.1 /usr/share/man/man1 && sudo gzip /usr/share/man/man1/brotli.1Проверьте страницу справки man:
man brotliГенерация конфигурационных скриптов Autotools
Чтобы получить скрипт configure, выполните:
./bootstrapПосле этого будут доступны привычные этапы сборки для C-программ: configure, make и make install.
Для справки можно запустить:
./configure --helpСборка и установка Brotli
Ниже приведены базовые команды для конфигурации, сборки и установки Brotli в системные каталоги Fedora 29:
./configure --prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--libexecdir=/usr/lib64/brotli \
--libdir=/usr/lib64/brotli \
--datarootdir=/usr/share \
--mandir=/usr/share/man/man1 \
--docdir=/usr/share/doc
make
sudo make installПосле успешной сборки проверьте версию:
brotli --version
# brotli 1.0.7Или получите краткую справку по ключам:
brotli -hКритерии приёмки
Перед считать сборку успешной, выполните все пункты:
- Команда
brotli --versionвозвращает ожидаемую версию. man brotliпоказывает страницу справки.- Установленные бинарники находятся в /usr/bin, библиотеки в /usr/lib64/brotli по указанной конфигурации.
- Тестовая компрессия/распаковка работает:
echo hello | brotli | brotli -d.
Советы по отладке
- Если
./bootstrapзавершился с ошибкой, проверьте, установлены ли autoconf/automake/libtool. - Если
make installне копирует файлы в указанные каталоги, повторно проверьте опцию--prefixи переменные среды (например, DESTDIR для пакетизации). - На системах с другой архитектурой или иерархией каталогов (например, /usr/lib вместо /usr/lib64) измените
--libdirи--libexecdirсоответствующе.
Важно: Fedora 29 — устаревшая ветка. Для современных Fedora используйте аналогичные шаги, но учитывайте возможные изменения путей и пакетов.
Альтернативные подходы и когда Brotli не подходит
- Если вам нужна максимально быстрая компрессия/распаковка для локальных резервных копий, рассмотрите zstd: он часто быстрее на распаковке и даёт хорошее соотношение скорость/сжатие.
- Для обратной совместимости с древними системами без поддержки Brotli на стороне клиента предпочтительнее gzip/deflate.
- Для потоковой компрессии в реальном времени с малыми задержками выбирайте алгоритмы, оптимизированные под скорость, а не плотность сжатия.
Факты и краткие ориентиры
- Лицензия: MIT.
- Спецификация формата: RFC 7932.
- Примерная версия в этом руководстве: 1.0.7.
- Аналог по скорости: deflate; по плотности: обычно превосходит deflate.
Чеклист оператора перед деплоем
- Обновить систему и установить все зависимости.
- Собрать в тестовом контейнере/виртуальной машине перед установкой в продакшен.
- Проверить интеграцию с web-сервером (если используется для сжатия трафика).
Краткое резюме
Вы собрали Brotli из исходников на Fedora 29: подготовили окружение, сгенерировали конфигурацию, выполнили сборку и установку, проверили работоспособность. Для других дистрибутивов или более новых версий Fedora может потребоваться корректировка путей и пакетов.