Dovecot Patching mit Debian und Ubuntu

Abstract

Ich teste dieser Tage reichlich die neue Dovecot-Version 2.2.X. Entweder ich kompiliere Dovecot aus seinen Quellen oder ich nutze dazu automatisch erzeugte Pakete und rekompiliere diese dann. Ich möchte diese Methode hier kurz beschreiben, da man sie auch jederzeit auf andere Ubuntu- oder Debian-Pakete anwenden kann.

Ich teste dieser Tage reichlich die neue Dovecot-Version 2.2.X. Entweder ich kompiliere Dovecot aus seinen Quellen oder ich nutze dazu automatisch erzeugte Pakete und rekompiliere diese dann. Ich möchte diese Methode hier kurz beschreiben, da man sie auch jederzeit auf andere Ubuntu- oder Debian-Pakete anwenden kann.

Warning

Die hier gezeigte Methode sollte man nur anwenden, wenn man weiß, was man tut. Grundsätzlich ist es besser, seine Pakete aus den offiziellen Repositories zu installieren!!!

Zuerst sollte man ein apt-get install build-essential durchführen. Wie bereits erwähnt, kann man nachfolgende Methode grundsätzlich auf alle deb-Pakete anwenden, ich nutze Dovecot hier nur zu Demonstrationszwecken.

Man kann also wie folgt vorgehen:

cd /usr/src
mkdir dovecot_2.2.3
cd dovecot_2.2.3

Danach die Sourcen holen:

wget http://xi.rename-it.nl/debian/pool/testing-auto/dovecot-2.2/dovecot_2.2.3-0~auto+0.debian.tar.gz
wget http://xi.rename-it.nl/debian/pool/testing-auto/dovecot-2.2/dovecot_2.2.3-0~auto+0.dsc
wget http://xi.rename-it.nl/debian/pool/testing-auto/dovecot-2.2/dovecot_2.2.3-0~auto+0_amd64.changes
wget http://xi.rename-it.nl/debian/pool/testing-auto/dovecot-2.2/dovecot_2.2.3-0~auto+0_i386.changes
wget http://xi.rename-it.nl/debian/pool/testing-auto/dovecot-2.2/dovecot_2.2.3.orig.tar.gz

Auspacken der Pakete mit dpkg-source -x *.dsc ergibt dieses Resultat:

dpkg-source: warning: extracting unsigned source package (dovecot_2.2.3-0~auto+0.dsc)
dpkg-source: info: extracting dovecot in dovecot-2.2.3
dpkg-source: info: unpacking dovecot_2.2.3.orig.tar.gz
dpkg-source: info: unpacking dovecot_2.2.3-0~auto+0.debian.tar.gz
dpkg-source: info: applying dovecot-HEAD.patch
dpkg-source: info: applying pigeonhole.patch
dpkg-source: info: applying dovecot-drac.patch
dpkg-source: info: applying split-protocols.patch
dpkg-source: info: applying ssl-cert-location.patch
dpkg-source: info: applying fix-mail_plugin_dir-default.patch
dpkg-source: info: applying tcpwrapper.patch

Jetz zum neu erzeugten Unterverzeichnis cd dovecot-2.2.3/ wechseln.

Note

Jetzt könnte man einen Patch einspielen oder eine Option verändern; bei Dovecot möchte ich für gewöhnlich Lucene mit einkompilieren, die Option ist in den heruntergeladenen Quellen nicht berücksichtigt.

Es folgt als z.B:

nano debian/rules

...
--disable-rpath \
--with-lucene \
--with-systemdsystemunitdir=auto \
...

Den Rekompiliervorgang startet man dann mit dpkg-buildpackage -rfakeroot -b.

Note

Je nach Paket wird das Rekompilieren wegen fehlender Abhängigkeiten scheitern. Gewöhnlich kann man dies mit Nachladen der fehlenden Pakete per apt-get lösen, der Rekompiliervorgang ist beliebig wiederholbar.

Am Ende werden die deb-Pakete in /usr/src/dovecot_2.2.3 erstellt.

dpkg-deb: building package `dovecot-core' in `../dovecot-core_2.2.3-0~auto+0_amd64.deb'.
dpkg-deb: building package `dovecot-dev' in `../dovecot-dev_2.2.3-0~auto+0_amd64.deb'.
dpkg-deb: building package `dovecot-imapd' in `../dovecot-imapd_2.2.3-0~auto+0_amd64.deb'.
dpkg-deb: building package `dovecot-pop3d' in `../dovecot-pop3d_2.2.3-0~auto+0_amd64.deb'.
dpkg-deb: building package `dovecot-lmtpd' in `../dovecot-lmtpd_2.2.3-0~auto+0_amd64.deb'.
dpkg-deb: building package `dovecot-managesieved' in `../dovecot-managesieved_2.2.3-0~auto+0_amd64.deb'.
dpkg-deb: building package `dovecot-pgsql' in `../dovecot-pgsql_2.2.3-0~auto+0_amd64.deb'.
dpkg-deb: building package `dovecot-mysql' in `../dovecot-mysql_2.2.3-0~auto+0_amd64.deb'.
dpkg-deb: building package `dovecot-sqlite' in `../dovecot-sqlite_2.2.3-0~auto+0_amd64.deb'.
dpkg-deb: building package `dovecot-ldap' in `../dovecot-ldap_2.2.3-0~auto+0_amd64.deb'.
dpkg-deb: building package `dovecot-gssapi' in `../dovecot-gssapi_2.2.3-0~auto+0_amd64.deb'.
dpkg-deb: building package `dovecot-sieve' in `../dovecot-sieve_2.2.3-0~auto+0_amd64.deb'.
dpkg-deb: building package `dovecot-solr' in `../dovecot-solr_2.2.3-0~auto+0_amd64.deb'.
dpkg-deb: building package `dovecot-dbg' in `../dovecot-dbg_2.2.3-0~auto+0_amd64.deb'.

Man könnte nun in /usr/src/dovecot_2.2.3 ein dpkg -i *.deb durchführen, um diese zu installieren.

Ich habe hier auf eine Verifizierung der Quellen verzichtet, weil ich die erzeugten Pakete nur in einer virtuellen Maschine hinter NAT und Firewall kurzzeitig testen möchte – bitte für Produktionssysteme niemals so vorgehen!

Robert Schetterer, 17. June 2013

   Dovecot    Patch