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) :
- Initialisieren Sie einige Tools, die zum Erstellen von Paketen verwendet werden.
- Holen Sie sich die Quelle
- Erstellen Sie das Verzeichnis ./debian und füllen Sie es mit den erforderlichen Daten
- 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)]
- 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
- Verwenden Sie dput, um diese Dateien auf Launchpad hochzuladen
- Launchpad führt pbuilder auf seinen Computern aus und generiert Pakete in einer sauberen Umgebung
- 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