Anleitung pbuilder gesucht

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
clue
Beiträge: 943
Registriert: 08.07.2007 17:36:57

Anleitung pbuilder gesucht

Beitrag von clue » 18.11.2011 20:53:15

Ich hab mir jetzt erfolgreich die neuesten Wine Pakete für Squeeze mit Hilfe von pbuilder gebaut. Es hat allerdings nur nach dieser Anleitung geklappt:

http://www.beetzsee.de/content/html/squeeze_wine.html

Dort wird zwingend ein *.dsc vorausgesetzt, welches aber nicht im souce.tar.gz von wineHQ enthalten ist. Ich habe deswegen einfach das fertige *.dsc vom Link in der Anleitung genommen.

Jetzt meine Frage:

Kann man mit pbuilder jedes beliebige source.tar.gz in ein .deb verwandeln, oder muss stets ein .dsc vorhanden sein. Falls ja, wie bekommt man das?
Offenbarung 13 erfüllt sich gerade vor unseren Augen, genießen wir also die letzten Jahre unserer Scheinfreiheit

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Anleitung pbuilder gesucht

Beitrag von syssi » 18.11.2011 21:33:06

Ich kenne nur folgenden kleinen Trick der das Bauen von Paketen im pbuilder enorm erleichtert, vorallem wenn nicht gewaehrleistet ist, dass der Build erfolgreich endet:

Mittels der Option "--bindmounts" lassen sich Verzeichnisse in das chroot mounten. Es ist also moeglich einen Ordner mit Paketquellen in das Chroot zu mounten. Dann startet man den pbuilder nicht mit der Option "--build", sondern "--login". Auf diese Weise wird das Chroot geoeffnet und man findet sich *im* chroot wieder. Dort hangelt man sich zu seinem Bindmount, installiert die Abhaengigkeiten nach, die man zum Build braucht und wirft den Build per Hand an:

Code: Alles auswählen

dpkg-buildpackage -rfakeroot
Bei den gebauten Paketen sollte man im Anschluss drauf achten, dass sie wieder im Buildmount liegen. Nach dem Beenden des pbuilders wird naemlich alles anderen wieder weg geraeumt.

Gruss syssi

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Anleitung pbuilder gesucht

Beitrag von lemak » 18.11.2011 21:38:55

Ich hab mir jetzt erfolgreich die neuesten Wine Pakete für Squeeze mit Hilfe von pbuilder gebaut. Es hat allerdings nur nach dieser Anleitung geklappt:

http://www.beetzsee.de/content/html/squeeze_wine.html

Dort wird zwingend ein *.dsc vorausgesetzt, welches aber nicht im souce.tar.gz von wineHQ enthalten ist. Ich habe deswegen einfach das fertige *.dsc vom Link in der Anleitung genommen.
... so muss dann der Quellcode nicht entpackt werden und pbuilder liest alles aus der .dsc-Datei ein (statt mit pdebuild zu bauen).

* wine-unstable_1.3.24-0.2.dsc
* wine-unstable_1.3.24-0.2.debian.tar.bz2
* wine-unstable_1.3.24.orig.tar.bz2

