Jak sprawić, by pakiet Debian wygenerował dwa pakiety, biorąc pod uwagę archiwum źródłowe?

14

Pakuję coś do mojego PPA. Źródło źródłowe to .tar.gzarchiwum oparte na Makefile.

Ponieważ ten pakiet zawiera znaczną ilość danych niezależnych od architektury, rozsądne byłoby, aby skrypty kompilacji generowały dwa pakiety:

  • pakiet
  • pakiet -data

Jak mogę to skonfigurować? Zedytowałem controlplik Debian , aby wygenerować dwa pakiety, ale nie mam pojęcia, jak uzyskać odpowiednie pliki do odpowiedniego pakietu.

Ponieważ wszystkie pliki danych są obecnie instalowane za pośrednictwem Makefile, jestem tutaj trochę zagubiony.

Nathan Osman
źródło

Odpowiedzi:

14

To miejsce, w którym zawsze brakowało mi dokumentacji. Prawie nauczyłem się, jak to działa, patrząc, jak to się dzieje w innych pakietach. Podobnie jak w przypadku większości rzeczy w pakiecie Debiana, istnieje kilka sposobów, aby to zrobić. Uważam, że najprostszym sposobem jest użycie debian/package.installplików. Oto przykład pakietu, nad którym pracowałem, wyobraźni (gałąź bzr) .

Najpierw musimy utworzyć pakiet w debian/control. Teraz są trzy zwrotki. Jeden dla pakietu źródłowego i jeden dla każdego pakietu binarnego. Zauważ, że pakiet foo-data powinien być Architecture: all. Zauważ też, że wyobraźnia zależy od imagination-common (= ${source:Version}).

Następnie tworzymy debian/imagination.installplik. Zawiera określone pliki lub ścieżki, które chcemy skończyć w pakiecie wyobraźni. Do tego pakietu potrzebujemy wszystkich plików zależnych od architektury. Plik pulpitu jest dołączany, jak trzeba powiedzieć, do pliku binarnego, który wywołuje w swojej Exec:linii.

usr/bin/
usr/lib/
/usr/share/applications/imagination.desktop

Musimy utworzyć debian/imagination-common.installplik. Będzie zawierać wszystkie niezależne od architektury pliki, obrazy, tłumaczenia, dokumenty i tym podobne.

/usr/share/doc/
/usr/share/icons/
/usr/share/imagination/
/usr/share/locale/

man dh_install opisuje, co się tutaj właściwie dzieje:

może masz duży pakiet, który tworzy wiele pakietów binarnych. Możesz użyć poprzedzającego pliku Makefile, aby zainstalować wszystko w debian / tmp, a następnie użyć dh_install, aby skopiować stamtąd katalogi i pliki do odpowiednich katalogów budowania pakietów.

„Właściwe katalogi kompilacji pakietów” oznacza, że ​​pod koniec procesu kompilacji znajdzie się wszystko, co znajdzie się w wynikowym foo.debpliku src/debian/foo. Pliki, które znajdą się w, foo-data.debzostaną znalezione w src/debian/foo-data. Ponieważ debian/rulesjest to po prostu plik Makefile, możesz zacząć wyobrażać sobie inne sposoby uzyskania tego samego rezultatu.

andrews coś
źródło
Dziękuję bardzo! Bardzo jasne wyjaśnienie i działa idealnie.
Nathan Osman,