Wie erstelle ich eine PPA für ein Arbeitsprogramm?

36

Nehmen wir an, ich habe eine funktionierende Anwendung, die in C, C ++ oder Python geschrieben ist. Ich möchte einen Launchpad-PPA erstellen, damit andere ihn problemlos aus einem Paket installieren können. Bitte geben Sie schrittweise Anweisungen, um dies von Anfang bis Ende zu tun. (Oder geben Sie einen Link an, der dasselbe tut;)

  • Ist die Programmiersprache wichtig? (Könnte es ein Bash-Skript sein?)
  • Muss ich meinem Build etwas hinzufügen?
  • Wohin soll sich der Build installieren?
  • Wie definiere ich Abhängigkeiten?
  • Wie verwende ich Abhängigkeiten?
  • Wie erstelle ich eine .deb?
  • Was muss ich tun, bevor ich auf Launchpad hochlade?
david.libremone
quelle
1
Ich stelle diese Frage, weil ich FLOSS gelegentlich empfehle, eine PPA zu erstellen (damit ich sie problemlos installieren kann :) - Ich möchte sie auf eine gründliche Ressource verweisen oder sie selbst ausführen können.
david.libremone

Antworten:

32

Das ist eine sehr breite Frage. Ich werde versuchen, so viel wie möglich zu beantworten, aber es wird definitiv keine schrittweise Anleitung sein. Dies liegt daran, dass es keinen schrittweisen Algorithmus zum Erstellen eines Pakets gibt. Die Art und Weise, wie Sie dies tun, hängt von vielen Faktoren ab, hauptsächlich von der Art des Pakets (Anwendung, Bibliothek), der Struktur der Quelle und vielen Details.

Zum Glück gibt es eine ausführliche Anleitung unter http://packaging.ubuntu.com

Ich werde versuchen, Ihnen ein wenig dabei zu helfen, den gesamten Prozess zu verstehen, damit Sie sich ein wenig damit auskennen. Das Pakethandbuch enthält Ressourcen für zusätzliche Hilfe.


Zuallererst sollten Sie sich darüber im Klaren sein, dass das Erstellen eines Pakets (einer .deb-Datei) ein anderer Prozess ist als das Erstellen eines PPA. Zum Erstellen eines PPA müssen Sie das Profil Ihres Launchpads aufrufen und auf den Link "Neuen PPA erstellen" klicken. Das ist alles. Es ist geschaffen, es funktioniert, aber es ist leer. Um ein Paket hochzuladen, müssen Sie zuerst ein Paket erstellen. Aber lassen Sie mich zuerst einige Ihrer kleinen Fragen beantworten.

  • Die Programmiersprache spielt keine Rolle. Es kann sich um eine C ++ - Anwendung, ein Bash-Skript, Brainfuck Hello World, eine einzelne README-Datei oder eine Reihe cooler Fotos handeln. Pakete können beliebige Dateien enthalten. Während der Installation wird das Paket in das Stammverzeichnis ("/") Ihres Dateisystems extrahiert. Auf diese Weise können sie einige Dateien in den Ordner "binaries" stellen, einige Hintergrundbilder zum GNOME-Standardsatz hinzufügen oder dem Benutzer ein Bash-Skript zur Verfügung stellen.
  • Sie DO etwas an die Quelle hinzufügen müssen. Es muss ein Verzeichnis der obersten Ebene mit dem Namen "debian" sein. Es gibt einige Dateien mit den Paketdetails - sie werden verwendet, um den Typ des Pakets usw. zu definieren.
  • Abhängigkeiten werden in einer dieser Dateien aufgelistet (unter anderem Details). Woher bekommen Sie sie? Es sind einfach andere Pakete, die Ihre Anwendung verwendet. Der Entwickler der Anwendung wird wissen, welche Bibliotheken und Ressourcen sein Programm benötigt, daher sollte er keine großen Probleme haben, sie aufzulisten.
    • Einige Tools, die zum Erstellen eines Pakets verwendet werden (pbuilder), können die Abhängigkeiten automatisch ausfüllen. Dies hängt wahrscheinlich davon ab, was Ihre App während der Kompilierung benötigt.
  • Es wird auch dringend empfohlen, AutoTools zu verwenden . Das ist eine andere Sache, die Sie möglicherweise hinzufügen müssen, aber wahrscheinlich werden sie bereits von fast jeder Software verwendet. AutoTools ist eine Reihe äußerst hilfreicher Programme - automake, autoconf und autoscan, um nur einige zu nennen. Wenn Sie ein Programm mit der berühmten ./configure && make && make install kompilieren und installieren Anschließend werden die Autotools verwendet, um die Quelle automatisch zu verarbeiten, andere in der Quelle enthaltene Ressourcen für die Installation vorzubereiten und das Ergebnis der Kompilierung an eine geeignete Stelle zu extrahieren (um Ihre Frage zu beantworten: Der Build wird an VIELEN separaten Stellen extrahiert Binärdateien werden nach / usr / local / bin, die Dokumente nach / usr / local / share / docs usw. verschoben. Außerdem werden Binärdateien aus einem Paket auch an andere Stellen verschoben, zB in die Binärdateien nach / usr / bin Verwenden Sie bei diesem komplizierten Verzeichnislayout AutoTools - es kümmert sich automatisch darum, und deshalb sind sie so nützlich.

Das Erstellen eines .deb-Pakets mag sehr kompliziert erscheinen, ist aber nicht so schwierig. Ich kann Ihnen den offiziellen Ubuntu-Leitfaden zum Erstellen von Paketen nur empfehlen: http://packaging.ubuntu.com

Es ist RIESIG, aber Sie werden sehen, dass Sie wahrscheinlich die meisten Teile dieses Textes überspringen können (abhängig davon, welches Paket Sie erstellen werden). Grundsätzlich besteht der Verpackungsprozess aus folgenden Teilen (alle werden im Handbuch klar erklärt) :

  1. Initialisieren Sie einige Tools, die zum Erstellen von Paketen verwendet werden.
  2. Holen Sie sich die Quelle
  3. Erstellen Sie das Verzeichnis ./debian und füllen Sie es mit den erforderlichen Daten
  4. Erstellen Sie das Paket mit debuild. [Damit sollten Sie eine Reihe von Dateien erstellen, einschließlich * .dsc, * _source.build, * _source.changes, die für die Daten des Pakets verantwortlich sind und wie Sie damit umgehen sollen (Sie müssen auch eine Quelle .tar.gz)]
  5. Testen Sie, ob alles funktioniert durch pbuilder lokal ausgeführt (es werden alle diese Dateien nehmen oben erwähnt und versuchen , sie in ein .deb - Paket zu kombinieren, indem sie automatisch die Quelle mit Hilfe von Autotools bauen - das ist , warum sie für die Verpackung von entscheidender Bedeutung sind [offen gesagt - nicht - Sie können ohne sie oder mit einigen Alternativen auskommen, aber das ist der einfachste Ansatz, und für andere ist möglicherweise eine erweiterte Einrichtung erforderlich, da Sie den Builder anweisen müssen, wie der Quellcode erstellt wird (mithilfe der Datei ./debian/rules) ) - aber das ist nichts für Anfänger] ) - wenn du nur ein .deb-Paket haben willst, ist es geschafft.

