====== 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://
|-dists
|-
|-Release
|-
|-binary-
|-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 ======
* {{:it:linux:debian:buildfakedeb.sh.gz|buildfakedeb}}: Tool um leere Debianpakete zu bauen
* [[https://github.com/bkbme/repo | repo.sh]] : Einfachen Shellscript um ein repository zu verwalten.
====== Links ======
* [[http://debiananwenderhandbuch.de/sources.list.html | sources.list Doku]]