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: 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 Saxman und 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 kaputt und 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:
- APT-Pinning
- http://debiananwenderhandbuch.de/apt-get.html#apt-pinning
- http://wiki.ubuntuusers.de/APT-Pinning
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 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 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: 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: 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 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 bmario, Saxman und yeti
Nützliche Programme
- apt-listbugs - Zeigt kritische Fehler in Paketen vor der Installationen an.
- 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.)
- equivs - Dieses Paket liefert ein Werkzeug zum Erstellen von Debian-Paketen, die lediglich Abhängigkeitsinformationen enthalten.
- etckeeper - Sichert Änderungen am
/etc
-Verzeichnis in einem Versionskontrollsystem.
Links
- Wie man einen Bug Report verfasst.
- Hier das Thema zu dieser Wikiseite im Forum: Diskussion 119365.
Migration abgeschlossen: Dieser Artikel wurde vollständig aus dem alten Wiki migriert. |