Das Problem ist das ein Dritt-Modul (ModSecurity) eine eigene Bibliothek braucht. Ich könnte jetzt natürlich die libmodsecurity.so.3 direkt mit dem nginx-Paket mit ausliefern; das würde aber auch heißen, dass bei einem ModSecurity Update nginx neu gebaut werden müsste, was ich nicht möchte (lieber die Bibliothek selbst als eigenes Paket). Wie baue ich also ein Debian Paket von Quellen, welche keine debian/rules haben? Ich möchte, dass libmodsecurity.so.3 über das Paket libmodsecurity ausgeliefert wird, dass dieses Paket die benötigten Abhängigkeiten (siehe unten) auflöst und dass das nginx Paket zu diesem libmodsecurity-Paket abhängig ist.
Der unten aufgezeigte Ablauf ignoriert (dh_shlibdeps) einfach nicht aufgelöste Abhängigkeiten (libmodsecurity) beim nginx Paketbau. Das möchte ich eigentlich nicht machen. Wie muss ich das libmodsecurity Paket bauen und nginx debian/rules modifizieren, dass er das neue libmodsecurity Paket als Abhängigkeit nimmt?
Ich bin wie folgt vorgegangen:
Code: Alles auswählen
# Vorbereitungen:
mkdir -p /data && cd /data
sudo apt-get update && sudo apt-get install wget gnupg
# nginx Quellen hinzufügen (Signierschlüssel und Paketquelle):
wget -O - http://nginx.org/keys/nginx_signing.key | sudo apt-key add -
echo "deb-src http://nginx.org/packages/mainline/debian/ stretch nginx" | sudo tee -a /etc/apt/sources.list
sudo apt-get update
# nginx Quellcode-Paket herunterladen und Abhängigkeiten installieren:
apt-get source nginx=1.13.8-1~stretch
sudo apt-get build-dep nginx=1.13.8-1~stretch
# 3rd Party Module herunterladen:
git clone -b v3.0.0 -- https://github.com/SpiderLabs/ModSecurity.git /data/nginx-modules/ModSecurity
git clone -b v1.0.0 -- https://github.com/SpiderLabs/ModSecurity-nginx.git /data/nginx-modules/ModSecurity-nginx
# ModSecurity kompilieren:
cd /data/nginx-modules/ModSecurity
git submodule init && git submodule update
sudo apt-get install libgeoip-dev libcurl4-openssl-dev libyajl-dev liblmdb-dev libxml2-dev liblua5.3-dev
./build.sh && ./configure && make && sudo make install
cd /data
# Patch nginx's debian/rules (siehe anderer Code-Block)
patch /data/nginx-1.13.8/debian/rules /data/debian-rules.patch
# nginx Paket bauen:
debuild -b -uc -us -ui
Code: Alles auswählen
--- /data/nginx-1.13.8/debian/rules.orig 2017-12-26 12:11:22.000000000 +0100
+++ /data/nginx-1.13.8/debian/rules 2018-02-16 13:41:59.448040752 +0100
@@ -38,12 +38,12 @@
config.status.nginx: config.env.nginx
cd $(BUILDDIR_nginx) && \
- CFLAGS="" ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt="$(CFLAGS)" --with-ld-opt="$(LDFLAGS)"
+ CFLAGS="" ./configure --prefix=/usr/share/nginx --pid-path=/run/nginx.pid --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --user=nginx --group=nginx --with-compat --with-file-aio --with-pcre-jit --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_mp4_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_xslt_module --with-mail --with-mail_ssl_module --with-stream --with-stream_geoip_module --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --add-module=/data/nginx-modules/ModSecurity-nginx --with-cc-opt="$(CFLAGS)" --with-ld-opt="$(LDFLAGS)"
touch $@
config.status.nginx_debug: config.env.nginx_debug
cd $(BUILDDIR_nginx_debug) && \
- CFLAGS="" ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt="$(CFLAGS)" --with-ld-opt="$(LDFLAGS)" --with-debug
+ CFLAGS="" ./configure --prefix=/usr/share/nginx --pid-path=/run/nginx.pid --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --user=nginx --group=nginx --with-compat --with-file-aio --with-pcre-jit --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_mp4_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_xslt_module --with-mail --with-mail_ssl_module --with-stream --with-stream_geoip_module --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --add-module=/data/nginx-modules/ModSecurity-nginx --with-cc-opt="$(CFLAGS)" --with-ld-opt="$(LDFLAGS)" --with-debug
touch $@
build-arch.%: config.status.%
@@ -127,7 +127,7 @@
dh_perl -a
dh_fixperms -a
dh_installdeb -a
- dh_shlibdeps -a
+ dh_shlibdeps -a --dpkg-shlibdeps-params=--ignore-missing-info
dh_gencontrol -a
dh_md5sums -a
dh_builddeb $(foreach p,$(DO_PKGS),-p$(p))