Sid

Aus DebianforumWiki
(Weitergeleitet von DebianVersionen/Sid)
Zur Navigation springen Zur Suche springen
Wiki ‹ Grundsatzfragen ‹ Sid


Der Codename für Debians Entwicklungs-Distribution ist Sid, auch unstable genannt. Der Hauptteil der Entwicklungsarbeit in Debian wird in diese Distribution hochgeladen. Die unstable Distribution wird niemals freigegeben, stattdessen verbreiten sich Pakete davon nach testing und dann in ein offizielles Release.

Sid unterliegt gravierenden Änderungen, auch direkten Bibliotheksänderungen. Dies kann ein instabiles (unstable) System zur Folge haben, welches evtl. Pakete beinhaltet die wegen fehlender Bibliotheken nicht installiert werden können, oder Abhängigkeiten die nicht aufzulösen sind usw. Benutzung auf eigene Gefahr. Sid is dangerous ;-)

Paketquellen

Um Debian unstable zu benutzen, genügt es die unstable Quellen in die sources.list aufzunehmen und ein upgrade der installierten Pakete durchzuführen.

deb http://ftp.de.debian.org/debian/ unstable main non-free contrib
deb-src http://ftp.de.debian.org/debian/ unstable main non-free contrib

Gängige Vorgehensweisen bei Problemen in Sid

Hinweis.png Hinweis: Es geht hier nur indirekt um Fehler in der Software, die durch ein Paket bereitgestellt wird.

Ich möchte dich auffordern, soweit du hier etwas hinzufügen oder verbessern kannst, dies auch zu tun und deine Erfahrungen mit anderen zu teilen.


Zuerst: Ich habe mit Sid kaum Erfahrungen (um nicht zu sagen keine) da ich testing nutze. Da man theoretisch jedoch in testing die selben Probleme bekommen könnte wie in Sid, habe ich die Tipps von Benutzer.png Saxman und Benutzer.png yeti dennoch hier zu einem Wiki-Artikel zusammen gefasst.

Anders als in Debian stable, ändert sich in Sid und testing regelmäßig etwas an den Paketen. Kann man ein kaputtes Paket nicht aus Sid installieren, holt man sich eine funktionierende Version aus testing bzw. stable (Vorsicht, hier können alte Bibliotheken mit den aktuellen kollidieren) oder die letzte funktionierende Version aus den snapshots bis das Problem in Sid gelöst wurde. Natürlich steht es auch jedem frei, den jeweiligen Fehler zu suchen und zu beheben. Auch das Schreiben eines Bugreports ist eine gute Idee. Es hilft den Maintainern bei der Fehlersuche.

Ein Paket aus testing/stable installieren und auf hold setzen

Ein Paket, dessen upgrade man verhindern will, weil dadurch etwas kaputt geht, kann man vorübergehend auf einer funktionierenden Version festhalten. Hierzu müssen die entsprechenden Release-Repositories (Paketquellen) in der sources.list stehen. Was unter Sid nicht weiter problematisch sein sollte, da man hier i.d.R. sowieso die höchsten Versionsnummern nutzt (ausgenommen experimental).

Ich verweise ich hier auf die Wikiseite: Pakete auf hold setzen.

APT-Pinning

Wenn etwas dauerhaft kaputt ist, pinnt man es auf testing oder sonst einer Version, der man traut. Als Beispiel sollen hier die Pakete Debianpackage.png kaputt und Debianpackage.png ilsebill auf die Version in testing gepinnt werden.

Dazu muss die sources.list neben den Sid Quellen auch die testing Quellen enthalten:

 deb-src http://ftp.de.debian.org/debian/ sid main non-free contrib
 deb http://ftp.de.debian.org/debian/ sid main non-free contrib
 # testing
 deb http://ftp.de.debian.org/debian/ testing main non-free contrib
 deb-src http://ftp.de.debian.org/debian/ testing main non-free contrib
 deb http://security.debian.org/ testing/updates main contrib non-free
 deb-src http://security.debian.org/ testing/updates main contrib non-free

Das Pinning könnte in der /etc/apt/preferences wie folgt definiert werden:

Explanation: downgrade packages to testing
Package: kaputt ilsebill
Pin: release a=testing
Pin-Priority: 1001

Um nun ein (kaputtes) Paket wieder downzugraden, reicht es aus, das System erneut zu aktualisieren.

Zum Thema APT-Pinning siehe auch die folgenden Wikiseiten:

Paket aus den Snapshots installieren

Gelegentlich kommt es auch vor, dass ein Paket aktualisiert wird, welches es nicht nach testing geschafft hat. Hier kann man die vorhergehende Version auch aus den Snapshots installieren. Damit die Pakete in der gewünschten Version installiert werden, muss das Datum des Snapshots in die Sources.lst genommen werden:

deb http://snapshot.debian.org/archive/debian/20120501T035953Z/ unstable main contrib non-free

Ein Überblick über die vorhandenen Snapshots findet sich hier. Anschließend kann das Paket Debianpackage.png foo in der Version vom genannten Datum installiert werden:

