Пересобрать 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).
Пошаговое руководство (детально)
- Получите привилегии root. Можно использовать sudo для запуска оболочки root, чтобы не приставлять sudo ко всем командам:
~$ sudo bash
Password:
#- Скачайте исходники пакета mail-notification (пример):
# apt-get source mail-notificationЭта команда создаст подкаталог(и) с исходниками, например:
mail-notification-3.0.dfsg.1
mail-notification-4.0-rc2Остановитесь на нужной версии (в примере используется 3.0.dfsg.1).
- Установите все зависимости сборки (build dependencies):
# apt-get build-dep mail-notificationЭта команда автоматически установит пакеты, требуемые для сборки. Если это первый раз, ожидайте загрузки множества пакетов.
- Если хотите включить поддержку SSL, установите соответствующие заголовки/библиотеки разработки:
# apt-get install libssl-dev- Перейдите в каталог с исходниками нужной версии:
# cd mail-notification-3.0.dfsg.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. Сохраните файл.
- Измените 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.
- Соберите пакет и установите его (.deb) с помощью стандартного инструмента упаковки Debian:
# dpkg-buildpackage -uc -bОпция -uc указывает не подписывать изменения, -b — собирать только бинарные пакеты. После успешной сборки в родительской директории появится .deb файл.
- Установите собранный пакет:
# cd ..
# dpkg -i mail-notification_3.0.dfsg.1-3ubuntu8a_i386.debЕсли при установке появляются конфликты или неудовлетворённые зависимости, используйте apt-get -f install для автоматического исправления зависимостей.
- Проверьте, что поддержка SSL включена:
# mail-notification --list-featuresКоманда должна показать флаг, подтверждающий наличие SSL/TLS.
- Завершение и активация в 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-репозиторием и применяйте обновления безопасности.
Мини-методология (шаблон действий при локальной пересборке)
- Скопировать исходники через apt-get source.
- Установить build-deps.
- Внести минимальные изменения.
- Увеличить версию в changelog.
- Собрать с dpkg-buildpackage.
- Установить и протестировать.
- Документировать изменения в 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, затем собрать и установить пакет. Тестируйте изменения и задокументируйте сборку.
Важно: всегда проверяйте безопасность и совместимость локально собранных пакетов до массового развёртывания.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента