<< Back to man.lupaworld.com


[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ weiter ]

Debian-Referenz
Kapitel 6 - Debian-Paketverwaltung


Um die Netzlast in den Debian-Archiven zu reduzieren, sollten Sie einen lokalen HTTP-Proxy mit squid für das Herunterladen von Paketen mittels APT einrichten. Wenn nötig muss die http_proxy-Umgebungsvariable oder der http-Wert in /etc/apt/apt.conf gesetzt werden. Dies erhöht die Leistung im Netzwerk enorm, insbesondere dann, wenn viele Debian-Rechner in einem LAN vorhanden sind.

Obwohl die Pinning-Eigenschaft von apt_preferences(5) sehr leistungsfähig ist, löst sie nicht alle Abhängigkeitsprobleme, da die Voraussetzungen für Abhängigkeiten an neueren Versionen anderer fundamentaler Programmpakete zerren.

Die Verwendung der in chroot, Abschnitt 8.6.34 beschriebenen Methode ist geeignet, um gleichzeitig die Stabilität beider Systeme zu sichern und auf die neuesten Versionen von Software zuzugreifen.

Dieses Kapitel bezieht sich auf ein Woody-System, jedoch sollten die Informationen hier auch auf ein Potato-System (mit Ausnahme von apt_preferences(5) und Themen die Bezug auf die /etc/apt/preferences-Datei nehmen) zutreffen.


6.1 Einführung

Wenn das Lesen der Entwicklerdokumentation zu viel für Sie ist, dann lesen Sie zuerst dieses Kapitel um dann die ganze Vielfalt von Debian (testing/unstable) zu nutzen :-)


6.1.1 Grundlegende Werkzeuge

     dselect   – menügesteuertes Paketverwaltungs-Werkzeug (top level)
     dpkg      – installiert Pakete (Paketdatei orientiert)
     apt-get   – installiert Pakete (Paketarchiv orientiert, CLI-APT)
     tasksel   – installiert Aufgaben-Profile (Verbund von Paketen)
     aptitude  – installiert Pakete (Pakete & Profile, ncurses APT)
     deity     – alternatives ncurses APT
     synaptic, gsynaptic – GUI-APT-Alternativen

Diese Tools arbeiten nicht alle auf dem gleichen Level. dselect arbeitet ein Level über APT (der Kommandozeilenbefehl ist apt-get) und dpkg.

