Company Customizations
When a company wants to maintain a customized version of a debian/ubuntu package, it is often helpful to start with fresh/pristine packaging. This avoids extra objects and data that would create tech debt within the orginizations maintenance efforts.
Disclaimer: These notes target customizations of Nginx on Ubuntu-18.04.
References:
Initial Environment
Grab the current distro-maintained package data:
Enable apt-src lines in sources.list
apt-get update
apt-get source nginx
Grab a copy of the latest stable upstream release:
wget http://nginx.org/download/nginx-1.18.0.tar.gz
Create a starting point:
mkdir nginx
cd nginx
git init
gbp import-orig --pristine-tar ../nginx-1.18.0.tar.gz
Initial Packaging
Use $current_packaging as a starting point:
cp -R ../nginx-1.14.0/debian ./
Clean up (simplify) d/rules
Remove d/nginx-.
Add d/nginx-lpi.* (easiest copied from -full)
Trim extra stuff from d/control
Add custom package (and remove others) in d/control
Verify Status
Build with:
gbp buildpackage --git-pbuilder --git-dist=bionic --git-arch=amd64
Integrity Check:
lintian -EviIL +pedantic ../*.dsc
Customizations
Add module:
cd debian/modules
git submodule add git@github.llnw.net:llnw-lpi/ngx-lpi.git llnw-lpi
vim README.Modules-versions
Add patch:
quilt new 001-llnw-lpi.patch
quilt add src/http/ngx_http_core_module.* src/http/ngx_http_parse.c src/http/ngx_http_request.h src/http/ngx_http_request_body.c
patch -p1 <../patch
quilt refresh
quilt pop -a
git add debian/patches
vim debian/rules # add module to configure arguments
Future Updates:
gbp import-orig ../nginx-X.tar.gz
vim debian/changelog
git commit [...]
gbp buildpackage --git-pbuilder --git-dist=bionic --git-arch=amd64