aptitude install foo=Version

Die richtige Version sowie das notwendige Datum vor dem Upgrade findet man mit:

grep "upgrade foo" /var/log/dpkg.log

Es empfiehlt sich anschließend, das Paket entweder auf hold zu setzen oder in der /etc/apt/preferences auf die richtige Version zu pinnen:

Explanation: Paket foo auf eine Version pinnen
Package: foo
Pin: version 5.8*
Pin-Priority: 1001

Aptitude ncurses-Oberfläche

Mit der ncurses-Oberfläche von aptitude lassen sich recht schnell und einfach komplexe Abhängigkeitsprobleme lösen. Dazu eine Step-by-Step Anleitung von Benutzer.png bmario im Forum.

DPkg --force-foo

Läßt sich ein Paket nicht installieren oder deinstallieren, kann man sich des Forcing (Erzwingen) bedienen. Dadurch ist es möglich, sich über die Integritäts- und Richtlinienprüfungen von dpkg hinwegzusetzen. dpkg --force-help erklärt, welche Möglichkeiten es hierzu gibt.

Warnung.png Warnung: Das Anwenden der --force-foo Option kann u.U. die Installation schwer beschädigen und sollte nur in absoluten Ausnahmefällen genutzt werden. Martin F. Krafft weist in seinem Buch Das Debian-System darauf hin, dass es sich mit Forcing um die effektivste Methode handelt, sein Debian-System zu zerstören.


Alternative

Sollen nicht alle Abhängigkeitsprobleme und Versionsabhängigkeitsprobleme in Warnungen umgewandelt werden, wie es die Optionen --force-depends und --force-depends-version von DPkg tun. Kann mit der Option --ignore-depends=PaketA,PaketB die Abhängigkeitsüberprüfung nur für bestimmte, einzelne Pakete ignoriert werden (tatsächlich wird die Überprüfung zwar dennoch durchgeführt, aber es werden nur noch Warnungen über Konflikte ausgegeben). Tipp: Diese Option kann auch in der DPkg-Konfigurationsdatei angeben und permanent gemacht werden.

Eine radikale Alternative kann sein, Pakete einfach ins Verzeichnis / zu entpacken:

dpkg -x foo_1.0-1.deb /
Warnung.png Warnung: Bei dieser Methode werden wirklich alle Schutzmaßnahmen und Installations-Routinen der Paketverwaltung umgangen.


Platzhalter Pakete

Wenn man einen Platzhalter oder etwas in der Art braucht, baut man sich ein Paket:

Methode fleißiger Saubermann

Die Dependenzen (Abhängigkeiten) sauber loswerden, indem man eigene (Meta-)Pakete erstellt, die diese dann nicht verlangen. Das macht aber jedes mal aufs neue Arbeit, wenn das (Meta-)Paket als Update erscheint. Dann muss der Vorgang wiederholt werden.

Methode Kunstschuß von Hinten durch die Bits ins Bein für Faule

Ein Paket bauen, welches vorgibt, die unerwünschte Dependenz bereitzustellen. Es kann diesen Zweck auch gleichzeitig für mehrere solcher Lügen erfüllen. So ein Paket ist schnell erstellt; Sehr einfach geht das z.B mit Debianpackage.png equivs. Bei den meisten Updates des so betrogenen (Meta-)Paketes wird dann keine zusätzliche Arbeit anfallen.

Methode DEBIAN/control manipulieren

Mit einem Packprogramm Pakete öffnen, die DEBIAN/control Datei manipulieren und diese dann mit dpkg installieren. (Was jedoch den Nachteil hat, dass es ggf. bei jedem Upgrade wiederholt werden muss.)

Kaputte Maintainer-Skripte

Was kann man tun wenn die Maintainer-Skripte pre|post-rm|inst|post-inst usw. kaputt sind: In /var/lib/dpkg/info/ die Skripte debuggen/oder einfach erfolgreich beenden mit exit 0 oder debuggen z.B. mit set -x.

Fazit

Im Ganzen ist es eher ein kreatives Jonglieren mit den Werkzeugen, das die Kiste unter Sid beherrschbar macht, wenn der Wind mal was rauer ist.

Vielen Dank an Benutzer.png bmario, Benutzer.png Saxman und Benutzer.png yeti

Nützliche Programme

  • Debianpackage.png apt-listbugs - Zeigt kritische Fehler in Paketen vor der Installationen an.
  • Debianpackage.png apt-listchanges - Zeigt Änderungen in neuen Paketversionen an. (Mit which=both in /etc/apt/listchanges.conf, bekommst du neben neuen News- auch Changelog-Einträge angezeigt.)
  • Debianpackage.png equivs - Dieses Paket liefert ein Werkzeug zum Erstellen von Debian-Paketen, die lediglich Abhängigkeitsinformationen enthalten.
  • Debianpackage.png etckeeper - Sichert Änderungen am /etc-Verzeichnis in einem Versionskontrollsystem.

Links

Migriert.png Migration abgeschlossen: Dieser Artikel wurde vollständig aus dem alten Wiki migriert.