In diesem Artikel beschreibe ich, wie man eine aktuelle Version des XviD-Codecs kompiliert und ein Debian-Paket daraus baut.
Zunächst lädt man sich den Quelltext der aktuellen Version herunter. Ich habe dazu den release tarball Version 1.2.1 benutzt. Man kann natürlich auch eine CVS-Version, bzw. den daily snapshot benutzen.
Die .tar.gz-Datei kopiert man am Besten nach /var/tmp/ – das temporäre Arbeitsverzeichnis unter Linux. Anschließend wird die Datei entpackt. Falls man lieber die CVS-Version benutzen möchte, wechselt man nach /var/tmp/ und lädt mit diesem Befehl den aktuellen snapshot herunter:
cvs -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore
Nun wechselt man in das Verzeichnis /var/tmp/xvidcore/build/generic. Der Build-Vorgang ist Standard:
- configure
- make
- make install
Lediglich bei der CVS-Version muss zu Beginn (also vor ./configure) ./bootstrap.sh ausgeführt werden.
Da am Ende ein .deb-Paket erstellt werden soll, sind noch ein paar Anpassungen notwendig.
Zunächst habe ich festgestellt, dass die Datei “config.sub” fehlt. Als Lösung habe ich diese Datei vom Paket automake benutzt, d.h. erstmal kopiert. Mit locate config.sub kann man feststellen, wo solche Dateien im System vorhanden sind. Falls jemand hierfür eine bessere Lösung gefunden hat, hinterlasse bitte einen Kommentar. Nunja, dies gilt eigentlich grundsätzlich für meinen Blog.
Der erste Schritt: configure. Um ein Paket zu erstellen, müssen die Binärdateien installiert werden. Dies soll allerdings nicht im System geschehen, sondern im Arbeitsverzeichnis. configure bietet hier die Möglichkeit das Ziel mit dem Parameter “prefix” anzugeben. Weiterhin muss die Architektur angegeben werden (zumindest wurde sie bei mir nicht korrekt erkannt). Die bisherigen Schritte:
florian@bugie:/var/tmp$ cd xvidcore/build/generic/
florian@bugie:/var/tmp/xvidcore/build/generic$ cp /usr/share/automake-1.10/config.sub ./
florian@bugie:/var/tmp/xvidcore/build/generic$ ./configure --build=i386-pc-linux-gnu --prefix=/var/tmp/xvidcore/build/generic/libxvidcore4_1.2.1_i386/usr
Sobald der letzte Befehl mit Enter bestätigt wurde, wird der configure-Vorgang gestartet. Er sollte ohne error durchlaufen. Falls ihr einen error bekommt, hoffe ich mal, dass ihr an Hand der Fehlermeldung eine Lösung findet (oder einfach hier nachfragen). Dies gilt auch für die übrigen Schritte.
Die nächsten beiden Schritte sind einfach, können allerdings ein bisschen dauern:
make
make install
Jetzt sollten diese Dateien vorhanden sein:
/var/tmp/xvidcore/build/generic/libxvidcore4_1.2.1_i386/usr/lib
/var/tmp/xvidcore/build/generic/libxvidcore4_1.2.1_i386/usr/lib/libxvidcore.so.4.2
/var/tmp/xvidcore/build/generic/libxvidcore4_1.2.1_i386/usr/lib/libxvidcore.a
/var/tmp/xvidcore/build/generic/libxvidcore4_1.2.1_i386/usr/include
/var/tmp/xvidcore/build/generic/libxvidcore4_1.2.1_i386/usr/include/xvid.h
Und jetzt kann eigentlich nichts mehr schief gehen – XviD ist kompiliert und “installiert”.
Es folgt das Erstellen des .deb-Pakets. Grundlegend hierfür ist die control-Datei. In ihr stehen Informationen wie die Version, Abhängigkeiten, Paketname, etc. Ich habe diese Datei benutzt:
Package: libxvidcore4
Version: 2:1.2.1
Section: libs
Priority: optional
Architecture: i386
Depends: libc6 (>= 2.7-1)
Installed-Size: 1140
Maintainer: Florian Bugiel <blog.bugie.de>
Description: High quality ISO MPEG4 codec library
Xvid is a high quality/performance ISO MPEG4 codec. This package contains
the runtime core library that can be used by various programs (among them
mplayer/mencoder, transcode)
Diese drei Dinge sollen angepasst werden:
- Version
- Installed-Size
- Maintainer
Bei “Version” trägt man die XviD-Version ein, die benutzt wird. Bei mir ist dies “1.2.1″. Allerdings steht bei der Version aus dem Ubuntu-Repository “2:” davor. Damit man einfach aktualisieren kann, kommt ebenfalls “2:” davor. Falls man eine CVS-Version benutzt kann man aktuellere Versionen auf diese Weise durchnummerieren: “2:1.2.1-1″, “2:1.2.1-2″, “2:1.2.1-3″, usw.
“Installed-Size” ist die Größe der installierten Dateien in kb. Hierfür rechnet man einfach die Größen der Dateien in /var/tmp/xvidcore/build/generic/libxvidcore4_1.2.1_i386/usr zusammen.
Der dritte Punkt “Maintainer”: da schreibt ihr euren Namen rein, da ihr das Paket zur Verfügung stellt. 
Nun erstellt man zunächst ein Verzeichnis DEBIAN im Verzeichnis libxvidcore4_1.2.1_i386 und darin die Datei control mit dem besprochenen Inhalt:
mkdir /var/tmp/xvidcore/build/generic/libxvidcore4_1.2.1_i386/DEBIAN
florian@bugie:/var/tmp/xvidcore/build/generic$ cd libxvidcore4_1.2.1_i386/DEBIAN/
florian@bugie:/var/tmp/xvidcore/build/generic/libxvidcore4_1.2.1_i386/DEBIAN$ ls -l
insgesamt 4
-rw-r--r-- 1 florian florian 411 2009-03-06 11:58 control
florian@bugie:/var/tmp/xvidcore/build/generic/libxvidcore4_1.2.1_i386/DEBIAN$
Nach einem Wechsel nach /var/tmp/xvidcore/build/generic wird das Paket mit diesem Befehl erstellt: dpkg --build libxvidcore4_1.2.1_i386
Und fertig ist das XviD-Paket: libxvidcore4_1.2.1_i386.deb
Anmerkung: Ein gutes, englischsprachiges Howto, wie man Debian-Pakete baut, habe ich hier gefunden.