Jak korzystać z lokalnych plików .deb w kompilacjach programu pbuilder?

9

Często muszę tworzyć pakiety, od których zależy inny pakiet (tj. Zależności kompilacji). Zamiast wszystkich tych pakietów najpierw budować w moim ppa (co może czasem zająć trochę czasu), chciałbym użyć katalogu wyników z pbuildera jako źródła samego pbuildera.

W jaki sposób mogę to zrobić? Czy mogę to zrobić za pomocą haka?

txwikinger
źródło

Odpowiedzi:

5

Możesz umieścić je w prostym repozytorium utworzonym za pomocą pakietów dpkg-scan i udostępnić za pośrednictwem apache. Następnie zaktualizuj apt config budowniczego, aby użyć repozytorium.

Dennis Kaarsemaker
źródło
3
Zobacz także wiki.ubuntu.com/PbuilderHowto#Building With Local Packages. Nie jestem pewien, czy ich przykład OTHERMIRROR w stosunku do lokalnego systemu plików działa od razu. Podjąłem łatwą drogę użycia ścieżki localhost do mojego dodatkowego repozytorium pakietów.
andol
6

Można to zrobić na kilka sposobów. Jak wspomniano przez adol, wiki Ubuntu ma dobry przykład, jak to zrobić, tworząc lokalne repozytorium z mini-deinstalacją i dodając je do konfiguracji pbuildera. Działa również odpowiedź Dennisa na temat używania pakietów dpkg-scanpackages.

Ostatnio robiłem to z apt-ftparchive. Lubię to podejście, ponieważ uważam je za bardzo lekkie. Oto przykład tego, co robię z adnotacjami:

# From my ~/.pbuilderrc file

# Location of the dir where you keep pbuilder hook scripts.
HOOKDIR="/home/andrew/.pbuilder-hooks"

# Path to your local repo to be used as a mirror written as apt source line.
OTHERMIRROR="deb file:///home/andrew/pbuilder/local_repo ./"

# Path to your local repo. This tells pbuilder to mount this directory so it is available in the chroot.
BINDMOUNTS="/home/andrew/pbuilder/local_repo"

# As we need to have the apt-ftparchive command, we need to insure this package is installed.
EXTRAPACKAGES="apt-utils"

Potrzebujesz również haka dla pbuildera:

# From my ~/.pbuilder-hooks/D5update-local-repo file

# Path to the local repo.
LOCAL_REPO="/home/andrew/pbuilder/local_repo"

# Generate a Packages file.
(cd $LOCAL_REPO ; apt-ftparchive packages . > Packages)

# Update to include any new packages in the local repo.
apt-get update

Teraz wszystko, co musisz zrobić, to wrzucić pakiety do lokalnego repozytorium i będą one dostępne dla pbuildera. Jeśli próbujesz łańcuchowo zbudować ciąg zależności, możesz zmusić cię do budowania katalogu wyników jako lokalnego katalogu repo.

Prawdopodobnie możesz sobie wyobrazić inne warianty tego. Na przykład możesz użyć dput z poleceniem post_upload_, aby wygenerować plik Packages zamiast używać hooka.

Ta strona wiki Debiana może być również pomocna.

andrews coś
źródło
1
Plik przechwytujący musi zostać wywołany D05...(liczba dwucyfrowa) i musi być wykonywalny. Również (przynajmniej przy użyciu pbuilder-dist) po dodaniu dodatkowego pakietu apt-utils, musisz zadzwonić pbuilder-dist <dist> update --override-configraz. Również ponownie w przypadku pbuilder-dist musisz ustawić OTHERMIRROR jako zmienną środowiskową, ponieważ przesłania ustawienie pliku konfiguracyjnego.
BubuIIC