Debian Source Paket mit eigenen Parametern kompilieren

Part 1: Tutorial: Build-Chroot für Debian Pakete

Als Beispiel möchte ich php5-fpm neu kompilieren, da es standardmäßig mit dem compile-time-parameter –disable-debug ausgeliefert wird. Ich möchte jedoch einen Backtrace für einen Fehler erstellen, der immer wieder sporadisch auftritt und sich in den Logfiles so präsentiert:

recv() failed (104: Connection reset by peer) while reading response header from upstream
1. Quellen besorgen

Zuerst holen wir uns den Quellcode.

cd /usr/src/
apt-get source php5-fpm

Danach lassen wir apt-get sämtliche Dependencies installieren

apt-get build-dep php5-fpm
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev mysqld-dev

In meinem Fall gibt es jetzt ein Problem mit mysql-server, welches als Abhängigkeit installiert wurde, aber nicht vollständig konfiguriert werden kann, ich nehme an, weil auf dem Hauptsystem bereits eine Instanz auf dem selben Port läuft. Da wir zum Kompilieren den Server nicht wirklich brauchen, bringe ich dpkg bei, dass mysql ordentlich installiert ist, indem ich die dpkg-Datenbank /var/lib/dpkg/status entsprechend korrigiere:

...
Package: mysql-server-5.5
Status: install ok installed      
Priority: optional
Section: database
...

Status: install ok half-configured wird geändert zu Status: install ok installed. Damit apt das auch mitbekommt, fehlt nur noch ein Befehl:

apt-get install

Damit der MySQL-Server im chroot starten kann, muss man entweder die vorhandene Instanz auf dem Hauptsystem beenden, oder einen anderen Port verwenden. Ich konfiguriere hierfür in /etc/mysql/my.cf Port 3307, jeweils unter [mysql_client] und [mysql_server].

2. Paket konfigurieren

Jetzt ändere ich den eigentlichen ./configure Parameter in der Datei /usr/src/php5-5.4.4/debian/rules von –disable-debug in –enable-debug:

...
# enable the hardening wrapper
DEB_BUILD_HARDENING = 1
# but disable PIE
DEB_BUILD_HARDENING_PIE = 0
export DEB_BUILD_HARDENING DEB_BUILD_HARDENING_PIE

COMMON_CONFIG=--build=$(DEB_BUILD_GNU_TYPE) \
                --host=$(DEB_HOST_GNU_TYPE) \
                --sysconfdir=/etc \
                --localstatedir=/var \
                --mandir=/usr/share/man \
                --enable-debug \
                --with-regex=php \
                --disable-rpath \
                --disable-static \
                --with-pic \
                --with-layout=GNU \
                --with-pear=/usr/share/php \
                --enable-calendar \
                --enable-sysvsem \
                --enable-sysvshm \
                --enable-sysvmsg \
                --enable-bcmath \
...
3. Kompilieren

Und jetzt könnten wir das Paket bauen

cd php5-5.4.4/
dpkg-buildpackage -rfakeroot -uc -b

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.