Wie erstelle ich ein Metapaket, das andere Pakete automatisch installiert?

54

Ich möchte in der Lage sein, ein Paket zu erstellen, das selbst keinen Code oder keine Programme enthält, sondern stattdessen andere Pakete, die in den Repositorys vorhanden sind, auf einem Computer installiert. Wie funktioniert das ubuntu-restricted-extrasPaket?

Thomas Ward
quelle

Antworten:

47

Ein solches Metapaket kann mit einem Tool namens erstellt equivs werden, das ein Paket nur mit Abhängigkeitsinformationen erstellt.

Erstellen Sie zunächst ein Verzeichnis:

mkdir my-metapackage
cd my-metapackage/

Führen Sie nun das Programm aus:

equivs-control ns-control

Es wird eine Datei mit dem Namen erstellt ns-control. Öffnen Sie diese Datei mit Ihrem Texteditor. In der Steuerdatei, die Sie generieren, sollten die Zeilen Dependsoder die RecommendsZeilen so geändert werden, dass sie von den Paketen abhängen, die Sie installieren möchten:

Section: misc
Priority: optional
Standards-Version: 3.9.1

Package: my-metapackage
Version: 1.0   
Depends: openssh-server, gedit
Description: This package installes an ssh server and a text editor
 The Long description of this package ends with a newline!

(Nur ein Beispiel, Sie sollten weitere Informationen hinzufügen)

Und schließlich erstellen Sie das Paket, indem Sie ausführen

equivs-build ns-control

Ihr Paket befindet sich unter my-metapackage/my-metapackage_1.0_all.deb.

Wenn Sie auch ein Quellpaket erstellen möchten, kann die --fullOption übergeben werden equivs-build, z equivs-build --full ns-control. Dabei wird debuild verwendet und es werden auch .dsc- und .tar.gz-Dateien erstellt.

Extrahieren und erstellen Sie das Quellpaket mit, um eine Quelldatei mit der Erweiterung .changes zu erstellen, die Sie auf eine PPA hochladen können

dpkg-source -x my-metapackage_1.0.dsc
cd my-metapackage-1.0
debuild -S

Wenn der Maintainer, den Sie in ns-control festgelegt haben, mit Ihrem GPG-Schlüssel übereinstimmt, sollte er die Datei my-metapackage_1.0_source.changes erstellen und signieren, damit Sie auf Ihre PPA zugreifen können

Ajmitch
quelle
Vielen Dank. Ich werde dies höchstwahrscheinlich später testen, aber bisher haben die Anweisungen funktioniert. :)
Thomas Ward
2
Es funktioniert perfekt
Stefano Palazzo
Danke für die Antwort, ajmitch, aber nur aus Gründen werde ich darauf hinweisen, dass, wenn Sie eine ~/.devscriptsDatei haben und speziell einen anderen GPG-Schlüssel definieren, der in der devscripts-Datei verwendet werden soll, dieser den dpkg / debuild-Prozess AUSSERBRECHEN und haben wird Verwenden Sie den in angegebenen GPG-Schlüssel .devscripts. Dies ist nur ein wichtiger Punkt für den letzten Satz in Ihrer Antwort.
Thomas Ward
Mir ist aufgefallen, dass die Depends:Installation nur dann funktioniert, wenn Pakete vorhanden sind. Es installiert sie nicht, wenn sie nicht auf meinem Computer sind. Um sie zu installieren, habe ich Providesstattdessen verwendet und es funktioniert wie ein Zauber. Siehe meinen Code (habe ihn gerade geändert): github.com/palladius/debian-packages/blob/master/…
Riccardo