Debian Packaging
…rund um die Debian Paketverwaltung…
/etc/apt/sources.list
deb uri distribution [component1] [component2] [...]
Beispiel:
deb ftp://ftp.debian.org/debian stable main
Wesentliche Punkte:
- Über das Feld „distribution“ wird die Version eingestellt, die installiert werden soll
- Das Feld „component“ ist optional
Repository
Struktur
http://<uri> |-dists |-<distribution> |-Release |-<component> |-binary-<architecture> |-Packages.gz
Die Ablage von den deb-Pakete selbst ist beliebig; sie sind in der Packages-Datei vermerkt.
Release-Datei
Origin: company Label: repo-server Codename: experimental (<- distribution) Architecture: i386 Components: main (<- componenten, kommagetrennt) Version: 1.0
Die Release-Datei ermöglicht apt-pinning.
apt-pinning
/etc/apt/preferences.d/test:
Package: * Pin: release o=company,n=experimental,c=main Pin-Priority: 1001
Dies führt dazu, dass die Pakete aus unserem Repo ggü. denen in den anderen (den offiziellen z.B.) bevorzugt werden. Eine Pin-Priority von mehr als 1000 führt dazu, dass auch ein Downgrade auf die letzte Version in unserem Repo gemacht wird.
Beispiel
- Es ist das Paket „joe“ in der Version „3.7-2“ auf dem System installiert.
- Wir bieten in unserem Repo „joe“ in der Version „3.5-1“ an, weil die uns besser gefällt
- Nach dem Hinzufügen unseres Repos und dem Pinning-Eintrag wird beim Ausführen von
apt-get install joe
die Version „3.5-1“ aus unserem Repo installiert.
Verhalten
- In einer Distributions/Komponenten Kombination können mehrere Versionen des gleichen Pakets enthalten sein.
- apt-get möchte immer gerne die letzte Version eines Pakets installieren.
- Versucht man (z.B. über Anhängigkeiten) die Installation eines Pakets zu erzwingen, dass älter als die installierte Version ist, so schmeißt apt-get hin und sag „So nicht!“.
- Mittels aptitude kann nach einer Lösung gesucht werden und so dass „ältere“ Paket installiert werden.
UC-001
Beschreibung
Version a > b eines Pakets ist installiert. Es soll Version b über eine Abhängigkeit eines 3. Pakets installiert werden.
UC-002
Beschreibung
Über ein Wurzelpaket sollen die Abhängigkeiten aus dem Server-repo exportiert werden, so dass nur die notwendigen Pakete enthalten sind. Das Exportieren soll in ein lokales repo erfolgen, damit auch Clients ohne Internetanbindung geupdatet werden können.
Tools
- buildfakedeb: Tool um leere Debianpakete zu bauen
- repo.sh : Einfachen Shellscript um ein repository zu verwalten.