Jak utworzyć meta-pakiet, który automatycznie instaluje inne pakiety?


Odpowiedzi:


47

Metapakiet taki jak ten można utworzyć za pomocą narzędzia o nazwie, equivs które utworzy pakiet zawierający tylko informacje o zależnościach.

Najpierw utwórz katalog:

mkdir my-metapackage
cd my-metapackage/

Teraz uruchom program:

equivs-control ns-control

Utworzy plik o nazwie ns-control, otwórz ten plik za pomocą edytora tekstu. W wygenerowanym pliku kontrolnym należy zmodyfikować jego linie Dependslub Recommendswiersze, aby były zależne od pakietów, które chcesz zainstalować:

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!

(Tylko przykład, powinieneś podać więcej informacji)

Na koniec zbuduj pakiet, uruchamiając

equivs-build ns-control

Twoja paczka znajduje się pod adresem my-metapackage/my-metapackage_1.0_all.deb.

Jeśli chcesz również utworzyć pakiet źródłowy, --fullmożesz przekazać opcję equivs-buildnp equivs-build --full ns-control. Spowoduje to użycie narzędzia debuild oraz utworzenie plików .dsc i .tar.gz.

Aby utworzyć źródłowy plik .changes, który można przesłać do PPA, wyodrębnij i skompiluj pakiet źródłowy za pomocą

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

Jeśli Maintainer ustawiony w ns-control pasuje do twojego klucza GPG, powinien on skompilować i podpisać plik my-metapackage_1.0_source.changes, abyś mógł zapisać go w swoim PPA


Dzięki wielkie. Najprawdopodobniej przetestuję to później, ale jak dotąd instrukcje zadziałały. :)
Thomas Ward

2
Działa idealnie!
Stefano Palazzo

Dziękuję za odpowiedź, ajmitch, ale tylko z powodów, zamierzam wskazać, że jeśli masz ~/.devscriptsplik i konkretnie zdefiniujesz inny klucz GPG do użycia w pliku devscripts, OTRZYMUJE on proces dpkg / debuild i ma go użyj konkretnego klucza GPG określonego w .devscripts. Tylko jako ostatni punkt w ostatnim zdaniu w swojej odpowiedzi
Thomas Ward

Zauważyłem, że umieszczenie pod pakietami Depends:sprawia, że ​​instalacja jest dobra tylko wtedy, gdy są dostępne; nie instaluje ich, jeśli nie są na moim komputerze. Aby je zainstalować, użyłem Provideszamiast tego i działa jak urok. Zobacz mój kod (właśnie go zmieniłem): github.com/palladius/debian-packages/blob/master/…
Riccardo
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.