Skip to content

Instantly share code, notes, and snippets.

@thomsh
Last active September 28, 2019 02:39
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save thomsh/d5230c30e2ccbae369c2a490693305a3 to your computer and use it in GitHub Desktop.
Save thomsh/d5230c30e2ccbae369c2a490693305a3 to your computer and use it in GitHub Desktop.
Rebuild nginx on Debian Stretch with Kaltura nginx-vod-module
#!/bin/bash
set -euxo pipefail
# Install latest Nginx from backports on Debian Stretch
# with nginx-vod-module from https://github.com/kaltura/nginx-vod-module
# This script/doc will rebuild the deb package
# Requirement : run on Debian Stretch with backports repository enabled
if ! egrep '^deb .+ stretch-backports' -- /etc/apt/sources.list /etc/apt/sources.list.d/*.list ; then
echo 'deb http://deb.debian.org/debian/ stretch-backports main contrib non-free' |tee /etc/apt/sources.list.d/bpo.list
fi
if ! egrep '^deb-src .+ stretch-backports' -- /etc/apt/sources.list /etc/apt/sources.list.d/*.list ; then
echo 'deb-src http://deb.debian.org/debian/ stretch-backports main contrib non-free' |tee /etc/apt/sources.list.d/bposrc.list
fi
NGINX_V=1.14.1
BASEDIR=/tmp/build_nginx
SRCDIR="${BASEDIR%/}/nginx-${NGINX_V}"
VOD_V="1.24"
mkdir -p "${BASEDIR}"
cd "${BASEDIR}"
apt update
apt install build-essential git dpkg-dev -qy
apt build-dep -t stretch-backports nginx -qy
apt source -t stretch-backports nginx
cat > "${BASEDIR%/}/rules.patch.b64" <<EOF
LS0tIHJ1bGVzCTIwMTgtMTEtMDkgMDk6MTQ6NTQuMDAwMDAwMDAwICswMDAwCisrKyAvb3B0L29s
ZF9idWlsZF9uZ2lueC9uZ2lueC0xLjE0LjEvZGViaWFuL3J1bGVzCTIwMTgtMTItMDkgMTc6MDE6
NDIuODkwMDAyNzkxICswMDAwCkBAIC0xMDIsNyArMTAyLDkgQEAKIAkJCS0tYWRkLWR5bmFtaWMt
bW9kdWxlPSQoTU9EVUxFU0RJUikvaHR0cC1kYXYtZXh0IFwKIAkJCS0tYWRkLWR5bmFtaWMtbW9k
dWxlPSQoTU9EVUxFU0RJUikvaHR0cC1lY2hvIFwKIAkJCS0tYWRkLWR5bmFtaWMtbW9kdWxlPSQo
TU9EVUxFU0RJUikvaHR0cC11cHN0cmVhbS1mYWlyIFwKLQkJCS0tYWRkLWR5bmFtaWMtbW9kdWxl
PSQoTU9EVUxFU0RJUikvaHR0cC1zdWJzLWZpbHRlcgorCQkJLS1hZGQtZHluYW1pYy1tb2R1bGU9
JChNT0RVTEVTRElSKS9odHRwLXN1YnMtZmlsdGVyIFwKKwkJCS0tYWRkLW1vZHVsZT0kKE1PRFVM
RVNESVIpL25naW54LXZvZC1tb2R1bGUgXAorCQkJLS13aXRoLWZpbGUtYWlvCiAKIGV4dHJhc19j
b25maWd1cmVfZmxhZ3MgOj0gXAogCQkJJChjb21tb25fY29uZmlndXJlX2ZsYWdzKSBcCkBAIC0x
MzUsNyArMTM3LDkgQEAKIAkJCS0tYWRkLWR5bmFtaWMtbW9kdWxlPSQoTU9EVUxFU0RJUikvcnRt
cCBcCiAJCQktLWFkZC1keW5hbWljLW1vZHVsZT0kKE1PRFVMRVNESVIpL2h0dHAtdXBsb2FkcHJv
Z3Jlc3MgXAogCQkJLS1hZGQtZHluYW1pYy1tb2R1bGU9JChNT0RVTEVTRElSKS9odHRwLXVwc3Ry
ZWFtLWZhaXIgXAotCQkJLS1hZGQtZHluYW1pYy1tb2R1bGU9JChNT0RVTEVTRElSKS9odHRwLXN1
YnMtZmlsdGVyCisJCQktLWFkZC1keW5hbWljLW1vZHVsZT0kKE1PRFVMRVNESVIpL2h0dHAtc3Vi
cy1maWx0ZXIgXAorCQkJLS1hZGQtbW9kdWxlPSQoTU9EVUxFU0RJUikvbmdpbngtdm9kLW1vZHVs
ZSBcCisJCQktLXdpdGgtZmlsZS1haW8KIAogJToKIAlkaCAkQCAtLXdpdGhvdXQgYXV0b3JlY29u
Zgo=
EOF
base64 -d "${BASEDIR%/}/rules.patch.b64" |tee "${BASEDIR%/}/rules.patch"
cd "${SRCDIR%/}/debian"
patch -i "${BASEDIR%/}/rules.patch" --merge rules
cd "${SRCDIR%/}/debian/modules"
git clone https://github.com/kaltura/nginx-vod-module.git nginx-vod-module
cd "${SRCDIR%/}/debian/modules/nginx-vod-module"
git checkout "${VOD_V}"
cd "${SRCDIR}"
dpkg-buildpackage -uc -b
cd "${BASEDIR}"
dpkg -i $(ls nginx-common_*.deb nginx-extras_*.deb libnginx-mod*.deb |grep -v 'dbgsym_' |tr '\n' ' ')
# Avoid upgrade: (advice: follow carefully debian security mailing list to rebuild when required)
ls nginx-common_*.deb nginx-extras_*.deb libnginx-mod*.deb |grep -v 'dbgsym_' |awk -F_ '{print $1}' |xargs apt-mark hold
# verify :
nginx -V 2>&1 |egrep --color 'nginx-vod-module|file-aio'
echo "done"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment