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

Пересобрать Debian-пакет с включённым SSL

• 5 min read • Linux • Обновлено 25 Nov 2025
Пересобрать Debian-пакет с включённым SSL
Пересобрать Debian-пакет с включённым SSL

TL;DR

Если дистрибутивный пакет отключает поддержку SSL/TLS, скачайте исходники с помощью apt-get source, установите зависимости сборки (apt-get build-dep), включите нужные флаги в debian/rules, поднимите версию в debian/changelog и выполните dpkg-buildpackage. Установите полученный .deb через dpkg -i и проверьте с помощью параметров программы.

Короткое описание и цель

Это пошаговое руководство показывает, как внести небольшое изменение в пакет Debian/Ubuntu (на примере mail-notification) и пересобрать его локально с включённой поддержкой TLS/SSL. Подход применим к большинству пакетов, использующих систему упаковки Debian (deb), и полезен, если официальный пакет лишён нужной опции или содержит локальное исправление.

Важно: инструкция ориентирована на Debian/Ubuntu и предполагает базовые навыки работы в терминале. Все команды показаны в кодовых блоках так, как в исходном материале.

Что понадобится

  • Система Debian или Ubuntu с доступом в интернет.
  • Права root (или использование sudo/fakeroot).
  • Установленный apt (apt-get) и dpkg.
  • Исходные пакеты и dev-зависимости для пересборки.

Краткое определение: debian/rules — файл управления сборкой в исходном дереве Debian-пакета; именно там часто указываются дополнительные флаги для ./configure.

Когда этот подход уместен и когда нет

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

Пошаговое руководство (детально)

  1. Получите привилегии root. Можно использовать sudo для запуска оболочки root, чтобы не приставлять sudo ко всем командам:
~$ sudo bash
Password:
#
  1. Скачайте исходники пакета mail-notification (пример):
# apt-get source mail-notification

Эта команда создаст подкаталог(и) с исходниками, например:

mail-notification-3.0.dfsg.1
mail-notification-4.0-rc2

Остановитесь на нужной версии (в примере используется 3.0.dfsg.1).

  1. Установите все зависимости сборки (build dependencies):
# apt-get build-dep mail-notification

Эта команда автоматически установит пакеты, требуемые для сборки. Если это первый раз, ожидайте загрузки множества пакетов.

  1. Если хотите включить поддержку SSL, установите соответствующие заголовки/библиотеки разработки:
# apt-get install libssl-dev
  1. Перейдите в каталог с исходниками нужной версии:
# cd mail-notification-3.0.dfsg.1
  1. Отредактируйте файл debian/rules — именно там указываются флаги configure. Удалите или измените опцию –disable-ssl, чтобы SSL поддержка была включена. В примере использовался vi:
# vi debian/rules

В исходнике может быть такой фрагмент (сохранён как код):

#!/usr/bin/make -f

# -*- mode: makefile; coding: utf-8 -*-

include /usr/share/cdbs/1/rules/debhelper.mk

include /usr/share/cdbs/1/rules/simple-patchsys.mk
include /usr/share/cdbs/1/class/gnome.mk

DEB_INSTALL_MANPAGES_mail-notification := debian/mail-notification.1

DEB_CONFIGURE_SCRIPT_ENV += LDFLAGS=-Wl,--export-dynamic
#DEB_CONFIGURE_EXTRA_FLAGS += --disable-ssl –with-gconf-schema-file-dir=/usr/share/gconf/schemas
DEB_CONFIGURE_EXTRA_FLAGS += --with-gconf-schema-file-dir=/usr/share/gconf/schemas
DEB_DH_MAKESHLIBS_ARGS_mail-notification += --noscripts
DEB_DH_MAKESHLIBS_ARGS_mail-notification-evolution += --noscripts
CFLAGS += -fPIC

AUTOSTARTDIR = debian/mail-notification/etc/xdg/autostart
EVODIR = debian/tmp/usr/lib/evolution/2.8/plugins
BONOBODIR = debian/tmp/usr/lib/bonobo/servers

Удалите строку с –disable-ssl или раскомментируйте правильный вариант, чтобы флаг не блокировал SSL. Сохраните файл.

  1. Измените debian/changelog, чтобы у новой локальной сборки был уникальный номер версии и пакет не заменялся автоматически официальными обновлениями. Пример редактирования:
# vi debian/changelog

Вставьте новую запись в начале, например:

mail-notification (3.0.dfsg.1-3ubuntu8a) edgy; urgency=low

* debian/rules: Enable TLS/SSL

-- Martin Sat, 10 Feb 2007 20:28:06 +0100

mail-notification (3.0.dfsg.1-3ubuntu8) edgy; urgency=low

* debian/rules: Fix path to .desktop file to fix FTBFS.

-- Martin Pitt Thu, 12 Oct 2006 10:55:06 +0200

Заметьте букву «a» в суффиксе версии: это простой способ отличить вашу локальную сборку от репозитория. Можно выбрать другую стратегию версионирования, но важно сохранить последовательность версий и понятность в changelog.

  1. Соберите пакет и установите его (.deb) с помощью стандартного инструмента упаковки Debian:
