Wie kann ich lokale .deb-Dateien in meinen pbuilder-Builds verwenden?

9

Oft muss ich Pakete erstellen, von denen ein anderes Paket abhängt (dh Abhängigkeiten erstellen). Anstatt all diese Pakete zuerst in meinem ppa zu erstellen (was manchmal einige Zeit dauern kann), möchte ich das Ergebnisverzeichnis von pbuilder als Quelle für den pbuilder selbst verwenden.

Wie kann ich das machen? Kann ich das über einen Haken machen?

txwikinger
quelle

Antworten:

5

Sie können sie in ein einfaches Repo stecken, das mit dpkg-scanpackages erstellt wurde, und dieses über Apache verfügbar machen. Aktualisieren Sie dann die apt-Konfiguration von pbuilder, um Ihr Repo zu verwenden.

Dennis Kaarsemaker
quelle
3
Siehe auch wiki.ubuntu.com/PbuilderHowto#Building With Local Packages. Ich bin mir nicht sicher, ob das OTHERMIRROR-Beispiel für ein lokales Dateisystem sofort funktioniert. Ich habe den einfachen Weg eingeschlagen, einen localhost- Pfad für mein zusätzliches Paket-Repo zu verwenden.
Andol
6

Dies kann auf verschiedene Arten erfolgen. Wie von adol erwähnt, bietet das Ubuntu-Wiki ein gutes Beispiel dafür, indem Sie ein lokales Repository mit Mini-Dinstall erstellen und dieses Ihrer pbuilder-Konfiguration hinzufügen. Dennis 'Antwort zur Verwendung von dpkg-scanpackages funktioniert ebenfalls.

Ich habe das kürzlich mit apt-ftparchive gemacht. Ich mag diesen Ansatz, da ich ihn sehr leicht finde. Hier ist ein kommentiertes Beispiel für meine Arbeit:

# 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"

Sie benötigen auch einen Pbuilder-Hook:

# 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

Jetzt müssen Sie nur noch die Pakete in Ihrem lokalen Repo ablegen und sie stehen pbuilder zur Verfügung. Wenn Sie versuchen, eine Reihe von Abhängigkeiten zu verketten, können Sie das pbuilder-Ergebnisverzeichnis zu Ihrem lokalen Repo-Verzeichnis machen.

Sie können sich wahrscheinlich andere Variationen vorstellen. Beispielsweise könnten Sie dput mit einem post_upload_command verwenden, um die Packages-Datei zu generieren, anstatt den Hook zu verwenden.

Diese Debian-Wiki-Seite könnte ebenfalls hilfreich sein.

andrewsomething
quelle
1
Die Hook-Datei muss aufgerufen werden D05...(zweistellige Nummer) und ausführbar sein. Auch (zumindest bei Verwendung von pbuilder-dist) müssen Sie nach dem Hinzufügen des zusätzlichen Pakets apt-utils pbuilder-dist <dist> update --override-configeinmal aufrufen . Und auch bei pbuilder-dist müssen Sie den OTHERMIRROR als Umgebungsvariable festlegen, da er die Einstellung der Konfigurationsdatei überschreibt.
BubuIIC