APT nutzt /var/lib/apt/lists/* um verfügbare Pakete zu erfassen, dpkg jedoch nutzt /var/lib/dpkg/available. Wenn Sie Pakete direkt mit apt-get oder mit einem ähnlichen Programm, wie z.B. aptitude installiert haben, dann stellen Sie sicher, dass Sie die Datei /var/lib/dpkg/available mittels [U]pdate aus dem dselect-Menü oder von der Kommandozeile mit "dselect update" updaten, bevor Sie dselect select, tasksel oder dpkg -l ausführen.

Was die Paketabhängigkeiten angeht, so berücksichtigt apt-get automatisch alle benötigten Pakete, ignoriert aber empfohlende und vorgeschlagene Pakete. dselect bietet jedoch eine menübasierte Kontrolle über die Auswahl von solchen Paketen und fragt zur Auswahl von benötigten, empfohlenden und vorgeschlagenen Paketen. aptitude bietet die Möglichkeit, alle benötigten, empfohlenden und vorgeschlagenen Pakete automatisch zu berücksichtigen. Siehe Paketabhängigkeiten, Abschnitt 2.2.8.


6.1.2 Nützliche Tools

     apt-cache         - durchsucht das Paketarchiv im lokalen Cache
     dpkg-reconfigure  - erneutes Konfigurieren von installierten
                         Paketen (sofern sie debconf benutzen)
     dpkg-source       - verwaltet Quellpaketdateien
     dpkg-buildpackage - automatisiert den Prozess der Erstellung von
                         Paketdateien
     ...

6.2 Grundlagen der Debian-Paketverwaltung

Man kann eine Menge von Paketen genannt Aufgaben-Profile oder auch Task installieren oder individuelle Pakete. Eine Aktualisierung des Systems kann auch mittels Paketverwaltungswerkzeugen wie weiter unten beschrieben erfolgen. Es wird auch auf Debian-System-Installationshinweise, Kapitel 3, Aktualisieren einer Distribution auf stable, testing oder unstable, Kapitel 5 und Rettungseditoren, Abschnitt 11.2 verwiesen.


6.2.1 Aufgaben-Profile mit tasksel oder aptitude installieren

tasksel ist das Debian-Aufgaben-Profil-Installationsprogramm, das auch während der Debian-Installation unter dem Punkt "einfach" angeboten wird.

Wenn man eine bestimmte Funktion benötigt, die verschiedene Pakete erfordert, so ist das der einfachste Weg dies zu erledigen. Stellen Sie sicher, dass Sie die Befehle wie folgt starten:

     # dselect update
     # tasksel

aptitude bietet auch Zugang zu Aufgaben-Profilen. Dies erlaubt nicht nur die Auswahl von Aufgaben-Profilen, sondern ermöglicht es auch, Pakete in diesem Profil selektiv durch ein Menü abzuwählen.


6.2.2 Einrichten des APT-Systems

Versuchen Sie ein System mittels verschiedener Distributionen, wie im Folgenden beschrieben, einzurichten, so ist es wahrscheinlich, dass Sie auf einige Paketabhängigkeitskonflikte stoßen. Es ist eine gute Idee, verschiedene Ausgaben nicht zu vermengen. Das folgende ist für Personen, die gerne experimentieren und dabei Risiken in Kauf nehmen.

Um selektive Upgrades durchzuführen, während man die testing-Distribution installiert hat, muss das APT-System (>Woody) wie in Aktualisierung von Potato auf Woody, Abschnitt 5.1 beschrieben eingerichtet werden, damit die apt_preferences(5) Eigenschaften genutzt werden können.

Fügen Sie zuerst die Quellen für stable, testing und unstable in Ihre /etc/apt/sources.list-Datei ein. Editieren Sie danach /etc/apt/preferences, um Pin-Priority korrekt einzurichten. [2]

     Package: *
     Pin: release a=stable
     Pin-Priority: 500
     
     Package: *
     Pin: release a=testing
     Pin-Priority: 600
     
     Package: *
     Pin: release a=unstable
     Pin-Priority: 50

6.2.3 dselect

Wenn dselect startet, wählt es automatisch alle Pakete aus, die in den Kategorien "Required", "Important" und "Standard" enthalten sind. In der Potato-Distribution waren etliche große Pakete wie z.B. teTeX und Emacs in diesen Kategorien enthalten und wurden am besten für die Erstinstallation manuell abgewählt (mittels `_'). In der Woody-Distribution sind diese Pakete nun in der "Optional"-Paketkategorie.

dselect hat eine einigermaßen gewöhnungsbedürftige Benutzerschnittstelle. Es gibt gleich vier doppeldeutige Befehle (Großbuchstaben sind gemeint!):

     Taste  Aktion
     Q      Beenden. Momentane Auswahl bestätigen und beenden.
            (Abhängigkeiten vernachlässigen)
     R      Rückgängig! Es war nicht so gemeint.
     D      Verdammt! Es ist uninteressant was dselect meint. Mach es!
     U      Alles auf den vorgeschlagenen Status setzen.

Mit D und Q kann eine Auswahl die Konflikte enthält, auf eigenes Risiko gewählt werden. Hiermit sollte vorsichtig umgegangen werden. Zur Zeit ist dselect das ausgereifteste menübasierte Werkzeug, das fein gegliederte Kontrolle über Empfehlungen und Vorschläge bietet.

Fügen Sie eine Zeile in /etc/dpkg/dselect.cfg ein, die die Option "expert" enthält, um die Ausgabe unnötiger Meldungen zu reduzieren. Für langsame Rechner, ist es empfehlenswert dselect auf einem anderen, schnelleren Rechner zu starten um Pakete zu finden und diese mit apt-get install zu installieren.

dselect erlaubt keinen Zugriff auf Pakete, die nicht durch Pin-Priority begünstigt sind.


6.2.4 aptitude

aptitude ist ein menübasiertes Paketinstallationprogramm ähnlich zu dselect. Dies kann auch als alternativer Kommandozeilen-Befehl an Stelle von apt-get genutzt werden. Vergleichen Sie aptitude(1).

aptitude akzeptiert folgende Tastenkürzel, die meist Kleinbuchstaben sind.

     Tastenkürzel  Aktion
     F10           Menü
     ?             Hilfe zu Tastenkürzel
     u             Aktualisiere Paketarchivinformation
     g             Herunterladen und installieren gewählter Pakete
     q             Beenden und Sichern der Änderungen
     x             Beenden und Verwerfen der Änderungen
     Enter         Informationen zu einem Paket anzeigen

aptitude erlaubt es, alle Pakete, je nachdem, ob sie benötigt, empfohlen oder vorgeschlagen werden, auszuwählen. Dieses Verhalten kann durch Auswahl von F10 -> Optionen -> Abhängigkeitsbehandlung im Menü geändert werden.

aptitude erlaubt den Zugriff auf alle Versionen eines Pakets.


6.2.5 Die apt-cache- und apt-get-Kommandos

Beim Einrichten von testing wie im obigen Beispiel beschrieben, kann das System durch folgende Kommandos angepasst werden:

Die Option -u in den obigen Beispielen sorgt dafür, dass apt-get eine Liste aller Pakete ausgibt, die aktualisiert werden können und fragt den Nutzer bevor es beginnt. Das folgende setzt die Option -u standardmäßig:

     $ cat >> /etc/apt/apt.conf << .
     // Immer zu aktualisierende Pakete anzeigen (-u)
     APT::Get::Show-Upgraded "true";
     .

Die Option -s kann zum Simulieren eines Upgrades verwendet werden, ohne dass eine Aktualisierung erfolgt.


6.2.6 Verwenden einer speziellen Version der Debian-Distribution

Abhängig von der von Ihnen bevorzugten Debian-Version kann die Datei /etc/apt/preferences in Einrichten des APT-Systems, Abschnitt 6.2.2 entsprechend Ihren Wünchen angepasst werden:

     für stable:            Pin-Priority von testing auf 50 setzen
     für testing:           Einstellungen wie oben gezeigt beibehalten
     für testing(unstable): Pin-Priority von unstable auf 500 setzen
     für unstable(testing): Pin-Priority von unstable auf 800 setzen

Eine Richtlinie für die Wahl der Pin-Priority ist das Wechseln von oben nach unten in der obigen Tabelle, so wie die Zeit von unmittelbar nach einer Veröffentlichung bis zum Einfrieren für die nächste Version vergeht.

Achtung: Das Verwenden der testing-Version von Debian hat den Nebeneffekt, dass Sicherheitsupdates nur langsam eingespielt werden.

Wenn verschiedende Versionen von Debian verwendet werden, so wie testing mit stable oder unstable mit stable, so werden höchstwahrscheinlich wichtige Pakete unabsichtlich von testing oder unstable genutzt, die fehlerhaft sein können. Sie wurden gewarnt.

Beispiele von /etc/apt/preferences, in welchen einige wichtige Pakete auf ausgereifte Versionen gesetzt werden, während die nicht ganz ausgereiften für nichtessentielle Pakete verwendet werden, sind im Beispielverzeichnis als preferences.testing und preferences.unstable verfügbar. Auf der anderen Seite erzwingt preferences.stable einen Versionssprung aller Pakete zu stable (Downgrad).


6.2.7 Downgrad aller Pakete zu stable

Um alle Pakete auf die stable-Distribution zurückzustufen, editieren Sie die Datei /etc/apt/preferences wie folgt:

     Package: *
     Pin: release a=stable
     Pin-Priority: 1001

und führen Sie "apt-get upgrade" aus. Dieser Befehl stuft aufgrund der Pin-Priority > 1000 sämtliche Pakete herunter. Aber seien Sie gewarnt, es könnte kleinere Abhängigkeitsprobleme geben.


6.2.8 Überblick über /etc/apt/preferences

In dem in Einrichten des APT-Systems, Abschnitt 6.2.2 aufgeführten Beispiel von /etc/apt/preferences bedeutet "Package: *" in der ersten Zeile, dass sich der Abschnitt auf alle Pakete bezieht. Man kann auch einen Paketnamen anstatt von "*" verwenden, um die Pin-Priority für das Paket festzulegen.

"Pin: release a=stable" in der zweiten Zeile bedeutet, dass apt-get die Packages.gz-Datei aus dem Archiv nimmt, das die Zeile "Archive: stable" in seiner Release-Datei enthält.

Die letzte Zeile "Pin-Priority: 500" setzt Pin-Priority auf 500.

Wenn es mehrere Pakete mit dem selben Namen gibt, so wird normalerweise das mit der höchsten Pin-Priority installiert.

Die Bedeutung der Pin-Priority ist:

Die selben Effekte wie --target-release können durch Setzen von /etc/apt/apt.conf mittels

     # echo 'APT::Default-Release "testing";' >> /etc/apt/apt.conf

erreicht werden. Die Kommandozeilenoption --target-release und der Wert in /etc/apt/apt.conf ersetzen die Einstellung in /etc/apt/preferences. Seien Sie vorsichtig damit, wenn Sie gleichzeitig /etc/apt/preferences editieren.


6.3 Debian-Überlebensbefehle

Mit diesem Wissen kann jeder ein Leben des ewigen "Aktualisierens" führen :-)


6.3.1 Überprüfen von Bugs in Debian und Suche nach Hilfe

Wenn Sie auf Probleme bezüglich eines bestimmten Pakets stoßen, stellen Sie sicher, dass Sie zuerst diese Seiten überprüfen, bevor Sie um Hilfe fragen oder einen Bug-Report erstellen. (lynx, links und w3m sind hier gleichwertig):

     $ lynx http://bugs.debian.org/
     $ lynx http://bugs.debian.org/Paketname # wenn der Name bekannt ist
     $ lynx http://bugs.debian.org/Bugnummer # wenn Bugnr. bekannt ist

Suchen Sie auch bei Google mit Suchbegriffen wie "site:debian.org".

Wenn Sie nicht weiter kommen, lesen Sie die guten Handbücher. Setzen Sie CDPATH wie folgt:

     export CDPATH=.:/usr/local:/usr/share/doc

und dann

     $ cd Paketname
     $ pager README.Debian # falls dies existiert
     $ mc

Weitere Hilfequellen sind in Unterstützung für Debian, Kapitel 15 aufgelistet.


6.3.2 APT-Upgrade-Fehlersuche

Es können Paketabhängigkeitprobleme beim Aktualisieren auf unstable/testing entsprechend Aktualisierung, Abschnitt 5.3 entstehen. Meistens liegt das daran, dass ein Paket aktualisiert wird, das neue Abhängigkeiten hat, die nicht erfüllt sind. Diese Probleme können unter Verwendung folgender Befehle gelöst werden:

     # apt-get dist-upgrade

Wenn dies nicht hilft das Problem zu lösen, dann wiederholen Sie folgende Befehle solange, bis sich das Problem auflöst:

     # apt-get upgrade -f       # selbst bei Fehlern mit Upgrade ...
     ... oder
     # apt-get dist-upgrade -f  # ... bzw. Dist-Upgrade fortfahren

Einige sehr fehlerhafte Upgrade-Skripte könnten permanente Schwierigkeiten bereiten. In solch einer Situation ist es gewöhnlich besser, wenn man sich die /var/lib/dpkg/info/Paketname.{post,pre}{inst,rm}-Skripte der betreffenden Pakete ansieht und anschließend

     # dpkg --configure -a      # konfiguriert alle nicht vollständig
                                # installierten Pakete

ausführt.

Wenn eines der Skripte sich über eine fehlende Konfigurationsdatei beschwert, dann schauen Sie in /etc/ nach der entsprechenden Datei. Wenn eine mit der Dateiendung .new (oder so ähnlich) existiert, entfernen Sie diese Dateiendung einfach (z.B. mit mv).

Paketabhängigkeitsprobleme können auftreten, wenn Pakete in unstable/testing installiert werden. Diese können auf unterschiedliche Art und Weise umgangen werden.

     # apt-get install -f Paket # ignoriere falsche Abhängigkeiten

Eine Alternative dazu wäre, das equivs-Paket zu verwenden. Siehe /usr/share/doc/equivs/README.Debian und Das equivs-Paket, Abschnitt 6.5.2.


6.3.3 Wiederherstellung mit dpkg

Sollte das System einmal wirklich schwer geschädigt worden sein, beispielsweise wenn dselect (APT) abstürzt, kann man es auch nur mit Hilfe von dpkg wiederherstellen:

     # cd /var/cache/apt/archives
     # dpkg -i libc6* libdb2* perl*
     # dpkg -i apt* dpkg* debconf*
     # dpkg -i *             # solange, bis keine Fehler mehr auftreten

Sollte einmal ein Paket fehlen, können Sie es von Mirror-Seiten herunterladen:

     # mc    # verwenden Sie "FTP-Verbindung" auf Debian-FTP-Server

Neue Pakete auf den HTTP/FTP-Servern befinden sich nicht mehr in dem klassischen dist-Verzeichnis, sondern im neuen pool-Verzeichnis. (Siehe Das pool-Verzeichnis, Abschnitt 2.1.10.)

Die Installation des Pakets erfolgt dann folgendermaßen:

     # dpkg -i /var/cache/apt/archives/Paketdatei.deb

Sollte ein Problem mit einer Abhängigkeit auftreten, kann dieses wie folgt gelöst werden:

     # dpkg --ignore-depends=Paket1 ... -i Paketdatei.deb
     # dpkg --force-depends -i Paketdatei.deb
     # dpkg --force-depends --purge Paket
     # dpkg --force-confmiss -i Paketdatei.deb # installiert fehlende
                                               # Konfigurationsdateien

6.3.4 Wiederherstellung von Paketauswahldaten

Wenn /var/lib/dpkg/status aus irgendeinem Grund fehlerhaft ist, so verliert das Debian-System die Paketauswahldaten und nimmt Schaden. Schauen Sie nach der alten /var/lib/dpkg/status-Datei /var/lib/dpkg/status-old oder /var/backups/dpkg.status.*.

Eine eigene Partition für /var/backups/ zu erstellen, könnte eine gute Idee sein, insbesondere da sich dort wichtige Systemdaten befinden.

Wenn die alte /var/lib/dpkg/status-Datei nicht verfügbar ist, kann man dennoch Informationen von Verzeichnissen in /usr/share/doc/ wiederherstellen.

     # ls /usr/share/doc | \
       grep -v [A-Z] | \
       egrep -v '^(debian|texmf)$' | \
       awk '{print $1 " install"}' | \
       dpkg --set-selections
     ... neuinstallieren des Systems, abwählen je nach Bedarf:
     # dselect --expert

6.3.5 Systemrettung nach Löschen von /var

Da das /var-Verzeichnis regelmäßig aktualisierte Daten wie Mails enthält, ist es für einen Ausfall anfällig. Das Auslagern auf eine unabhängige Partition reduziert die Risiken. Wenn ein Unglück geschieht, muss das /var-Verzeichnis wiederhergestellt werden, um das Debian-System zu retten.

Besorgen Sie sich den wichtigsten Inhalt des /var-Verzeichnisses von einem kleinen noch funktionsfähigem Debian-System, basierend auf der selben oder einer älteren Debian-Version, z.B. var.tar.gz und kopieren Sie dies in das Stammverzeichnis des defekten Systems. Führen Sie nun folgendes aus:

     # cd /
     # mv var var-alt      # wenn noch sinnvolle Daten vorhanden sind
     # tar xvzf var.tar.gz # Woody's Minimaldatei verwenden
     # aptitude            # oder dselect

Dies sollte zu einem funktionierenden System führen. Die Wiederherstellung der Paketauswahl kann beschleunigt werden, wenn man die in Wiederherstellung von Paketauswahldaten, Abschnitt 6.3.4 beschriebene Technik anwendet. (FIXME: Dieses Vorgehen benötigt mehr Versuche zur Bestätigung.)


6.3.6 Installation eines Pakets in ein nicht bootfähiges System

Booten Sie Linux von einer der Debian-Rettungs-Disketten/CDs oder von einer alternativen Partition in einem Multi-Boot-System. Vergleichen Sie Booten des Systems, Abschnitt 8.1. Mounten Sie nun die nicht bootfähige Partition nach /target und verwenden Sie die chroot-Installationsmethode von dpkg.

     # dpkg --root /target -i Paketdatei.deb

Anschließend sollten Sie alles nötige konfigurieren und Probleme beheben.

Übrigens, wenn lilo alles ist, was Sie davon abhält das System zu booten, können Sie auch ganz einfach von einer Debian-Rettungsdiskette booten. Am Boot-Prompt, vorausgesetzt Ihre root-Partition befindet sich auf /dev/hda12 und Sie möchten im Run-Level 3 starten, geben Sie Folgendes ein:

     boot: rescue root=/dev/hda12 3

Daraufhin startet ein nahezu vollständiges System, mit dem Kernel von der Bootdiskette. (Möglicherweise werden nicht alle Hardwarekomponenten erkannt oder Module nicht geladen, dies liegt aber an dem Kernel von der Bootdiskette.)


6.3.7 Der dpkg-Befehl funktioniert nicht mehr – was nun?

Ein funktionsgestörtes dpkg kann es verständlicherweise unmöglich machen, beliebige .deb-Dateien zu installieren. Ein Vorgehen wie das unten aufgeführte wird Ihnen dabei helfen, diese Situation wieder in den Griff zu bekommen. (Natürlich können Sie links durch Ihrem favorisierten Browser ersetzen.)

     $ links http://http.de.debian.org/debian/pool/main/d/dpkg/
       ... herunterladen von dpkg_version_arch.deb
     $ su
     password: *****
     $ ar x dpkg_version_arch.deb
     # mv data.tar.gz /data.tar.gz
     # cd /
     # tar xzfv data.tar.gz

Für die i386-Architektur kann auch http://packages.debian.org/dpkg als URL genutzt werden.


6.4 Debian-Nirwana-Befehle

Das Verständnis der folgenden Befehle ist eine essentielle Voraussetzung, um zum einem eventuellen Upgrade-Problemen gewachsen zu sein und zum anderen um das Debian-Nirwana zu erreichen. :-)


6.4.1 Informationen über eine Datei

Sie möchten den Namen des Pakets in Erfahrung bringen, welchem eine bestimmte Datei angehört:

     ... suche nach Muster in den installierten Paketdateien:
     $ dpkg {-S|--search} Muster
     ... finde das Dateinamen-Muster in den Debian-Archivdateien:
     $ wget http://ftp.us.debian.org/debian/dists/sarge/Contents-i386.gz
     $ zgrep -e pattern Contents-i386.gz

Sie können auch spezialisierte Paketkommandos verwenden:

     ... dlocate: inkompatibel zu slocate (sichere Version von locate):
     # apt-get install dlocate
     ... schnellere Alternative zu dpkg -L and dpkg -S:
     $ dlocate filename
     ... installiert Pakete automatisch auf Anfrage:
     # apt-get install auto-apt
     ... erzeugt eine Datenbank für auto-apt:
     # auto-apt update
     ... sucht nach einem Muster in allen Paketen, ob sie installiert
     ... sind oder nicht:
     $ auto-apt search Muster

6.4.2 Informationen über ein Paket

Die Debian-Paketarchive können durchsucht und angezeigt werden. Stellen Sie jedoch vorher sicher, dass APT die richtigen Archive in /etc/apt/sources.list findet. Wenn Sie sehen wollen, wie sich Pakete in testing/unstable gegen die aktuell installierten verhalten, so verwenden Sie apt-cache policy. Dies ist sehr nett.

     # apt-get check           # aktualisiert den Cache und schaut nach
                               # fehlerhaften Paketen
     $ apt-cache search Muster # sucht Pakete anhand Paketbeschreibung
     $ apt-cache policy Paket  # Paketprioritäten/Distributions-Infos
     $ apt-cache show -a Paket # zeigt die Paketbeschreibung in allen
                               # Distributionen
     $ apt-cache showsrc Paket # zeigt die Paketbeschreibung des
                               # Quellpakets
     $ apt-cache showpkg Paket # zeigt Paketinformationen für Debugging
     # dpkg --audit|-C         # sucht nach nicht vollständig
                               # installierten Paketen
     $ dpkg {-s|--status} Paket ... # Beschreibung eines installierten
                               # Pakets
     $ dpkg -l Paket ...       # Status des installierten Pakets
     $ dpkg -L Paket ...       # zeigt die Dateien an, die durch das
                               # Paket installiert wurden

apt-cache showsrc ist in Woody noch nicht dokumentiert, funktioniert aber :)

Sie können ebenfalls anstelle der oben genannten Befehle Paketinformationen in folgenden Dateien finden (verwenden Sie beispielsweise mc zum Suchen):

     /var/lib/apt/lists/*
     /var/lib/dpkg/available

Ein Vergleich folgender Dateien kann Aufschluss darüber geben, was genau bei der letzten Installation passiert ist.

     /var/lib/dpkg/status
     /var/backups/dpkg.status*

6.4.3 Nicht-Interaktive Installation mit APT

Um Pakete nicht-interaktiv zu installieren, fügen Sie folgende Zeile zu /etc/apt/apt.conf hinzu:

     Dpkg::Options {"--force-confold";}

Dies ist äquivalent zu apt-get -q -y Paket. Da dies alle Fragen automatisch mit "Ja" beantwortet, kann dies zu Problemen führen. Nutzen Sie diese Option deshalb mit Vorsicht. Lesen Sie apt.conf(5) und dpkg(1).

Sie können jedes einzelne Paket auch später wie in Installierte Pakete erneut konfigurieren, Abschnitt 6.4.4 beschrieben konfigurieren.


6.4.4 Installierte Pakete erneut konfigurieren

Verwenden Sie folgende Befehle, um bereits installierte Pakete erneut zu konfigurieren.

     # dpkg-reconfigure --priority=medium Paket [...]
     # dpkg-reconfigure --all   # Neukonfiguration aller Pakete
     # dpkg-reconfigure locales # generiere zusätzliche locales
     # dpkg-reconfigure --p=low xserver-xfree86 # konfiguriere den
                                                # X-Server neu

Führen Sie dies für debconf aus, wenn Sie den Dialogmodus von debconf permanent ändern möchten.

Einige Programme sind mit speziellen Konfigurationsskripten ausgestattet. [3]

     apt-setup    - erstellt die Datei /etc/apt/sources.list
     install-mbr  - installiert einen Master-Boot-Record-Manager
     tzconfig     - setzt die lokale Zeitzone
     gpmconfig    - konfiguriert den gpm-Maus-Daemon
     sambaconfig  - konfiguriert Samba in Potato (Woody benutzt debconf)
     eximconfig   - konfiguriert Exim (MTA)
     texconfig    - konfiguriert teTeX
     apacheconfig - konfiguriert Apache (httpd)
     cvsconfig    - konfiguriert CVS
     sndconfig    - konfiguriert das Soundsystem
     ...
     update-alternatives - definiert Standardbefehle, z.B. vi für vim
     update-rc.d         - System-V-init-Skript-Management
     update-menus        - das Debian-Menüsystem
     ...

6.4.5 Deinstallation von Paketen

Entfernen eines Pakets, die Konfiguration wird nicht gelöscht:

     # apt-get remove Paket ...
     # dpkg  --remove Paket ...

Entfernen eines Pakets und dessen Konfiguration:

     # apt-get remove --purge Paket ...
     # dpkg    --purge        Paket ...

6.4.6 "Halten" älterer Pakete

Zunächst ein Beispiel: Möchte man, dass die Pakete libc6 und libc6-dev beim Ausführen von dselect und apt-get -u upgrade nicht durch neuere Versionen ersetzt werden, so kann dies folgendermaßen erreicht werden:

     # echo -e "libc6 hold\nlibc6-dev hold" | dpkg --set-selections

apt-get -u install Paket bleibt davon jedoch unbeeinflusst. Um diese Pakete andererseits bei einem automatischen Systemdowngrade mittels apt-get -u upgrade oder apt-get -u dist-upgrade zurück zu halten, ist die Datei /etc/apt/preferences wie folgt zu erweitern:

     Package: libc6
     Pin: release a=stable
     Pin-Priority: 2000

An dieser Stelle kann der Eintrag "Package:" keine Paketnamen wie z.B. "libc6*" enthalten. Wenn Sie jedoch alle Pakete, die im Zusammenhang mit dem glibc-Quellpaket stehen, auf dem selben Stand halten möchten, müssen Sie diese alle explizit auflisten.

Folgender Befehl zeigt alle Pakete an, die den Status "hold" haben:

     dpkg --get-selections "*" | grep -e "hold$"

6.4.7 Gemischtes stable/testing/unstable-System

apt-show-versions kann alle verfügbaren Paketversionen und deren Zugehörigkeit zu den einzelnen Distributionen anzeigen.

     $ apt-show-versions | fgrep /testing | wc
     ... Anzahl der installierten Pakete aus testing
     $ apt-show-versions -u
     ... Liste aller Pakete für die es aktuellere Versionen gibt
     $ apt-get install `apt-show-versions -u -b | fgrep /unstable`
     ... aktualisiert alle Paket aus unstable auf die aktuellste Version

6.4.8 Löschen von zwischengespeicherten Paketdateien

APT speichert alle heruntergeladenen Paketdateien in /var/cache/apt/archives/. Diese können folgendermaßen gelöscht werden:

     # apt-get autoclean # löscht nur nicht benötigte Paketdateien
     # apt-get clean     # löscht alle zwischengespeicherten Paketdateien

6.4.9 Speichern/Kopieren der Systemkonfiguration

Erstellen einer lokalen Kopie der aktuellen Paketauswahl:

     $ dpkg --get-selections "*" >meineAuswahl   # oder \*

"*" veranlasst, dass auch Pakete mit einem Status von "purge" in meineAuswahl gespeichert werden.

Diese Datei kann auf einen anderen Computer kopiert werden, um dort die gleichen Pakete zu installieren:

     # dselect update
     # dpkg --set-selections <meineAuswahl
     # apt-get -u dselect-upgrade    # oder dselect install

6.4.10 Portierung eines Pakets auf die stable-Distribution

Um selektive Upgrades in der stabilen Distribution zu machen, ist es möglich, ein Quellpaket in dieser Umgebung zu kompilieren. Dies verhindert viele Paketaktualisierungen, die durch Abhängigkeiten verursacht würden. Zuerst müssen folgende Zeilen der /etc/apt/sources.list-Datei hinzugefügt werden:

     deb-src http://http.us.debian.org/debian testing \
      main contrib non-free
     deb-src http://non-us.debian.org/debian-non-US testing/non-US \
      main contrib non-free
     deb-src http://http.us.debian.org/debian unstable \
      main contrib non-free
     deb-src http://non-us.debian.org/debian-non-US unstable/non-US \
      main contrib non-free

Aus Formatierungsgründen sind die Zeilen hier in je zwei Zeilen umgebrochen. Natürlich muss aber jede mit "deb-src" beginnende Zeile für sich alleine in sources.list stehen.

Nun ist der Quellcode zu beziehen und ein lokales Paket zu erstellen:

     $ apt-get update  # aktualisiere die Quellpaketsuchliste
     $ apt-get source Paket
     $ dpkg-source -x Paket.dsc
     $ cd paket-version
       ... schauen Sie nach benötigten Paketen (Build-depends in der
       ... .dsc-Datei) und installieren Sie diese ebenso wie fakeroot
     
     $ dpkg-buildpackage -rfakeroot
     
       ... oder (keine Signatur erstellen)
       ... verwenden Sie später "debsign" wenn nötig
     $ dpkg-buildpackage -rfakeroot -us -uc
     
       ... Anschließend die Installation des Pakets
     $ su -c "dpkg -i Paketdatei.deb"

Gewöhnlich ist es nötig, einige Pakete mit der "-dev"-Erweiterung zu installieren, um Paketabhängigkeiten auflösen zu können. debsign ist im Paket devscripts enthalten. auto-apt kann die Auflösung von Abhängigkeiten erleichtern. Mittels fakeroot lässt sich unnötige Benutzung des root-Accounts vermeiden.

In der Woody-Distribution lassen sich diese Abhängigkeitsprobleme vereinfachen. Als ein Beispiel kompilieren wir pine, das nur im Quellcode vorliegt.

     # apt-get build-dep pine
     # apt-get source -b pine

6.4.11 Lokale Paketarchive

Möchte man ein lokales Paketarchiv erzeugen, welches mit APT und dselect kompatibel ist, so muss die Datei Packages erstellt werden und Paketdateien müssen in einem bestimmten Verzeichnis erstellt werden.

Ein lokales deb-Archiv (Repository) das ähnlich zum offiziellen Debian-Archiv ist, kann wie folgt erstellt werden:

     # apt-get install dpkg-dev
     # cd /usr/local
     # install -d pool # die Paketdateien werden hier gespeichert
     # install -d dists/unstable/main/binary-i386
     # ls -1 pool | sed 's/_.*$/ priority section/' | uniq > override
     # editor override # anpassen von priority und section
     # dpkg-scanpackages pool override /usr/local/ \
        > dists/unstable/main/binary-i386/Packages
     # cat > dists/unstable/main/Release << EOF
     Archive: unstable
     Version: 3.0
     Component: main
     Origin: Local
     Label: Local
     Architecture: i386
     EOF
     # echo "deb file:/usr/local unstable main" \
        >> /etc/apt/sources.list

Alternativ kann auch folgende, schnellere aber unsaubere, Methode verwendet werden:

     # apt-get install dpkg-dev
     # mkdir /usr/local/debian
     # mv /irgend/ein/Paket.deb /usr/local/debian
     # dpkg-scanpackages /usr/local/debian /dev/null | \
       gzip - > /usr/local/debian/Packages.gz
     # echo "deb file:/usr/local/debian ./" >> /etc/apt/sources.list

Auf ein solches Archiv kann auch von entfernten Computern zugegriffen werden, indem der Zugriff auf diese Verzeichnisse durch HTTP oder FTP ermöglicht wird. Die Datei /etc/apt/sources.list muss dementsprechend angepasst werden.


6.4.12 Installation und Konvertierung eines fremden Binärpakets

Mit Hilfe des alien-Pakets lassen sich binäre Pakete, wie sie in vielen Distributionen wie Red Hat rpm, Stampede slp, Slackware tgz und Solaris pkg verwendet werden, in das Debian deb-Paketformat konvertieren. Wenn Sie ein Paket von einer anderen Distribution verwenden möchten, können Sie es mit alien in Ihr bevorzugtes Paketformat konvertieren und anschließend installieren. alien unterstützt ebenfalls LSB-Pakete.


6.4.13 Verifizierung installierter Paketdateien

debsums verifiziert installierte Paketdateien anhand deren MD5 Prüfsummen. Jedoch gibt es auch Pakete die keine MD5-Prüfsummen enthalten. Eine mögliche temporäre Lösung für Systemadministratoren ist folgende:

     # cat >>/etc/apt/apt.conf.d/90debsums
     DPkg::Post-Install-Pkgs {"xargs /usr/bin/debsums -sg";};
     ^D

von Joerg Wendland joergland@debian.org (nicht getestet).


6.4.14 Optimierte sources.list

Um es kurz zu machen, raffinierte Anstrengungen um sources.list optimal zu erzeugen führte nicht zu einer signifikanten Verbesserungen für mich in den USA. Ich wähle manuell einen nahe gelegenen Server mittels apt-setup.

apt-spy erzeugt sources.list automatisch, basierend auf der Wartezeit und der Bandbreite. netselect-apt erzeugt eine komplexere sources.list, nutzt aber eine einfachere Methode zur Bestimmung des besten Spiegels (ping Zeitvergleich).

     # apt-get install apt-spy
     # cd /etc/apt; mv sources.list sources.list.org
     # apt-spy -d testing -l sources.apt

6.5 Weitere Debian-Besonderheiten


6.5.1 Der dpkg-divert-Befehl

Dateiumleitungen ist eine Methode, um dpkg dazu zu bringen, Dateien nicht in ihre Standardverzeichnisse zu installieren, sondern in umgeleitete Verzeichnisse. Umleitungen können durch Debian-Skripte dazu genutzt werden, Dateien zu verschieben, wenn sie einen Konflikt verursachen. Systemadministratoren können auch eine Umleitung verwenden, um die Konfigurationsdatei eines Pakets zu überschreiben, oder wann immer einige Dateien (welche nicht als conffiles markiert sind) von dpkg nicht überschrieben werden sollen, wenn eine neuere Version eines Pakets installiert wird, das solche Dateien enthält (siehe Bewahren der lokalen Konfiguration, Abschnitt 2.2.4).

     # dpkg-divert [--add]  Datei # erstellen der "Umleitung"
     # dpkg-divert --remove Datei # entfernen der "Umleitung"

Für gewöhnlich ist es ratsam dpkg-divert nicht zu verwenden wenn es nicht absolut notwendig ist.


6.5.2 Das equivs-Paket

Wenn Sie ein Quellpaket kompilieren ist es empfehlenswert, es zu einem echten lokalen Debianpaket (*.deb) zu machen. Benutzen Sie equivs als letzten Ausweg.

     Package: equivs
     Priority: extra
     Section: admin
     Description: Circumventing Debian package dependencies
      This is a dummy package which can be used to create Debian
      packages, which only contain dependency information.

6.5.3 Alternative Befehle

Möchte man dass der Befehl vi vim ausführt, benutzen Sie update-alternatives:

     # update-alternatives --display vi
     ...
     # update-alternatives --config vi
       Selection    Command
     -----------------------------------------------
           1        /usr/bin/elvis-tiny
           2        /usr/bin/vim
     *+    3        /usr/bin/nvi
     
     Enter to keep the default[*], or type selection number: 2

Einstellungen im Debian-Alternativsystem werden in /etc/alternatives/ als symbolische Links gespeichert.

Um Ihre bevorzugte X-Window-Umgebung einzustellen, führen sie update-alternatives für /usr/bin/x-session-manager und /usr/bin/x-window-manager aus. Für weitere Informationen, siehe Angepasste X-Sitzung, Abschnitt 9.4.5.1.

/bin/sh ist ein symbolischer Link auf /bin/bash oder /bin/dash. Aus Kompatibilitätsgründen zu alten Bash-verunreinigten Skripten ist es sicherer, /bin/bash zu verwenden. Um die POSIX-Konformität einzuhalten sollte jedoch /bin/dash verwendet werden. Mit dem Upgrade auf den 2.4er-Linux-Kernel geht die Tendenz zugunsten zu /bin/dash.


6.5.4 init und Runlevel

Der Standardrunlevel in dem gebootet wird, lässt sich in /etc/inittab festlegen.

In Debian ist es dem Systemadministrator möglich, einzustellen, welche Dienste in welchem Runlevel laufen sollen. Das update-rc.d-Werkzeug kann verwendet werden, um diese Einstellungen zu ändern, unabhängig davon, ob die sysv-rc- oder die file-rc-Methode zum Kontrollieren von Diensten verwendet wird.

Um zum Beispiel den Dienst name (mit dem Init-Skript /etc/init.d/name) mit der Sequenznummer 20 in den Runlevel 2, 3 und 4 zu starten und in Runlevel 5 mit der Sequenznummer 80 zu stoppen, ist folgendes auszuführen:

     # update-rc.d name start 20 2 3 4 . stop 80 5 .

Wenn Sie das sysv-rc Paket benutzen, gibt es einen anderen Weg, solche Änderungen durchzuführen: Benennen Sie einfach die symbolischen Links in den /etc/rc?.d Verzeichnissen um.

     # mv S99xdm K01xdm # xdm deaktivieren (X-Display-Manager)

6.5.5 Deaktivierung von Daemon-Diensten

Die Debian-Distribution nimmt die Systemsicherheit sehr ernst und erwartet, dass der Systemadministrator kompetent ist. Eine einfache Administration steht so oft nur an zweiter Stelle und viele Daemon-Dienste sind in der Standard-Installation mit dem höchsten Sicherheitslevel vorkonfiguriert oder mit den wenigsten Diensten (oder keinen) ausgestattet.

Führen Sie ps aux aus oder überprüfen Sie die Inhalte von /etc/init.d/* und /etc/inetd.conf, wenn Sie irgenwelche Zweifel (zu Exim, DHCP, ...) haben. Überprüfen Sie auch /etc/hosts.deny wie in Zugriffskontrolle mit PAM und login, Abschnitt 9.2.1. Der pidof-Befehl ist ebenfalls hilfreich (siehe pidof(8)).

X11 erlaubt standardmäßig keine (entfernten) TCP/IP-Verbindungen in neueren Debian-Versionen. Schauen Sie in TCP/IP-Verbindungen mit X, Abschnitt 9.4.6. X-Weiterleitung mittels SSH ist ebenfalls deaktiviert. Vergleichen Sie mit X-Fernverbindungen mit ssh, Abschnitt 9.4.8.


[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ weiter ]

Debian-Referenz

CVS, Mon 3. Apr 2005, 22:57:58 UTC

Osamu Aoki osamu@debian.org
Übersetzer: Jens Seidel tux-master@web.de
Autoren, Abschnitt A.1