Kompilieren und Paketieren von Programmen - quick & dirty
Kompilieren und Paketieren von Programmen - quick & dirty
Lizenz: Dieser Artikel wurde als problematisch in Bezug auf der Lizenz markiert, dafür kann es verschiedene Gründe geben:
Bitte hilf mit alle diese Fragen zunächst zu klären, danach kann dieser Hinweis entfernt werden. |
Häufig stolpert man über Programme, die nicht in der offiziellen Distribution enthalten sind, oder es werden neue Versionen einer Applikation veröffentlicht, mit genau dem neuen Feature auf welches man schon seit langem wartet. Manche Software-Entwickler bieten Debian-Pakete auf ihren Homepages an, manche Programme werden von Dritten angeboten. Hilfreich ist hier http://www.apt-get.org.
Wenn sich kein Debian-Paket auftreiben lässt, man aus Sportsgeist oder sonstigen Gründen ohnehin selbst kompilieren möchte, gilt immer: Bevor man irgend etwas installiert, kompiliert oder paketiert, werfe man einen Blick in die readme- und install-Dateien, das doc-Verzeichnis des Sourcecodes und in eventuell vorhandene Dokumentationen auf der Homepage des Programms, in Mailinglisten etc.
Die hier gezeigte Vorgehensweise ist schnell dreckig, was für den lokalen Gebrauch kein Problem ist.
Paketierumgebung installieren
Zuerst richtet man eine passende kompilier und paketier-Umgebung ein. Als allernötigste Pakete sind zu installieren:
Also über die Paketverwaltung:
root@debian:~# apt-get install dh-make fakeroot build-essential
Quellen holen und Vorbereiten
Wenn nicht schon geschehen, entpackt man die Quellen und wechselt in das entsprechende Verzeichnis. Überprüft, ob es ein Debian-Verzeichnis gibt. In diesem Verzeichnis befinden sich Informationen, die für configure, das Kompilieren sowie das Erstellen des Paketes notwendig sind. Manche Entwickler liefern bereits ein entsprechenden Verzeichnis mit (z. B. mplayer). Falls nicht, erstellt man dieses mit:
user@debian:~$ dh_make -s -r
Hier wird der nötige single Modus gewählt und die original Quellen gesichert.
Möchtet ihr ./configure Parameter mitgeben, editiert die Datei debian/rules.
Paket bauen
Ist soweit alles erledigt, kann man den eigentlichen Vorgang starten:
user@debian:~$ fakeroot debian/rules binary
Besonders bei umfangreicheren Programmen ist es recht wahrscheinlich, dass configure mit der Meldung abbricht, dass benötigte Bibliotheken oder Applikationen nicht gefunden werden können. Bestes Beispiel ist das kompilieren von KDE-Programmen. Hier muss die configure-Zeile in debian/rules auf die richtigen Pfade angepasst werden.
Oft sind die entsprechenden libs bzw. Programme nicht installiert. Hierbei hilft z.B. apt-cache.
Neben der Anpassung der debian/rules bezüglich benötigter Bibliotheken besteht auch noch die Möglichkeit, stattdessen wie gewohnt configure und make aufzurufen und erst im Anschluss daran fakeroot debian/rules binary. Da die Binarys bereits erstellt wurden, müssen die Sourcen nicht erneut kompiliert werden und in der fakeroot-Umgebung fehlende Pfadangaben verhindern nicht die Erstellung des Pakets. Zu beachten ist allerdings, daß hierbei Optionen aus debian/rules nicht zum Tragen kommen. Insbesondere bezüglich der Pfade (--prefix) gelten also die Defaulteinstellung oder die manuell an configure übergebenen.
Paket installieren
Wenn der Vorgang ohne weitere Fehler durchläuft, liegt das fertige Paket eine Verzeichnisebene höher. Also root werden, und installieren:
root@debian:~# dpkg -i ../paketname.deb
Wichtig: wie schon Anfangs erwähnt, das war recht schnell und schmutzig. Wie man Pakete korrekt nach Debian-Art erstellt steht im Debian New Maintainers Guide nachzulesen: http://www.debian.org/doc/devel-manuals#maint-guide.
Das englische Orginal dieses Tipps findet sich im FAQ-Bereich von http://debian.consistencies.net.
- Ergänzung
- Da schon in der Überschrift von quick & dirty die Rede war, möchte ich hier das Programm checkinstall erwähnen. Damit lassen sich auch deb Pakete bauen, sehr automatisiert, jedoch ohne Abhängigkeiten, etc.
- Ergänzung2
- Um die benötigten Library Pakete, welche beim kompilieren benötigt werden, automatisch zu installieren kann das Tool auto-apt verwendet werden. Dieses kleine Helferlein läd bei Bedarf die von einem beliebigen Programm benötigten .deb's automatisch nach. Weitere Infos unter: selflinux (APT Howto)
Links
http://debian.consistencies.net/faq.html
http://www.debian.org/doc/devel-manuals#maint-guide