Сборка deb-пакета nginx из Debian 11 Bullseye для Debian 8.11 Jessie
Содержание
Настройка виртуальной машины
Для сборки nginx понадобится настроить виртуальную машину с Debian 8.11.1 LTS с кодовым именем Jessie. Получить образ установочного диска можно по ссылке debian-8.11.1-amd64-netinst.iso.
Настройка репозиториев
Для настройки репозиториев поместим в файл /etc/apt/sources.list
следующие строки:
deb http://archive.debian.org/debian/ jessie main contrib non-free
deb http://archive.debian.org/debian-security/ jessie/updates main contrib non-free
deb-src http://nginx.org/packages/mainline/debian/ bullseye nginx
Также нужно установить в систему публиынй GPG-ключ, которым подписан репозиторий nginx
:
# wget --quiet -O - http://nginx.org/keys/nginx_signing.key | apt-key add -
Поскольу мы установили устаревший релиз, отключим проверку актуальности репозиториев, создав файл /etc/apt/apt.conf.d/valid
со следующим содержимым:
Acquire::Check-Valid-Until "false";
Отключаем установку предлагаемых зависимостей, создав файл /etc/apt/apt.conf.d/suggests
со следующим содержимым:
APT::Install-Suggests "false";
Отключаем установку рекомендуемых зависимостей, создав файл /etc/apt/apt.conf.d/recommends
со следующим содержимым:
APT::Install-Recommends "false";
Система apt сохраняет скачанные пакеты в каталоге /var/cache/apt/archives/
, чтобы при необходимости не скачивать их снова. Файлы в этом каталоге по умолчанию не удаляются, что может привести к переполнению диска. Чтобы отключить размер файлов в этом каталоге 200 мегабайтами, создадим файл /etc/apt/apt.conf.d/cache
со следующим содержимым:
APT::Cache-Limit "209715200";
Создадим файл /etc/apt/apt.conf.d/timeouts
с настройками таймаутов обращения к репозиториям:
Acquire::http::Timeout "5";
Acquire::https::Timeout "5";
Acquire::ftp::Timeout "5";
При необходимости, если репозитории доступны через веб-прокси, можно создать файл /etc/apt/apt.conf.d/proxy
, прописав в него прокси-серверы для протоколов HTTP, HTTPS и FTP:
Acquire::http::Proxy "http://10.0.25.3:8080";
Acquire::https::Proxy "http://10.0.25.3:8080";
Acquire::ftp::Proxy "http://10.0.25.3:8080";
Обновим список пакетов, доступных через репозиторий:
# apt-get update
Обновим систему с использованием самых свежих пакетов, доступных через репозитории:
# apt-get upgrade
# apt-get dist-upgrade
Установка пакетов
Устанавливаем пакеты, которые потребуются для сборки
# apt-get install devscripts libparse-debcontrol-perl fakeroot gcc build-essential:native debhelper quilt lsb-release libpcre3-dev
Обратный перенос и сборка
Скачиваем исходники deb-пакета nginx
, они автоматически распакуются в каталог nginx-1.21.6
:
$ apt-get source nginx
Переходим в каталог с распакованными исходниками для сборки deb-пакета:
$ cd nginx-1.21.6
Запускаем утилиту dch
для обновления журнала изменений пакета:
$ dch -i
Вводим описание доработанной нами версии пакета:
nginx (1.21.6-1~jessie-backport) jessie; urgency=low
* Package backport for Debian 8.11 Jessie
-- Vladimir Stupin <vladimir@stupin.su> Wed, 18 May 2022 10:31:17 +0500
Редактируем файл debian/control
, меняем зависимость от libpcre2-dev
на зависимость от libpcre3-dev
и меняем требуемую минимальную версию debhelper
с 11 на 8:
Build-Depends: debhelper (>= 8),
dpkg-dev (>= 1.16.1~),
quilt (>= 0.46-7~),
lsb-release,
libpcre3-dev,
libssl-dev (>= 0.9.7),
zlib1g-dev
Редактируем файл debian/compat
, меняем содержащуюся в нём цифру 11 на 8.
Редактируем файлы debian/nginx.rules.in
и debian/rules
, удаляем опцию --no-stop-on-upgrade
в следующих строчках:
dh_installinit -i -pnginx --no-stop-on-upgrade --no-start --name=nginx
dh_installinit -i -pnginx --no-stop-on-upgrade --no-start --noscripts --name=nginx-debug
Из этих же файлов удаляем следующие строчки:
dh_installsystemd -i -pnginx --name=nginx nginx.service
dh_installsystemd -i -pnginx --name=nginx-debug --no-enable nginx-debug.service
Запускаем сборку deb-пакета и доработанного исходного deb-пакета:
$ dpkg-buildpackage -rfakeroot -us -uc
В каталоге выше появятся следующие файлы:
- nginx 1.21.6-1~jessie amd64.changes
- nginx 1.21.6-1~jessie amd64.deb
- nginx 1.21.6-1~jessie.debian.tar.xz
- nginx 1.21.6-1~jessie.dsc
- nginx-dbg 1.21.6-1~jessie amd64.deb
Эти файлы вместе с файлом nginx 1.21.6.orig.tar.gz можно поместить в репозиторий, например, с помощью утилиты aptly
.