Ich habe seit einiger Zeit an einem simplen Ports-artigem Paketbausystem gearbeitet, welches sich sehr grob an den FreeBSD Ports und dem Arch-pkgbuild-System orientiert. Und das wollte ich hier mal vorstellen.
Die Idee ist, mit einfachen make-Kommandos Debian-Pakete zu erstellen, wahlweise mit oder ohne der Hilfe einer pBuilder-chroot-Umgebung. Da Ubuntu-Pakete eigentlich immer recht aktuell sind und es ja auch noch Launchpad gibt, ist das ganze in erster Linie für proprietäre, vorkompilierte und/oder generell nicht-freie Software gedacht. Aber auch zum kompilieren von Multimedia-Programmen wie FFmpeg mit eingebetteten Libav-Bibliotheken ist das ganze geeignet, sodass man die Bilbiotheken auf seinem System bei einer Installation nicht überschreiben muss. Oder wenn man von bestimmten Programmen die sehr aktiv entwickelt werden immer die neueste Version möchte.
https://github.com/darealshinji/debian-packaging
Die Benutzung ist sehr einfach. In das Verzeichnis seiner Wahl wechseln und make
ausführen. Es werden dabei die Mindestabhängigkeiten wie zB pbuilder überprüft. Zusätzliche Abhängigkeiten zum herunterladen oder entpacken wie git oder unzip werden gegebenenfalls auch überprüft. Dann wird einmalig eine separate pBuilder-Umgebung eingerichtet (kann eine Weile dauern), eine eventuell vorhandene base.tgz-Datei wird also nicht überschrieben.
Wenn man das Überprüfen überspringen möchte, kann man das mit make DEPS=0
.
Falls man ohne pBuilder bauen möchte kann man das mit make PBUILDER=0
.
Hinweis: Der Bau von Programmen die es nur für i386-Systeme gibt schägt hiermit auf amd64-Architekturen fehl.
Die fertigen Pakete werden im Heimverzeichnis in den Ordner "buildresult" kopiert.
Die Kommandos make clean
und make distclean
funktionieren ebenfalls. Auf ein make install
habe ich bewusst verzichtet. Die gebauten Pakete müssen nachher also manuell installiert werden (zB über sudo gdebi paketname.deb
).
Hier zwei Beispiele, wenn man das ganze mal mit kleinen Programmen auf die Schnelle testen möchte:
1 2 3 4 5 | # Paket aus Quellcode bauen cd devel/yasm && make # Vorkompilierte Binärdatei paketieren cd video/divx265 && make |
Probleme/TODO:
Das Abfragen der Abhängigkeiten ist momentan noch recht langsam.Baut man ohne pBuilder, werden die eigentlichen Bauabhängigkeiten nicht überprüft.Manchmal ist der Build-Log unvollständig.
Pakete werden momentan nur für die Architektur die man benutzt gebaut. D.h. wenn man ein amd64-System benutzt, werden auch Programme die es nur für i386 gibt als amd64-Pakete gebaut (die passenden 32-Bit-Bibliotheken müssen dann vorher als Abhängigkeiten mit angegeben werden und werden nicht automatisch ermittelt).
Um Spiele zu paketieren, welche die Unity-Engine verwenden, habe ich ein separates Skript geschrieben: http://forum.ubuntuusers.de/topic/skript-um-unity-engine-spiele-zu-paketieren/
Moderiert von tomtomtom:
Aus dem Supportbereich verschoben, da kein Supportthema.