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

54

Chciałbym móc stworzyć pakiet, który sam nie zawiera żadnego kodu ani programów, ale zamiast tego instaluje inne pakiety istniejące w repozytoriach na komputerze, tak jak ubuntu-restricted-extraspakiet?

Thomas Ward
źródło

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

ajmitch
źródło
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