Das alles ist im Grunde das Debian-Quellpaket (Siehe Quellpaket: http://www.debian.org/doc/debian-policy ... cearchives)
Jetzt meine Frage:

Kann man mit pbuilder jedes beliebige source.tar.gz in ein .deb verwandeln, oder muss stets ein .dsc vorhanden sein. Falls ja, wie bekommt man das?
Das source.tar.gz ist kein Debian-Quellpaket. Nur wenn der Quellcode im source.tar.gz schon fit für Debian ist, also ein ./debian-Verzeichnis enthält sollte es mit pdebuild (auch aus pbuilder) gehen.
Die .dsc-Datei wird dann beim Bau des Debian-Quellpakets erstellt, nebenher zu den Binär-Paketen (http://www.debian.org/doc/debian-policy ... ntrolfiles).

MfG up: Der hofft das ist soweit richtig...
Zuletzt geändert von lemak am 19.11.2011 01:28:47, insgesamt 2-mal geändert.

clue
Beiträge: 943
Registriert: 08.07.2007 17:36:57

Re: Anleitung pbuilder gesucht

Beitrag von clue » 18.11.2011 22:02:53

Also man kann ein source.tar.gz nur mit pbuilder verarbeiten, wenn's bereits ein Debian-Verzeichnis enthält? Das ist jammer schade. Was wenn dem nicht so ist? Dann ist ja pbuilder nur recht eingeschränkt nutzbar. Außer natürlich mit syssis Methode.

@syssi
Ich bin über pbuilder gestolpert, weil ich keine Lust hatte, mein System mit über 200 Paketen vollzumüllen. Kannst Du mir kurz erklären, wie ich pbuilder als vollständige build-Umgebung nutzen kann? Ich bin noch totaler Anfänger ...

@all
Übrigens hatte pbuilder --create mir kein base.tgz erstellt, und dass obwohl keine Fehlermeldung kam. Ich musste erst in der /usr/share/pbuilder/pbuilderrc explizit die gewünschte Distro - Stable - eintragen und den Speicherort ändern. Erst dann hat er mir eine base.tgz erstellt.
Offenbarung 13 erfüllt sich gerade vor unseren Augen, genießen wir also die letzten Jahre unserer Scheinfreiheit

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Anleitung pbuilder gesucht

Beitrag von lemak » 18.11.2011 22:11:46

clue hat geschrieben:Also man kann ein source.tar.gz nur mit pbuilder verarbeiten, wenn's bereits ein Debian-Verzeichnis enthält? Das ist jammer schade. Was wenn dem nicht so ist?
Dann musst du eins erstellen: Siehe Debiandh-make ;-)
@all
Übrigens hatte pbuilder --create mir kein base.tgz erstellt, und dass obwohl keine Fehlermeldung kam. Ich musste erst in der /usr/share/pbuilder/pbuilderrc explizit die gewünschte Distro - Stable - eintragen und den Speicherort ändern. Erst dann hat er mir eine base.tgz erstellt.
Hmm... ohne Fehlermeldung ist ja doof. Könnte mir vorstellen das die DISTRIBUTION-Variable keinen Default-Wert hat.

clue
Beiträge: 943
Registriert: 08.07.2007 17:36:57

Re: Anleitung pbuilder gesucht

Beitrag von clue » 19.11.2011 11:38:24

up hat geschrieben:
clue hat geschrieben:Also man kann ein source.tar.gz nur mit pbuilder verarbeiten, wenn's bereits ein Debian-Verzeichnis enthält? Das ist jammer schade. Was wenn dem nicht so ist?
Dann musst du eins erstellen: Siehe Debiandh-make ;-)
@all
Übrigens hatte pbuilder --create mir kein base.tgz erstellt, und dass obwohl keine Fehlermeldung kam. Ich musste erst in der /usr/share/pbuilder/pbuilderrc explizit die gewünschte Distro - Stable - eintragen und den Speicherort ändern. Erst dann hat er mir eine base.tgz erstellt.
Hmm... ohne Fehlermeldung ist ja doof. Könnte mir vorstellen das die DISTRIBUTION-Variable keinen Default-Wert hat.
Genau genommen war die Variabel auskommentiert. Darum dachte ich ja auch, er würde standardmäßig stable nehmen. Komischerweise hat pbuilder dann ne ganze Reihe Pakete runtergeladen und "installiert" aber dennoch kein base.tgz angelegt. Wie gesagt, erst nachdem ich mich um die Distributionsvariabel gekümmert habe gings.
Offenbarung 13 erfüllt sich gerade vor unseren Augen, genießen wir also die letzten Jahre unserer Scheinfreiheit

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Anleitung pbuilder gesucht

Beitrag von syssi » 19.11.2011 19:25:42

clue hat geschrieben:@syssi
Ich bin über pbuilder gestolpert, weil ich keine Lust hatte, mein System mit über 200 Paketen vollzumüllen. Kannst Du mir kurz erklären, wie ich pbuilder als vollständige build-Umgebung nutzen kann? Ich bin noch totaler Anfänger ...
Also Anfaenger hast du dich da schon sehr tief im Pakete basteln verlaufen. ;-) Ja, pbuilder ist ein sehr schoener Weg Debian-Palete zu bauen, ohne die ganzen build-deps auf seinem Live-System installieren zu muessen. Nehmen wir mal an du findest ein Paket im Repository, in welchem dir ein Feature fehlt, welches zur Compile-Zeit einfach nicht aktiviert wurde. Dann wuerdest du wie folgt vorgehen:

Code: Alles auswählen

apt-get source ffmpeg
apt-get build-dep ffmpeg
cd ffmpeg-x.x.x
vim debian/rules (das Feature aktivieren)
dch -i (Changelog-Eintrag erzeugen, um dein Vorgehen zu dokumentieren)
dpkg-buildpackage -rfakeroot
Anschliessend faellt ein neues Paket heraus, welches dein gewuenschtes Feature enthaelt. Nachteil: Auf deinem System sind nun alle Abhaengigkeiten installiert, die zum Bau notwendig waren.

Schoenerer weg:

Code: Alles auswählen

apt-get source foo
pbuilder --build foo_version.dsc
Was dabei passiert: Du hast im Vorfeld eine Debian-Basisinstallation gebootstrappt. Das macht "pbuilder --create" fuer dich. Diese Installation wird nach dem bootstrappen zusammen gepackt und in eine Ecke gelegt. Immer, wenn du auf die Idee kommst mit dem pbuilder ein Paket zu bauen, dann wird dieses Archiv genommen, entpackt, und die obigen Kommandos in einem Jail gestartet. Die Abhaengigkeiten werden also ein einem "kleinen System" installiert. Danach wird das gewuenschte Pakete gebaut und das Jail wieder gesaeubert. Im Anschluss besitzt du ein fertig gebautes Paket (in einem definierten Verzeichnis) und wieder das Archiv der Minimalinstallation.

Nun koennen wir von diesem automatisierten Build-Prozess aber auch abweichen, indem wir pbuilder mit der Option "login" starten. Dabei wird deine Minimalinstallation entpackt und deine Shell wird ins Jail geworfen. Du kannst du nun also in deiner pbuilder-Installation bewegen, als waere es dein normales System. Dort installierst du Abhaengigkeiten, kannst Software compilieren uvm. Beendest du diese Shell wieder, dann raeumt pbuilder fuer dich auf und *nichts* bleibt uebrig. Deshalb habe ich in meinem letzten Post vom "bindmount" geschrieben, ueber welchen du die Moeglichkeit hast ein Verzeichnis von deiner Festplatte in das Jail zu mounten, so dass du Dateien (zum Beispiel erfolgreiche Builds: Debs) in dieses Verzeichnis kopieren kannst und sie nicht verloren sind, sobald du den pbuilder beendest.

Was aus den letzten Beitraegen klar geworden sein muss: Software (Sourcen) muessen debianisiert sein, damit man sie mit den Debian-Buildtools bauen und zu einem Paket schnueren kann. Das ist die Aufgabe der Paket-Maintainer. Toll ist es natuerlich, wenn man Software-Projekte findet, in welchen ein debian-Verzeichnis existiert und sich aktuellste Version aus einer Versionskontrolle direkt bauen lassen. Dies ist aber leider nur selten der Fall.

Gruss syssi

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Anleitung pbuilder gesucht

Beitrag von lemak » 19.11.2011 19:47:27

Der Vollständigkeit halber noch der Weg mit pdebuild. So gehe ich vor, da der Quellcode von apt-get ja eh schon entpackt wird.

Code: Alles auswählen

apt-get source ffmpeg (apt-get build-dep ist nicht nötig)
cd ffmpeg-x.x.x
editor debian/rules (das Feature aktivieren)
dch -i (Changelog-Eintrag erzeugen, um dein Vorgehen zu dokumentieren)
pdebuild (Anstelle von debuild, dpkg-buildpackage -rfakeroot usw.)

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Anleitung pbuilder gesucht

Beitrag von syssi » 19.11.2011 19:54:12

Cool! Auch ein sehr angenehmer weg.

clue
Beiträge: 943
Registriert: 08.07.2007 17:36:57

Re: Anleitung pbuilder gesucht

Beitrag von clue » 22.11.2011 17:55:35

Danke Euch Beiden für Eure ausführlichen Antworten. Mir gefällt die Idee mit Pbuilder / Pdebuilder sehr gut. Das Einzige, was mich etwas stört, ist dass man auf ein Debian Verzeichnis angewiesen ist. Aber da ich noch über kein source-file gestolpert bin, welches das nicht hat (ich hab nämlich erst eine handvoll versucht zu kompilieren), wird dieser Fall hoffentlich nie eintreten.

Danke an Euch Beide! :THX:
Offenbarung 13 erfüllt sich gerade vor unseren Augen, genießen wir also die letzten Jahre unserer Scheinfreiheit

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22447
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Re: Anleitung pbuilder gesucht

Beitrag von KBDCALLS » 24.11.2011 13:08:08

Ist die Distributionsvariable kommentiert , dann wird ohne weitere Vorkehrungen das base.tgz für unstable erstellt. Entweder man ändert die Variable in der rc Datei von pbuilder oder man gibt pbuilder entprechende Komandozeilenoptionen mit. Als Vorlage kann man ein schon existierenden Debiansource nehmen um an das Debian Verzeichnis zu kommen. Mit uupdate kann man gegebenenfalls einen Source updaten. Neuere Upstream Version ist vorhanden. Nachzulesen im maint-guide Es gibts war eine Deutsche Übersetzung die ist aber nicht mehr aktuell. Für die Grundlagen reichts aber , ansonsten muß man sich durch die Englische wühlen.

Nimmt man übrigens pdebuild dann werden die Pakete und Sourcen gleich signiert. Also muß das angepasst werden.
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

Antworten