# dpkg-buildpackage -uc -b

Опция -uc указывает не подписывать изменения, -b — собирать только бинарные пакеты. После успешной сборки в родительской директории появится .deb файл.

  1. Установите собранный пакет:
# cd ..
# dpkg -i mail-notification_3.0.dfsg.1-3ubuntu8a_i386.deb

Если при установке появляются конфликты или неудовлетворённые зависимости, используйте apt-get -f install для автоматического исправления зависимостей.

  1. Проверьте, что поддержка SSL включена:
# mail-notification --list-features

Команда должна показать флаг, подтверждающий наличие SSL/TLS.

  1. Завершение и активация в GNOME: возможно, потребуется выйти из сессии GNOME и зайти снова, чтобы tray-аплет корректно отобразил новые функции. Настройте почтовые ящики (возможно, несколько) и убедитесь, что уведомления приходят через защищённое соединение.

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

  • Пакет собирается без ошибок.
  • .deb устанавливается без неудовлетворённых зависимостей.
  • mail-notification показывает в списке доступных функций поддержку ssl/tls.
  • Уведомления корректно работают при подключении к серверу по SSL/TLS.

Проверки и тест-кейсы

  • Выполнить mail-notification –list-features и убедиться, что SSL/TLS присутствует.
  • Подключиться к тестовому почтовому серверу с принудительным TLS и подтвердить получение уведомления.
  • Откат: переустановить официальный пакет из репозитория и сравнить поведение.

Советы по совместимости и откату

  • Если вы хотите вернуть официальную версию, выполните:
# apt-get install --reinstall mail-notification

или установите версию из репозитория конкретным номером пакета.

  • Чтобы избежать автоматической перезаписи вашей версии, можно сделать пакет выше по версии, чем репозитория, либо использовать pinning в apt preferences. Но помните, что повышая версию, вы можете помешать автоматическим обновлениям безопасности.

Риски и их смягчение

  • Риск: несоответствие зависимостей — решение: apt-get -f install и проверка Build-Depends.
  • Риск: нарушение совместимости с остальной системой — решение: тестирование в изолированной среде (VM или контейнер).
  • Риск: непредвидённые уязвимости при самостоятельной сборке — решение: сверяйтесь с upstream-репозиторием и применяйте обновления безопасности.

Мини-методология (шаблон действий при локальной пересборке)

  1. Скопировать исходники через apt-get source.
  2. Установить build-deps.
  3. Внести минимальные изменения.
  4. Увеличить версию в changelog.
  5. Собрать с dpkg-buildpackage.
  6. Установить и протестировать.
  7. Документировать изменения в changelog и месте хранения пакета.

Чек-лист для ролей

  • Developer: оформить и протестировать изменения в исходниках, обновить changelog, создать патч/merge request.
  • Release manager / Admin: собрать пакет в контролируемой среде, проверить зависимости, выполнить установку и мониторинг.
  • User: проверить поведение приложения и сообщить об отклонениях.

Диаграмма принятия решения

flowchart TD
  A[Нужно включить опцию, недоступную в дистрибутивном пакете?] -->|Да| B[Есть локальный доступ к сборке?]
  B -->|Да| C[Скачать исходники и build-deps]
  B -->|Нет| D[Использовать контейнер/VM или запросить пакет у мейнтейнера]
  C --> E{Нужна ли системная библиотека?}
  E -->|Да| F[Установить dev-пакет 'например libssl-dev']
  E -->|Нет| G[Изменить debian/rules и changelog]
  F --> G
  G --> H[Собрать dpkg-buildpackage]
  H --> I[Установить .deb и протестировать]
  I --> J[Удовлетворительно?]
  J -->|Да| K[Внести в документацию и сохранить .deb]
  J -->|Нет| L[Откат/дальнейшая отладка]

Глоссарий (одной строкой)

  • debian/rules — Makefile-подобный скрипт, управляющий процессом сборки Debian-пакета.
  • build-dep — зависимости, необходимые только для сборки пакета.
  • dpkg-buildpackage — инструмент для создания .deb из исходных файлов.

Дополнительные советы и лучшие практики

  • Делайте изменения в контролируемой среде (виртуальная машина или контейнер) перед разворачиванием на рабочей станции.
  • Сохраняйте .debf файлы и старый changelog, чтобы при необходимости можно было откатиться.
  • Если изменение желательно для сообщества, создайте патч и отправьте его мейнтейнеру или в upstream-проект.

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

Пересборка Debian-пакета — стандартная и мощная операция, позволяющая адаптировать программное обеспечение под ваши требования (например, включить TLS/SSL). Основные шаги: получить исходники, установить зависимости сборки, изменить debian/rules и debian/changelog, затем собрать и установить пакет. Тестируйте изменения и задокументируйте сборку.

Важно: всегда проверяйте безопасность и совместимость локально собранных пакетов до массового развёртывания.

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