Jetzt müssen Sie es auf Ihre PPA hochladen , was auf dieser Hilfeseite erklärt wird: https://help.launchpad.net/Packaging/PPA/Uploading

  1. Verwenden Sie dput, um diese Dateien auf Launchpad hochzuladen
  2. Launchpad führt pbuilder auf seinen Computern aus und generiert Pakete in einer sauberen Umgebung
  3. Schließlich sollten die Pakete in der PPA angezeigt werden.

Wie Sie sehen, ist das Erstellen eines PPA nicht so einfach . Aber keine Angst , es ist auch nicht so schwer. Darüber hinaus empfehle ich Ihnen, Entwickler nicht zur Verwendung eines PPA zu ermutigen, da sie Ihnen wahrscheinlich nicht zuhören werden, da sie zusätzliche Arbeit leisten müssten (und wenn sie dies wollten, hätten sie dies bereits getan), aber Sie können Ich möchte versuchen, Ubuntu-Entwickler und die gesamte Community zu unterstützen und ihnen Pakete zur Verfügung zu stellen, die Sie vorbereitet haben :)

Ich wünsche Ihnen viel Glück beim Erstellen von Paketen, hoffe, Sie finden meine Antwort hilfreich :)

Dein Freund, Rafał Cieślak

Rafał Cieślak
quelle
Wie können Sie eine PPA ohne Launchpad erstellen, die auf Ihrer eigenen Infrastruktur gehostet wird? Ist es nur ein einfacher Webserver mit der entsprechenden Verzeichnisstruktur?
Prof. Moriarty
war das brainf * ck beispiel wirklich nötig?
Camden
5
  • Bevor Sie Ihr Paket hochladen können, müssen Sie es für .debdas Packen einrichten. Weitere Informationen finden Sie im Ubuntu PackagingGuide .

  • Sobald Sie ein Paket für Ihre Software erstellen können, lesen Sie die PPA-Dokumentation von Launchpad . Es führt Sie von der Erstellung des PPA bis zum Hochladen Ihres Pakets.

Jesaja
quelle