Гид по технологиям

Сборка Brotli из исходников на Debian 9 (stretch)

• 4 min read • Инструкции • Обновлено 25 Nov 2025
Сборка Brotli на Debian 9 — руководство
Сборка Brotli на Debian 9 — руководство

Изображение логотипа Brotli или схема алгоритма сжатия

Что такое Brotli

Brotli — универсальный безпотерьный алгоритм сжатия. Комбинирует усовершенствованный вариант LZ77, кодирование Хаффмана и контекстное моделирование второго порядка. Дает плотное сжатие, сопоставимое с лучшими общими методами. По скорости похож на deflate и обычно сжимает плотнее. Проект открыт под MIT License. Формат данных описан в RFC 7932.

Важно: Brotli чаще используют для сжатия HTTP-контента (передача по сети) и для упаковки статических артефактов.

Требования

  • Система Debian 9 (stretch).
  • Непривилегированный пользователь с доступом sudo.
  • Минимум 1 ГБ свободной оперативной памяти и 200 МБ свободного места на диске для процесса сборки.

Быстрая проверка версии Debian

Откройте терминал и выполните:

lsb_release -ds
# Debian GNU/Linux 9.6 (stretch)

Если вывод другой, скорректируйте инструкцию под вашу версию Debian.

Настройка времени и обновление системы

Установите часовой пояс и обновите пакеты:

sudo dpkg-reconfigure tzdata

sudo apt update && sudo apt upgrade -y

Установка инструментов сборки

Установите базовые пакеты для компиляции:

sudo apt install -y build-essential gcc make bc sed autoconf automake libtool git apt-transport-https tree

Пояснение: build-essential включает компилятор и базовые библиотеки, autoconf/automake/libtool нужны для генерации скриптов конфигурации.

Скачивание исходников

Склонируйте репозиторий Brotli с GitHub:

git clone https://github.com/google/brotli.git

Перейдите в каталог исходников:

cd brotli

Установка страницы man

Чтобы установить локальную man-страницу утилиты brotli, выполните:

sudo cp ~/brotli/docs/brotli.1 /usr/share/man/man1 && sudo gzip /usr/share/man/man1/brotli.1

Проверьте страницу:

man brotli

Примечание: путь ~/brotli указан как пример. Если вы клонировали репозиторий в другую директорию, скорректируйте путь.

Генерация скрипта configure

Перед стандартными шагами autotools сгенерируйте файл configure:

./bootstrap

После этого станут доступны привычные шаги: configure, make и make install.

Для помощи используйте:

./configure --help

Сборка и установка

Запустите сборку и установку с практичными путями установки:

./configure --prefix=/usr \
            --bindir=/usr/bin \
            --sbindir=/usr/sbin \
            --libexecdir=/usr/lib/brotli \
            --libdir=/usr/lib/brotli \
            --datarootdir=/usr/share \
            --mandir=/usr/share/man/man1 \
            --docdir=/usr/share/doc

make
sudo make install

Замечание: в JSON и в коде обратные слеши экранированы по причинам формата. В командной строке используйте одинарные обратные слеши для переноса строк.

Проверка установки

После успешной установки посмотрите версию и справку:

brotli --version
# brotli 1.0.7

brotli -h

Частые проблемы и способы решения

  • Ошибка: “configure: command not found” — скорее всего пропущен шаг ./bootstrap или не установлены autoconf/automake/libtool.
  • Ошибка компиляции при make — проверьте версии gcc и наличие build-essential. Посмотрите make output и установите недостающие dev-пакеты.
  • Права доступа при install — используйте sudo для make install или установите префикс в домашнюю директорию.

Совет: используйте чистую среду (контейнер или chroot) для минимизации влияния локальных библиотек.

Критерии приёмки

  • Команды brotli и brotli –version работают без ошибок.
  • man brotli открывается и содержит краткую справку.
  • Библиотеки установлены в указанные каталоги (проверьте /usr/lib/brotli).
  • По результатам тестового сжатия файлы корректно восстанавливаются при распаковке.

Тесты приемки

  1. Создайте тестовый файл:
echo "Тестовая строка для Brotli" > test.txt
  1. Сожмите и распакуйте:
brotli test.txt
brotli --decompress test.txt.br
cat test.txt

Ожидается: вывод содержит исходную строку.

Ментальная модель и когда Brotli не подходит

Ментальная модель: Brotli — это комбинация словарного сжатия (LZ-префиксы) и статистического кодирования (Хаффман), усиленная контекстным моделированием. Он лучше подходит для текстовых данных и HTTP-контента. Для уже сжатых данных (например, JPEG/MP3/ZIP) дополнительное сжатие малоэффективно.

Когда не применять:

  • Если нужно максимально быстрое сжатие/распаковка и небольшая компрессия, рассмотрите zstd на низком уровне компрессии.
  • Для стриминговых сценариев с небольшим буфером Brotli может требовать больше памяти при высоком уровне сжатия.

Альтернативные подходы

  • zstd — очень быстрая и универсальная альтернатива с хорошим соотношением скорость/сжатие.
  • gzip/deflate — стандарты для совместимости, быстрее при низких уровнях сжатия.
  • xz (LZMA) — лучшее сжатие в некоторых случаях, но медленнее и требовательнее к памяти.

Выбор зависит от компромисса скорость ↔ плотность ↔ использование памяти.

Фактбокс с ключевыми числами

  • Формат: RFC 7932
  • Лицензия: MIT
  • Тип: безпотерьный алгоритм
  • Сфера: сжатие HTTP и статических файлов
  • Обычные версии: brotli 1.x

Ролевые чек-листы

Developer:

  • Убедиться, что исходники клонированы и сборка проходит локально.
  • Написать тесты сжатия/распаковки.

DevOps/Системный администратор:

  • Проверить пути установки и права доступа.
  • Настроить CI для сборки пакета или создание .deb.

QA:

  • Прогнать тесты совместимости с клиентами.
  • Проверить поведение при ошибочных входных данных.

Совместимость и миграция

  • Brotli широко поддерживается современными браузерами для HTTP Content-Encoding.
  • При миграции с gzip/deflate проверьте поддержку у целевых клиентов. Оставьте fallback на gzip, если не уверены.

Безопасность и приватность

Brotli — алгоритм сжатия; он не шифрует данные. Для защиты конфиденциальности используйте TLS при передаче сжатого контента. При сжатии данных с персональной информацией следите за политиками хранения и удаления данных.

Сопутствующие ссылки

Краткое резюме

Brotli — эффективный вариант общего сжатия, легко собирается на Debian 9. Следуйте шагам: установите инструменты, склонируйте репозиторий, выполните ./bootstrap, затем configure, make и sudo make install. Проверьте рабочие сценарии с тестовыми файлами.

Важно: при установке в продакшн продумайте поддержку fallback и тесты совместимости.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро