====== 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]]