Сборка библиотеки Brotli из исходников на CentOS 7

Brotli — универсальный безпотерьный алгоритм сжатия, использующий модифицированный LZ77, кодирование Хаффмана и контекстное моделирование второго порядка. Предоставляет плотное сжатие, сопоставимое с лучшими общими методами, сопоставим по скорости с deflate и распространяется под лицензией MIT. Спецификация формата описана в RFC 7932. В этом руководстве показано, как собрать библиотеку Brotli из исходников на системе CentOS 7.
Требования
- Система CentOS 7.
- Пользователь с sudo-доступом (не root).
Шаги перед сборкой
Проверьте версию CentOS:
cat /etc/centos-release
# CentOS Linux release 7.6.1810 (Core)Настройте часовой пояс (замените ‘Region/City’ на нужный вам регион):
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'Обновите пакеты системы:
sudo yum update -yВажно: на CentOS 7 стандартный набор компиляторов может быть старее современных требований к сборке некоторых проектов. Если сборка не проходит из-за версии gcc, рассмотрите установку devtoolset (см. раздел «Альтернативные подходы»).
Установка инструментов сборки
Установите необходимые пакеты для сборки Brotli:
sudo yum install -y wget gcc make bc sed autoconf automake libtool git treeКлонируйте репозиторий Brotli:
git clone https://github.com/google/brotli.gitПерейдите в директорию исходников:
cd brotliСоздайте страницу справки (man) для команды brotli:
sudo cp ~/brotli/docs/brotli.1 /usr/share/man/man1 && sudo gzip /usr/share/man/man1/brotli.1Проверьте man-страницу:
man brotliГенерация скрипта configure и сборка
Чтобы сгенерировать Autotools configure, выполните:
./bootstrapПосле успешного выполнения будут доступны стандартные шаги: ./configure, make, make install.
Базовые команды сборки и установки:
./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открывает man-страницу. - Упаковка и распаковка тестового файла:
echo "test" > test.txt
brotli test.txt
brotli -d test.txt.brЕсли при распаковке получен исходный файл, установка прошла успешно.
Распространённые ошибки и пути решения
Важно: перечисленные проблемы — самые частые при сборке ПО из исходников на старых дистрибутивах.
- Ошибка при запуске
./bootstrapили./configure: убедитесь, что установлены autoconf, automake и libtool. - Ошибки компиляции, связанные с современными возможностями C/C++: на CentOS 7 может потребоваться более свежий gcc — рассмотрите установку devtoolset (Software Collections) или сборку с использованием контейнера с новой средой.
- Проблемы с правами: запуск
make installтребует sudo; проверьте SELinux или политики доступа, если файлы не попадают в ожидаемые директории.
Альтернативные подходы
- Установка из пакета: в некоторых репозиториях EPEL или сторонних сборках могут быть готовые RPM для Brotli — быстрее, но не всегда самая свежая версия.
- Использование контейнера: собрать внутри CentOS 8/9 или Ubuntu-контейнера, затем вынести бинарники.
- Компиляция с помощью CMake (если поддерживается исходниками) — даёт дополнительный контроль над опциями.
Контроль качества и тесты
Минимальные тесты после установки:
- Версия и man-страница (см. «Критерии приёмки»).
- Сжатие/распаковка случайного файла размера от 1 КБ до 1 МБ и проверка целостности.
- Интеграционный тест: если Brotli используется в веб-сервере, проверить корректность передачи заголовков Content-Encoding и распаковки в браузере.
Роли и чеклист
Для системного администратора:
- Проверить доступность обновлений и зависимостей.
- Контролировать права и SELinux.
Для разработчика:
- Собрать библиотеку с нужными флагами оптимизации.
- Протестировать совместимость с целевой средой выполнения.
Для сборщика пакетов:
- Упаковать результат в RPM с корректными путями и зависимостями.
Короткая диаграмма принятия решения
flowchart TD
A[Нужна последняя версия Brotli?] -->|Да| B[Сборка из исходников]
A -->|Нет| C[Искать RPM в репозиториях]
B --> D{Есть проблемы со сборкой}
D -->|Да| E[Использовать контейнер/обновить gcc]
D -->|Нет| F[Установить и тестировать]Ссылки и ресурсы
Краткое резюме: следуйте шагам установки инструментов, выполните ./bootstrap, затем стандартную цепочку ./configure && make && sudo make install. При проблемах проверьте версии инструментов сборки и используйте контейнер или devtoolset для спокойной сборки на CentOS 7.
Важно: если вам нужно поддерживать пакет в репозитории и обеспечивать автоматические сборки, оформите RPM и добавьте тесты интеграции для CI.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента