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

Как пересобрать пакет из исходников в Debian/Ubuntu

• 5 min read • Linux • Обновлено 23 Nov 2025
Сборка пакета из исходников в Debian/Ubuntu
Сборка пакета из исходников в Debian/Ubuntu

Rebuild Package Featured

Несмотря на то, что Linux известен своей открытостью, одной из ключевых причин популярности является возможность глубокой кастомизации: вы можете изменять конфигурации и исходные файлы под свои нужды. Пересборка пакета из исходников — стандартный инструмент для кастомизации, отладки и применения локальных исправлений.

В этой статье пошагово описан процесс пересборки пакета в Debian/Ubuntu-подобных системах: от включения исходных репозиториев до установки полученного .deb.

Что вы получите

  • Понимание базового процесса пересборки пакета.
  • Рабочие команды для скачивания, установки зависимостей, правок и сборки.
  • Практические советы по безопасности и тестированию.

1. Включите исходные репозитории

Прежде чем пересобирать пакет, нужно включить исходные (source) репозитории в вашей системе. Это позволит apt скачивать исходные пакеты, а не только бинарные.

В Debian/Ubuntu отредактируйте файл /etc/apt/sources.list и добавьте или раскомментируйте строки с deb-src. Пример для Debian buster:

deb http://deb.debian.org/debian buster main
deb-src http://deb.debian.org/debian buster main
deb http://deb.debian.org/debian-security/ buster/updates main
deb-src http://deb.debian.org/debian-security/ buster/updates main
deb http://deb.debian.org/debian buster-updates main
deb-src http://deb.debian.org/debian buster-updates main

deb-src указывает пакетному менеджеру, что нужно возвращать исходные архивы.

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

sudo apt-get update

Важно: в современных системах можно также использовать команду apt вместо apt-get (например, sudo apt update), но приведённые ниже примеры используют apt-get/apt по контексту.

2. Скачайте исходный пакет

Создайте рабочую директорию и скачайте исходники интересующего пакета. В примере используем пакет tar.

mkdir apt-rebuilds
cd apt-rebuilds
apt-get source tar

Команда apt-get source скачает архив исходников и распакует его в текущую директорию.

Просмотреть файлы:

ls -la

Apt Source Tar

3. Проверка и установка зависимостей сборки

Перед сборкой убедитесь, что на вашей системе установлены все зависимости для сборки пакета.

В каталоге с исходниками выполните проверку зависимостей:

sudo dpkg-checkbuilddeps

Эта команда покажет, какие пакеты отсутствуют. Чтобы установить зависимости автоматически, используйте:

sudo apt-get build-dep tar

Если вы предпочитаете apt:

sudo apt build-dep tar

Примечание: замените tar на имя пакета, который вы собираете.

Apt Get Build Dep

Совет по изоляции: для чистой и воспроизводимой сборки используйте chroot-инструменты (pbuilder, sbuild) или контейнеры Docker — это уменьшит риск «работает на моей машине».

4. Внесите изменения в пакет

Откройте каталоги исходников и внесите нужные правки: патчи, изменения настроек, компилятора и т.д. Как вы будете править — зависит от цели: убрать флаг, включить опцию конфигурации, обновить версию библиотеки.

Обновите changelog, увеличив локальную версию, чтобы пакет отличался от оригинала. Для Debian-пакетов удобно использовать dch (devscripts):

dch --local

Эта команда откроет ваш редактор и позволит добавить строку в debian/changelog. Впишите краткое описание изменений и сохраните.

Важно: используйте семантику версии, понятную вашей организации (например, 1.2.3-4custom1).

5. Сборка пакета

Когда всё готово, выполните сборку из каталога с исходниками (где находится debian/):

dpkg-buildpackage --force-sign

Если вы не хотите подписывать пакеты, можно убрать –force-sign. Для быстрой сборки только бинарных пакетов используйте:

dpkg-buildpackage -b

Время сборки зависит от пакета и вашего железа.

Dpkg Buildpackage

6. Установка собранного пакета

После успешной сборки .deb-файлы обычно оказываются в родительском каталоге. Установите их так:

sudo dpkg -i ../*.deb

Если есть проблемы с зависимостями, исправьте их командой:

sudo apt-get install -f

Когда этот процесс полезен и когда нет

  • Полезно: включение/отключение опций, патчинг уязвимостей, оптимизация под конкретное железо, тестирование новых функций без ожидания upstream.
  • Не полезно: если нужно лишь изменить отдельный конфигурационный файл — достаточно локального конфигурирования; если пакет интенсивно взаимодействует с системой, кастомная сборка может привести к несоответствию гарантиям и поддержке.

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

  • Использовать checkinstall для быстрого создания .deb из make install (подходит для простых случаев).
  • Собирать в pbuilder/sbuild для чистой, воспроизводимой среды.
  • Контейнеризировать сборку через Docker для упрощения CI/CD.
  • Патчи через quilt и debian/patches — удобнее поддерживать изменения.

Мини-методология (шаги наподобие SOP)

  1. Включить deb-src и sudo apt update.
  2. Скачать исходники apt-get source .
  3. Установить build-dep для .
  4. Внести изменения и обновить debian/changelog через dch –local.
  5. Собрать dpkg-buildpackage в изолированной среде.
  6. Установить и протестировать, затем задокументировать изменения.

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

  • Пакет собирается без ошибок.
  • Установленный пакет работает корректно на целевой системе.
  • Наличие тестов: если пакет поставляется с тестовым набором, они проходят.
  • Версия пакета уникальна и задокументирована.

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

Администратор:

  • Включил deb-src и сделал обновление индексов.
  • Проверил зависимости сборки.
  • Выполнил сборку в изолированной среде.
  • Установил и провёл smoke-тесты.

Разработчик/Инженер релиза:

  • Подготовил патчи (quilt) и обновил changelog.
  • Обеспечил совместимость ABI/API при необходимости.
  • Подготовил инструкцию отката.

Короткий глоссарий

  • deb-src: запись в sources.list для исходных пакетов.
  • dpkg-buildpackage: инструмент для сборки Debian-пакетов.
  • build-dep: набор пакетов, требуемых для сборки.
  • dch: утилита для редактирования debian/changelog.
  • pbuilder/sbuild: инструменты для изолированной сборки в chroot.

Безопасность и лучшие практики

  • По возможности собирайте в chroot/контейнере, чтобы избежать подмены зависимостей.
  • Подписывайте пакеты, если собираетесь распространять их внутри организации.
  • Документируйте изменения и храните патчи в SCM (git).

Типичные ошибки и их устранение

  • “Unmet build dependencies”: запустите sudo apt-get build-dep .
  • Проблемы с версией: увеличьте локальную версию в debian/changelog.
  • Сборка работает у вас, но не на CI: используйте pbuilder/sbuild для совпадения окружений.

Примеры команд (Cheat sheet)

# Обновить репозитории и скачать исходники
sudo apt-get update
apt-get source 

# Установить зависимости для сборки
sudo apt-get build-dep 

# Обновить changelog перед сборкой
dch --local

# Собрать пакет (подписанный)
dpkg-buildpackage --force-sign

# Установить собранные пакеты
sudo dpkg -i ../*.deb
sudo apt-get install -f

В завершение

Пересборка пакета — практический навык для администраторов и продвинутых пользователей Linux. Она открывает доступ к гибкой настройке и исправлению пакетов, но требует дисциплины: используйте изолированные среды, подписывайте релизы и храните патчи в системе контроля версий.

Важно: если вы только учитесь — начните с простых пакетов и используйте тестовую виртуальную машину, чтобы не нарушить рабочую систему.

Поделиться: 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 быстро