Выполнять сборку следует на отдельной машине, а не на рабочем сервере, чтобы не засорять его лишними пакетами. Я буду использовать небольшой читинг, а не полноценную сбоку пакета, которая не очень проста. Возьму готовые файлы настроек для упаковки в Debian 11 из официального репозитория Nginx. Распакую их, немного изменю настройки и запакую с ними свой пакет.
Устанавливаем необходимые зависимости, которые понадобятся для сборки Nginx и упаковки в deb пакет:
# apt install dpkg-dev devscripts quilte quivs wget dh-make build-essential \ git libpcre++-dev libssl-dev libgeoip-dev libxslt1-dev zlib1g-dev libpcre2-devСкачиваем файлы, которые нам понадобятся: исходники и настройки:
# mkdir build && cd build# wget http://nginx.org/packages/debian/pool/nginx/n/nginx/nginx_1.24.0-1~bullseye.debian.tar.xz# wget http://nginx.org/download/nginx-1.24.0.tar.gzРаспаковываем всё и удаляем архивы, чтобы не мешали:
# tar xvf nginx_1.24.0-1~bullseye.debian.tar.xz# tar xzvf nginx-1.24.0.tar.gz# rm -rf nginx_1.24.0-1~bullseye.debian.tar.xz nginx-1.24.0.tar.gzСоздаём директорию для модулей:
# mkdir debian/modulesКопируем туда исходники nginx-module-vts:
# cd debian/modules# git clone https://github.com/vozlt/nginx-module-vtsВозвращаемся обратно в build и переносим директорию debian/ в папку с исходниками:
# cd ../../# mv debian ./nginx-1.24.0# cd nginx-1.24.0Редактируем некоторые файлы. Начинаем с
debian/changelog. Добавьте в начало по аналогии новую запись с описанием нового пакета. Примерно так:nginx (1.24.0-1~bullseye) bullseye; urgency=low * 1.24.0-1 * Add nginx-module-vts -- Serveradmin <root@serveradmin.ru> Fri, 18 Aug 2023 10:03:46 +0300Важно следить за всеми отступами и пробелами. Если просто скопируете отсюда, то будут ошибки. Копируйте строки из исходного файла и меняйте их.
Далее вам может понадобиться файл
debian/control, где можно добавить зависимости. В моём случае новых зависимостей не появится. А если вы, к примеру, захотите добавить модуль с lua, то там нужно будет пару пакетов в систему установить. Просто добавьте их в Build-Depends. Открываем файл
debian/rules и добавляем туда:MODULESDIR = $(CURDIR)/debian/modulesМожете эту строку добавить сразу же после строки с BASEDIR. Далее ищем строки с ./configure и добавляем к ним в конец дополнительный параметр:
--add-module=$(MODULESDIR)/nginx-module-vtsЗдесь же можете удалить лишние модули, которые вам точно не понадобятся.
Удаляем файл
debian/source/format. Он не даст собрать пакет. # rm -rf debian/source/formatСохраняем файл и собираем архив с настройками пакета:
# dh_make --copyright gpl -s -e root@serveradmin.ru --createorig -y -p nginx_1.24.0В директории build должен появиться файл
nginx_1.24.0.orig.tar.xz.Собираем пакет:
# dpkg-buildpackage -rfakerootВ директории build должен появиться в том числе файл с пакетом
nginx_1.24.0-1~bullseye_amd64.deb. Его можно установить и проверить:# dpkg -i nginx_1.24.0-1~bullseye_amd64.debПроверяем, есть ли там наш модуль:
# nginx -VВ самом конце должно быть
--add-module=/root/build/nginx-1.24.0/debian/modules/nginx-module-vtsНа этом всё. Таким образом можно собирать любые сборки Nginx под свои потребности и размещать их в своих репозиториях. Например, с помощью Nexus, aptly, apt-offline и т.д.
Заметка получилась полноценной инструкцией с информацией, которую я в интернете не нашёл в готовом виде. Пришлось написать самому.
#debian #nginx