Das Debian Paketmanagement löst nicht nur Abhängigkeiten auf und beachtet diese, sondern ist im Grunde auch dafür zuständig, daß der Benutzer grundsätzlich ein lauffähiges System auf dem Rechner hat.

Inhaltsverzeichnis

  1. Informationen
  2. Konflikte
  3. Weblinks

Informationen

Informationen legt dpkg in dem Verzeichnis /var/lib/dpkg ab. Z.B. die Datenbank "available" der verfügbaren Pakete - und "status", das den Installationsstatus anzeigt. Sollten diese Daten kaputt sein, kann man diese teilweise wieder mit De Kopien ("*-old") wieder herstellen. Allerdings sind dann die Informationen nicht mehr korrekt. /!\ Wer hier zuschlägt sollte unbedingt Sicherungskopien der vorhandenen Daten behalten!

Konflikte

Das spezielle Problem, das hier geschildert wird ist, dass der Benutzer einen MailServer (Mail Transport Agent, MTA ) lokal installiert hat (also nicht als Debian-Paket) installiert hat. dpkg war jetzt der Meinung, das das Sytem nicht lauffähig, weil kein MTA installiert war (also eine Paketabhängigkeit nicht gelöst werden konnte).

Das Paketsystem stellt sicher, daß ein Programm auf alles zugreifen kann, was es braucht. Ein MUA braucht einen MTA, also muß immer ein Paket installiert sein, das ein "Provides: mail-transport-agent" liefert. Da es für den Betrieb (und für den Normaluser) nicht sinnvoll ist, mehrere MTAs gleichzeitig installiert und am laufen zu haben, machen die MTA Pakete folgendes:

Provides: mail-transport-agent
Conflicts: mail-transport-agent

So kann kein zweiter MTA installiert werden, solange ein anderer schon installiert ist.

Das hat mit dem MTA nichts zu tun, sondern mit dem Prinzip des Paketsystems. dpkg soll sicherstellen, daß man immer ein funktionsfähiges System hat. Das Problem wirst du auch haben, wenn du z.B. info2www installieren willst, und einen selbst kompilierten Webserver hast. Dpkg schlägt dann apache zur Installation vor.

'dpkg' kann nichts über selbst gebaute Programme wissen.

Nun gibt es das Paket *equivs,* welches Dummy Pakete mit diesen Dependency Informationen herstellen kann. Damit kann man dpkg solche lokalen Programme "unterschieben". Installier dir die Version aus Potato (oder etwas aktueller aus ftp://134.95.210.54/pub/debian/equivs/). Du brauchst dann ein Control File:

$ cat mail-transport.ctl
Package: mta-local
Section: mail
Provides: mail-transport-agent
Conflicts: mail-transport-agent
Description: My local MTA
A package with just provides mail-transport-agent for
my local MTA.

$ make-equivs mail-transport.ctl

erstellt dann ein Dummypaket mta-local_1.0_all.deb. Jetzt geht es mit etwas sanften Druck auf dpkg weiter (es ginge über zwei Zwischenschritte auch ohne -force, aber du scheinst dich vor sowas nicht zu fürchten).

dpkg --force-conflicts -i mta-local_1.0_all.deb
dpkg --purge smail

Dann aktivierst du deinen MTA in /usr/local/ und bist fertig.

dpkg/Interna (zuletzt geändert am 2007-12-23 22:45:54 durch localhost)