Ich möchte ein brandneues Deb-Paket erstellen, um eine Reihe von Dateien zu installieren. Wenn möglich, möchte ich den Ordner, der diese Dateien enthält, im Rahmen der Installation in einen bekannten Ordner entpacken. Andernfalls sind einige Kenntnisse zum Packen der Quellordner und -dateien sehr hilfreich.
Die Frage ist - ist das möglich und wenn ja - wie?
Geben wir ein Beispiel:
~/mypluginfolder/
Enthält die Dateien x
, y
einen aufgerufenen Unterordner abc
und innerhalb dieser eine andere aufgerufene Datei z
.
Ich möchte diesen Ordner tarieren: tar -cvf myfiles.tar ~/mypluginfolder
Ich gehe davon aus, dass mein Debian-Paket so aussehen würde
myfiles.tar.gz
myfiles+ppafoss_0.1-1/
myfiles.tar
DEBIAN
changelog, compat, control, install, rules source
Ist es myfiles.tar
zum Beispiel möglich, einen bekannten Ordner zu entpacken?
/usr/share/rhythmbox/plugins/
Das Endergebnis wäre also:
/usr/share/rhythmbox/plugins/mypluginfolder
/usr/share/rhythmbox/plugins/mypluginfolder\x
/usr/share/rhythmbox/plugins/mypluginfolder\y
/usr/share/rhythmbox/plugins/mypluginfolder\abc\z
Wenn - vorausgesetzt, dass das Launchpad Quellcode benötigt, wird nach Rat gefragt, wo ich die Quellordner und -dateien in die Struktur des deb-Pakets ablegen soll.
Dies wird schließlich zu einer Reihe von einzelnen Launchpad-PPA-Paketen.
Was ich bevorzuge (aber möglicherweise nicht erreichen kann ...), ist, meine Verpackung auf ein Minimum zu beschränken - erstelle eine Reihe von Paketen aus einer Vorlage und passe das absolute Minimum an (Änderungsprotokoll usw. + Struktur der TAR-Datei / Datei & Ordner). .
quelle
Antworten:
Im Folgenden gehe ich davon aus, dass die Quelle offen ist (z. B. Python-Skripte), die daher nicht an eine Architektur gebunden sind (z. B. amd64 oder i386), daher "all". Wenn Sie eine C-Quelle haben, müssen Sie diese
Architecture: amd64 i386
in Ihrer Quelldateicontrol
verwenden.Erstellen eines Pakets für Launchpad
Launchpad akzeptiert nur Quellpakete. Erstellen Sie daher ein
rules
, das die Dateien an den richtigen Stellen installiert. Der Einfachheit halber benutze ich debhelper . Das Verzeichnis mit Ihren Dateien sollte wie folgt aussehen:Eine
debian/copyright
Datei kann auch nützlich sein, um Benutzer über die mit dem Paket verknüpften Lizenzen zu informieren. Ich glaube nicht, dass Sie einpostinst
Skript benötigen, da Sie nur einige Dateien extrahieren müssen.compat
sollte den Debhelper-Kompatibilitätslevel enthalten, sagen Sie "8". ( Weitere Informationen finden Sie auf der Handbuchseite von debhelper. )Die
changelog
Datei kann mit demdch
Befehl bearbeitet werden, der imdevscripts
Paket enthalten ist. Derrules
(mit debhelper) sollte enthalten:Machen Sie es ausführbar mit
chmod 755 debian/rules
. Ein Quellpaket kann mit erstellt werdendebuild -S
. Stellen Sie sicher, dass Sie sich in einem Verzeichnis mit dem Namen befinden<package-name>-<version>
. Weitere Informationen zumoverride_
Verhalten und zumdh
Befehl finden Sie auf der entsprechenden Manpage .Der Debian New Maintainers 'Guide war für mich sehr wertvoll, um dies zu verstehen. Es wird empfohlen, ihn zu lesen. Beispielverpackungen finden Sie unter https://github.com/Bumblebee-Project/bumblebee-ppa .
Erstellen eines Pakets aus einem vorhandenen Dateibaum
dpkg-deb -b
kann zum Erstellen von Tarballs aus einem vorhandenen Dateibaum verwendet werden. Beginnen Sie zunächst mit der Erstellung eines Verzeichnisses, das nach Ihrem Paket benannt werden soll. Ich gehe davon aus, dass Sie es benennenmyplugin
und einfügen möchten/usr/share/rhythmbox/plugins/mypluginfolder
. Erstellen Sie außerdem dasDEBIAN
Verzeichnis (in Großbuchstaben!) Zum Speichern von Paketinformationen:Kopieren Sie über Ihre Dateien:
Als nächstes benötigen Sie eine sogenannte Steuerdatei , in
myplugin/DEBIAN/control
der das Paket beschrieben wird. Der Inhalt einer solchen Datei ist nachfolgend aufgeführt:Jetzt können Sie optional den Inhalt Ihres Pakets überprüfen. Der nächste Befehl listet den Inhalt der Datei- und Verzeichniseinträge auf
myplugin
:Wenn Sie zufrieden sind, erstellen Sie das Paket im aktuellen Verzeichnis:
Eine neue Datei mit dem Namen wie
<package>_<version>_<architecture>.deb
in diesem Beispiel wird angezeigtmyplugin_1.0-1_all.deb
. Mit demless
Programm können Sie einen Blick in die Datei werfen. Zum Beispielless myplugin_1.0-1_all.deb
.quelle