Kapitel 2. Debian-Paketmanagement

Inhaltsverzeichnis

2.1. Grundvoraussetzungen für das Debian-Paketmanagement
2.1.1. Debian package management system
2.1.2. Paketkonfiguration
2.1.3. Grundsätzliche Vorsichtsmaßnahmen
2.1.4. Leben mit den ewigen Aktualisierungen
2.1.5. Grundlagen über das Debian-Archiv
2.1.6. Debian ist zu 100% freie Software
2.1.7. Paketabhängigkeiten
2.1.8. Die Ereignisabfolge für das Paketmanagement
2.1.9. Erste Hilfe bei Paketmanagement-Problemen
2.1.10. Wie Sie Debian-Pakete auswählen
2.1.11. How to cope with conflicting requirements
2.2. Grundlegende Paketmanagement-Operationen
2.2.1. apt contra apt-get / apt-cache contra aptitude
2.2.2. Grundlegende Paketmanagement-Operationen auf der Befehlszeile
2.2.3. Interaktive Nutzung von aptitude
2.2.4. Tastaturkürzel von aptitude
2.2.5. Paketansichten in aptitude
2.2.6. Optionen für Suchmethoden mit aptitude
2.2.7. Aptitudes Regex-Formel
2.2.8. Abhängigkeitsauflösung bei aptitude
2.2.9. Protokollierung der Paketaktivitäten
2.3. Beispiele für aptitude-Operationen
2.3.1. Seeking interesting packages
2.3.2. Auflisten von Paketen mit Regex-Suche auf den Paketnamen
2.3.3. Durchsuchen mit der Regex-Suche
2.3.4. Entfernte Pakete endgültig löschen
2.3.5. Automatisch/manuell-Installationsstatus bereinigen
2.3.6. Systemweite Hochrüstung
2.4. Erweiterte Paketmanagement-Operationen
2.4.1. Erweiterte Paketmanagement-Operationen auf der Befehlszeile
2.4.2. Verifizierung von installierten Paketdateien
2.4.3. Absicherungen für den Fall von Paketproblemen
2.4.4. Durchsuchen der Paket-Metadaten
2.5. Internas des Debian-Paketmanagements
2.5.1. Archiv-Metadaten
2.5.2. "Release"-Datei im Wurzelverzeichnis und Authentizität
2.5.3. "Release"-Dateien im Archivverzeichnis
2.5.4. Empfangen der Metadaten für ein Paket
2.5.5. Der Paketstatus für APT
2.5.6. Der Paketstatus von aptitude
2.5.7. Lokale Kopien der empfangenen Pakete
2.5.8. Debian-Paketdateinamen
2.5.9. Der dpkg-Befehl
2.5.10. Der update-alternatives-Befehl
2.5.11. Der dpkg-statoverride-Befehl
2.5.12. Der dpkg-divert-Befehl
2.6. Wiederherstellung eines beschädigten Systems
2.6.1. Fehlgeschlagene Installation aufgrund von fehlenden Abhängigkeiten
2.6.2. Fehler beim Zwischenspeichern der Paketdaten
2.6.3. Inkompatibilität mit alter Benutzerkonfiguration
2.6.4. Mehrere Pakete mit überlappenden Dateien
2.6.5. Behebung von Problemen aufgrund von beschädigtem Paketskript
2.6.6. Systemrettung mit dem dpkg-Befehl
2.6.7. Paketauswahldaten wiederherstellen
2.7. Tipps für das Paketmanagement
2.7.1. Wer hat das Paket hochgeladen?
2.7.2. Die Download-Bandbreite für APT einschränken
2.7.3. Automatisches Herunterladen und Aktualisieren von Paketen
2.7.4. Aktualisierungen und Backports
2.7.5. External package archives
2.7.6. Packages from mixed source of archives without apt-pinning
2.7.7. Tweaking candidate version with apt-pinning
2.7.8. Über "Recommends" installierte Pakete blockieren
2.7.9. Nutzen von Testing mit einigen Paketen aus Unstable
2.7.10. Nutzen von Unstable mit einigen Paketen aus Experimental
2.7.11. Downgrade im Notfall
2.7.12. Das equivs-Paket
2.7.13. Ein Paket auf das Stable-System portieren
2.7.14. Proxy-Server für APT
2.7.15. Weitere Lektüre zum Paketmanagement
[Anmerkung] Anmerkung

Dieses Kapitel geht davon aus, dass Bookworm die aktuelle stabile Veröffentlichung ist.

The data source of the APT system is collectively refered as the source list in this document . This can be defined anywhere in the "/etc/apt/sources.list" file, "/etc/apt/sources.list.d/*.list" files, or "/etc/apt/sources.list.d/*.source" files.

Debian ist eine Organisation Freiwilliger, die konsistente Distributionen vorkompilierter Binärpakete von freier Software erstellt und sie über ihr Archiv verteilt.

Das Debian-Archiv wird von vielen Spiegel-Servern via HTTP und FTP bereitgestellt. Es ist auch als CD-ROM/DVD erhältlich.

Das derzeit empfohlene Debian-Werkzeug für Paketmanagement, das all diese Ressourcen nutzen kann, ist das Advanced Packaging Tool (APT).

Debians Paketmanagement-System, ermöglicht dem Nutzer (wenn es korrekt genutzt wird), konsistente Sätze von Binärpaketen auf dem System zu installieren. Derzeit sind für die amd64-Architektur 74165 Pakete verfügbar.

Das Debian-Paketmanagement-System hat eine reichhaltige Geschichte und bietet eine Auswahl an Frontend-Benutzerprogrammen, die genutzt werden können sowie an verschiedenen Varianten des Archivzugriffs. Derzeit empfehlen wir folgendes:

  • apt(8) für alle interaktiven Befehlszeilen-Operationen, inklusive Paketinstallationen und -entfernungen sowie Distributions-Upgrades;

  • apt-get(8) für Paketverwaltungsoperationen mittels Skripten; auch eine Ausweichlösung für den Fall, dass apt nicht verfügbar ist (z.B. auf älteren Debian-Systemen);

  • aptitude(8) für ein interaktives Text-Interface zur Verwaltung der installierten Pakete und für die Suche nach verfügbaren Paketen.


[Warnung] Warnung

Installieren Sie nicht Pakete aus einer wahllosen Mischung von Debian-Suiten (Stable, Testing, Unstable, Experimental). Sie können dadurch die Paketkonsistenz beschädigen und deren Korrektur erfordert ein tiefes Verständnis der Systemverwaltung wie Compiler-ABI, Bibliotheks-Versionen, Interpreter-Funktionalitäten usw.

The newbie Debian system administrator should stay with the stable release of Debian while applying only security updates. Until you understand the Debian system very well, you should follow the following precautions.

  • Do not include testing or unstable in the source list.

  • Do not mix standard Debian with other non-Debian archives such as Ubuntu in the source list .

  • Erstellen Sie keine "/etc/apt/preferences"-Datei.

  • Ändern Sie nicht über Konfigurationsdateien das Standardverhalten der Paketmanagement-Werkzeuge, wenn Sie die vollständigen Auswirkungen nicht kennen.

  • Installieren Sie nicht irgendwelche Pakete mit "dpkg -i irgendein_paket".

  • Installieren Sie niemals irgendwelche Pakete mit "dpkg --force-all -i irgendein_paket".

  • Löschen oder verändern Sie keine Dateien in "/var/lib/dpkg/".

  • Überschreiben Sie keine Systemdateien, indem Sie Software-Programme installieren, die direkt aus den Quellen übersetzt wurden.

    • Installieren Sie solche Pakete, falls nötig, in "/usr/local" oder "/opt".

The non-compatible effects caused by violating above precautions to the Debian package management system may leave your system unusable.

Ein ernsthafter Debian-Systemadministrator, der missionskritische Server betreibt, sollte besondere Vorsicht walten lassen.

  • Installieren Sie nicht irgendwelche Pakete von Debian, die Sicherheitsaktualisierungen beinhalten, ohne sie unter sicheren Bedingungen sorgfältig mit Ihrer speziellen Konfiguration getestet zu haben.

    • Sie als Systemadministrator sind am Ende für Ihr System verantwortlich.

    • Die lange Stabilitäts-Historie des Debian-Systems ist für sich alleine keine Garantie.

[Achtung] Achtung

Für Ihre Produktions-Server wird die Stable-Suite inklusive der Sicherheitsaktualisierungen empfohlen. Dasselbe gilt für Desktop-Rechner, für die nur eingeschränkt administrative Betreuung gewährleistet ist.

Trotz der obigen Warnungen weiß ich, dass viele Leser dieses Dokuments trotzdem die neuere Testing- oder Unstable-Suite nutzen möchten.

Die Erleuchtung, die wir Ihnen mit den folgenden Informationen bieten, bewahrt Sie vor der ewigen karmischen Qual der Upgrade-Hölle und ermöglicht Ihnen, das Debian-Nirvana zu erreichen.

Diese Liste zielt auf ein selbst-administriertes Arbeitsplatzsystem ab:

  • Nutzen Sie die Testing-Suite, da dies letztlich ein Rolling-Release ist, das von Debians Qualitässicherungs-Infrastruktur profitiert, wie Debians Continuous-Integration-Unterstützung, der Regel, dass nur Quellcode hochgeladen werden kann sowie die Nachverfolgung von Versionsübergängen bei Bibliotheken. Die Pakete in der Testing-Suite werden häufig genug aktualisiert, um stets die neuesten Funktionalitäten bieten zu können.

  • Set the codename corresponding to the testing suite ("trixie" during the bookworm-as-stable release cycle) in the source list.

  • Manually update this codename in the source list to the new one only after assessing situation by yourself for about a month after the major suite release. The Debian user and developer mailing list are good sources of information for this, too.

Die Verwendung von Unstable wird nicht empfohlen. Die Unstable-Suite ist für Entwickler gut geeignet zur Fehlersuche in Paketen, bringt aber für normale Arbeitsplatznutzer auch gewisse unnötige Risiken mit sich. Selbst wenn die Unstable-Suite von Debian die meiste Zeit sehr stabil erscheint, hat es in der Vergangenheit bereits Probleme mit bestimmten Paketen gegeben, von denen einige nicht einfach zu beheben waren.

Hier einige Tipps für grundlegende Vorsichtsmaßnahmen, wie Sie eine schnelle und einfache Systemwiederherstellung bei Fehlern in Debian-Paketen gewährleisten können:

  • Erstellen Sie ein Dual-boot-fähiges System, das Debians Stable-Suite auf einer anderen Partition installiert hat.

  • Halten Sie die Installations-CD griffbereit, um davon das Rettungssystem (Rescue mode) nutzen zu können.

  • Ziehen Sie in Betracht, apt-listbugs zu installieren, um vor einer Paketaktualisierung relevante Informationen aus der Debian-Fehlerdatenbank (BTS) einsehen zu können.

  • Lernen Sie genug über die Infrastruktur des Paketsystems, um das Problem umgehen zu können.

[Achtung] Achtung

Falls Sie keine dieser Vorsichsmaßnahmen durchführen können, sind Sie möglicherweise nicht bereit für die Testing- oder Unstable-Suite.

[Tipp] Tipp

Die offiziellen Richtlinien für das Debian-Archiv sind im Debian Policy-Handbuch, Kapitel 2 - The Debian Archive festgeschrieben.

Lassen Sie uns das Debian-Archiv aus der Sicht eines Benutzers betrachten.

For a system user, the Debian archive is accessed using the APT system.

The APT system specifies its data source as the source list and it is described in sources.list(5).

For the bookworm system with the typical HTTP access, the source list in one-line-style as the following:

deb http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free
deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free

deb http://security.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free
deb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free

Alternatively, the equivalent source list in deb822-style is the following.

Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: bookworm
Components: main non-free-firmware contrib non-free

Types: deb deb-src
URIs: http://security.debian.org/debian-security/
Suites: bookworm-security
Components: main non-free-firmware contrib non-free

Key points of the source list are followings.

  • One-line-style format

    • It's definition files are in the "/etc/apt/sources.list" file and "/etc/apt/sources.list.d/*.list" files.

    • Each line defines the data source for the APT system.

    • Die "deb"-Zeile definiert die Quelle für Binärpakete.

    • Die "deb-src"-Zeile definiert die Quelle für Quellpakete.

    • Das erste Argument ist die Wurzel-URL für das Debian-Archiv.

    • The 2nd argument is the distribution name using either the suite name or the codename.

    • Das dritte und die darauf folgenden Argumente sind eine Liste gültiger Namen für Bereiche im Debian-Archiv.

  • Deb822-style format

    • It's definition files are in "/etc/apt/sources.list.d/*.source" files.

    • Each block of lines separated by a blank line defines the data source for the APT system.

    • The "Types:" stanza defines the list of types such as "deb" and "deb-src".

    • The "URIs:" stanza defines the list of root URIs of the Debian archive.

    • The "Suites:" stanza defines the list of distribution names using either the suite name or the codename.

    • The "Components:" stanza defines the list of valid archive area names of the Debian archive.

The definition for "deb-src" can safely be omitted if it is just for aptitude which does not access source related meta data. It speeds up the updates of the archive meta data.

The URL can be "https://", "http://", "ftp://", "file://", ….

Lines starting with "#" are comments and ignored.

Here, I tend to use codename "bookworm" or "trixie" instead of suite name "stable" or "testing" to avoid surprises when the next stable is released.

[Tipp] Tipp

If "sid" is used in the above example instead of "bookworm", the "deb: http://security.debian.org/ …" line or its deb822 equivalent content for security updates in the source list is not required. This is because there is no security update archive for "sid" (unstable).

Here is the list of URL of the Debian archive sites and suite name or codename used in the configuration file after the bookworm release.


[Achtung] Achtung

Only pure stable release with security updates provides the best stability. Running mostly stable release mixed with some packages from testing or unstable release is riskier than running pure unstable release for library version mismatch etc. If you really need the latest version of some programs under stable release, please use packages from stable-updates and backports (see Abschnitt 2.7.4, „Aktualisierungen und Backports“) services. These services must be used with extra care.

[Achtung] Achtung

Sie sollten grundsätzlich nur eine der Suiten stable, testing oder unstable pro "deb"-Zeile angeben. Wenn Sie irgendeine Kombination von stable, testing und unstable in einer "deb"-Zeile verwenden, bremst dies die APT-Programme aus, wobei am Ende aber nur das neueste Archiv verwendet wird. Eine Auflistung mehrerer Einträge macht Sinn, wenn die "/etc/apt/preferences"-Datei genutzt wird und dort klare Richtlinien festgelegt sind (lesen Sie dazu Abschnitt 2.7.7, „Tweaking candidate version with apt-pinning).

[Tipp] Tipp

For the Debian system with the stable suite, it is a good idea to include the content with "http://security.debian.org/" in the source list to enable security updates as in the example above.

[Anmerkung] Anmerkung

The security bugs for the stable archive are fixed by the Debian security team. This activity has been quite rigorous and reliable. Those for the testing archive may be fixed by the Debian testing security team. For several reasons, this activity is not as rigorous as that for stable and you may need to wait for the migration of fixed unstable packages to the testing archive. Those for the unstable archive are fixed by the individual maintainer. Actively maintained unstable packages are usually in a fairly good shape by leveraging latest upstream security fixes. See Debian security FAQ for how Debian handles security bugs.


Die Paketanzahl in obiger Liste gilt für die amd64-Architektur. Der main-Bereich stellt das Debian-System dar (lesen Sie dazu Abschnitt 2.1.6, „Debian ist zu 100% freie Software“).

Die Struktur des Debian-Archivs können am besten erforschen, indem Sie mit Ihrem Browser die jeweilige Archiv-URL mit einem angehängten dists oder pool besuchen.

Die Distribution wird auf zwei Arten referenziert, über die Suite oder über den Codenamen. Das Wort "Distribution" wird in vielen Dokumentationen synonym zum Namen der Suite verwendet. Die Beziehung zwischen Suite und Codename kann wie folgt zusammengefasst werden:


Die Historie der Codenamen ist beschrieben in der Debian FAQ: Kapitel 6.2.1 Welche Codenamen wurden in der Vergangenheit verwendet?

In der strengeren Debian-Archiv-Terminologie wird das Wort "Sektion" (section) speziell für die Kategorisierung der Pakete durch Anwendungen genutzt (obwohl der Begriff "main section" auch verwendet werden könnte, um den Bereich "main" im Debian-Archiv zu beschreiben).

Immer wenn ein Debian-Entwickler (DD, von Debian developer) ein Paket in das Unstable-Archiv hochlädt (via incoming), muss der DD dafür sorgen, dass das hochgeladene Paket mit dem aktuellen Satz der Pakete im Unstable-Archiv kompatibel ist.

Falls der DD diese Kompatibilität absichtlich verletzt (für wichtige Bibliotheksaktualisierungen usw.), gibt es gewöhnlich eine Ankündigung dazu auf der Mailingliste debian-devel.

Before a set of packages are moved by the Debian archive maintenance script from the unstable archive to the testing archive, the archive maintenance script not only checks the maturity (about 2-10 days old) and the status of the RC bug reports for the packages but also tries to ensure them to be compatible with the latest set of packages in the testing archive. This process makes the testing archive very current and usable.

Durch den abgestuften, vom Release-Team gesteuerten Archiv-Freeze-Prozess ist das Testing-Archiv bereits gereift, um es auf diesem Wege - mit einigen manuellen Eingriffen - vollständig konsistent und fehlerfrei zu machen. Dann wird die neue Stable-Veröffentlichung erzeugt, indem der Codename für das alte Testing-Archiv dem neuen Stable-Archiv zugewiesen wird; anschließend wird ein neuer Codename für das neue Testing-Archiv erstellt. Die anfänglichen Inhalte des neuen Testing entsprechen exakt dem des neu veröffentlichten Stable.

Sowohl das Unstable- wie auch das Testing-Archiv können aus unterschiedlichen Gründen unter vorübergehenden Störungen leiden:

  • Upload eines beschädigten Pakets in das Archiv (meistens bei Unstable);

  • Verzögerung, bis die neuen Pakete im Archiv akzeptiert werden (meistens bei Unstable);

  • Timing-Probleme bei der Archiv-Synchronisation (sowohl bei Testing wie auch bei Unstable);

  • Manuelle Eingriffe in das Archiv wie das Entfernen eines Pakets (überwiegend bei Testing).

Falls Sie sich also jemals entscheiden, diese Archive zu verwenden, sollten Sie in der Lage sein, diese Arten von Störungen zu beheben oder zu umgehen.

[Achtung] Achtung

For about few months after a new stable release, most desktop users should use the stable archive with its security updates even if they usually use unstable or testing archives. For this transition period, both unstable and testing archives are not good for most people. Your system is difficult to keep in good working condition with the unstable archive since it suffers surges of major upgrades for core packages. The testing archive is not useful either since it contains mostly the same content as the stable archive without its security support (Debian testing-security-announce 2008-12). After a month or so, unstable or testing archives may become useful if you are careful.

[Tipp] Tipp

Wenn Sie das Testing-Archiv beobachten, stellen Sie fest, dass ein durch die Entfernung eines Pakets verursachtes Problem normalerweise umgangen wird, indem man das entsprechende Paket aus Unstable installiert, welches zwecks Behebung des Fehlers hochgeladen wurde.

Näheres über Begriffsdefinitionen zum Debian-Archiv finden Sie im Debian Policy-Handbuch:

Debian besteht aus folgenden Gründen zu 100% aus freier Software:

  • Debian installiert standardmäßig nur freie Software und respektiert so diedie Freiheit des Benutzers.

  • Debian stellt in main nur freie Software bereit.

  • Debian empfiehlt, nur freie Software aus main zu verwenden.

  • No packages in main depend nor recommend packages in non-free nor non-free-firmware nor contrib.

Einige Leute fragen sich, ob sich folgende Fakten widersprechen oder nicht:

Sie widersprechen sich nicht, und zwar aus folgenden Gründen:

  • Das Debian-System ist zu 100% frei und seine Pakete werden von Debian-Servern im main-Bereich vorgehalten.

  • Packages outside of the Debian system are hosted by Debian servers in the non-free, non-free-firmware and contrib areas.

Dies wird auch präzise unter Punkt 4 und 5 des Debian-Gesellschaftsvertrags erklärt:

  • Unsere Prioritäten sind unsere Anwender und Freie Software

    • Wir orientieren uns an den Bedürfnissen unserer Anwender und der Gemeinschaft für Freie Software. Deren Interessen stehen an erster Stelle. Wir werden unsere Nutzer bei ihrer Arbeit mit den verschiedensten Rechnerumgebungen unterstützen. Wir haben nichts gegen unfreie Arbeiten, die darauf abzielen, auf Debian-Systemen verwendet zu werden oder versuchen, eine Gebühr von Personen, die solche Arbeiten erstellen oder verwenden, einzufordern. Wir erlauben anderen, Distributionen zu erstellen, die das Debian-System und andere Arbeiten enthalten, ohne dafür irgendwelche Gebühren zu erheben. Um diese Ziele zu fördern, bieten wir ein integriertes System von hoher Qualität an, das die gerade beschriebene Nutzung nicht durch rechtliche Einschränkungen verhindert.

  • Arbeiten, die nicht unseren Standards für Freie Software genügen

    • We acknowledge that some of our users require the use of works that do not conform to the Debian Free Software Guidelines. We have created "non-free", "non-free-firmware" and "contrib" areas in our archive for these works. The packages in these areas are not part of the Debian system, although they have been configured for use with Debian. We encourage CD manufacturers to read the licenses of the packages in these areas and determine if they can distribute the packages on their CDs. Thus, although non-free works are not a part of Debian, we support their use and provide infrastructure for non-free packages (such as our bug tracking system and mailing lists). The Debian official media may include firmware that is otherwise not part of the Debian system to enable use of Debian with hardware that requires such firmware.

[Anmerkung] Anmerkung

The actual text of the 5th term in the current Debian Social Contract 1.2 is slightly different from the above text. This editorial deviation is intentional one to make this user document consistent without changing the real content of the Social Contract.

Users should be aware of the risks of using packages in the non-free, non-free-firmware and contrib areas:

  • fehlende Freiheit bei diesen Software-Paketen;

  • keine Unterstützung von Debian für solche Software-Pakete (Debian kann keine vernünftige Unterstützung für Software bieten, bei der nicht auf den Quellcode zugegriffen werden kann);

  • Verunreinigung Ihres zu 100% freien Debian-Systems.

Die Debian-Richtlinien für Freie Software (DFSG) sind der Freie-Software-Standard für Debian. Debian interpretiert "Software" im weitesten Sinne inklusive Dokumentation, Firmware, Logos und künstlerische Arbeiten in einem Paket. Aufgrund dessen sind Debians Freie-Software-Standards sehr streng.

Typical non-free, non-free-firmware and contrib packages include freely distributable packages of following types:

  • Dokumentationspakete unter der GNU-Lizenz für freie Dokumentation mit unveränderlichen Abschnitten wie diejenigen für GCC und Make (meistens zu finden in der Sektion non-free/doc).

  • Firmware packages containing sourceless binary data such as ones listed in Abschnitt 9.10.5, „Hardware-Treiber und Firmware“ as non-free-firmware. (mostly found in the non-free-firmware/kernel section.)

  • Spiele- und Schriftarten-Pakete mit Einschränkungen für die kommerzielle Verwendung und/oder inhaltliche Veränderung.

Please note that the number of non-free, non-free-firmware and contrib packages is less than 2% of that of main packages. Enabling access to the non-free, non-free-firmware and contrib areas does not obscure the source of packages. Interactive full screen use of aptitude(8) provides you with full visibility and control over what packages are installed from which area to keep your system as free as you wish.

Das Debian-System stellt einen konsistenten Satz von Binärpaketen bereit und verwendet dafür einen Deklarationsmechanismus für versionierte Binärabhängigkeiten über Felder in der control-Datei. Hier eine leicht vereinfachte Definition dieser Felder:

  • "Depends" / Hängt ab von

    • Depends deklariert eine absolute Abhängigkeit und alle Pakete, die in diesem Feld aufgelistet sind, müssen zur selben Zeit oder im Voraus installiert sein.

  • "Pre-Depends" / Hängt ab (vorher) von

    • Pre-Depends ist ähnlich wie Depends, nur dass die vollständige Installation der aufgelisteten Pakete im Voraus erforderlich ist.

  • "Recommends" / Empfiehlt

    • Recommends deklariert eine starke, aber nicht absolute Abhängigkeit. Die meisten Benutzer würden das Paket nicht installiert haben wollen, solange nicht auch alle in diesem Feld aufgelisteten Pakete installiert sind.

  • "Suggests" / Schlägt vor

    • Suggests deklariert eine schwache Abhängigkeit. Viele Benutzer dieses Pakets würden davon profitieren, auch die in diesem Feld aufgelisteten Pakete zu installieren, aber selbst ohne diese bietet das Paket vernünftige Funktionalität.

  • "Enhances" / Wertet auf

    • Enhances deklariert eine schwache Abhängigkeit wie Suggests, nur funktioniert sie in der entgegengesetzten Richtung.

  • "Breaks" / Beschädigt

    • Breaks deklariert eine Paket-Inkompatibilität, gewöhnlich mit einer Versionsangabe. Grundsätzlich lösen Sie etwaige Probleme, indem Sie alle in diesem Feld aufgelisteten Pakete auf den neuesten Stand bringen.

  • "Conflicts" / Kollidiert

    • Conflicts deklariert eine absolute Inkompatibilität. Alle in diesem Feld aufgelisteten Pakete müssen entfernt werden, um dieses Paket zu installieren.

  • "Replaces" / Ersetzt

    • Replaces wird deklariert, wenn Dateien, die von diesem Paket installiert werden, andere Dateien in den aufgelisteten Paketen ersetzen.

  • "Provides" / Stellt bereit

    • Provides wird deklariert, wenn dieses Paket alle Dateien und Funktionalitäten der hier aufgelisteten Pakete bereitstellt.

[Anmerkung] Anmerkung

Bitte beachten Sie, dass die gleichzeitige Deklaration von "Provides", "Conflicts" und "Replaces" für ein virtuelles Paket eine vernünftige Konfiguration ist. So wird sichergestellt, dass nur ein reelles Paket, das dieses virtuelle Paket bereit stellt, zur jeweiligen Zeit installiert sein kann.

Die offizielle Definition inklusive der Quellpaket-Abhängigkeiten finden Sie im Debian Policy-Handbuch: Kapitel 7 - Declaring relationships between packages.

Hier folgt eine vereinfachte Ereignisabfolge für das APT-Paketmanagement.

Um des Gesamtbildes willen habe ich hier absichtlich technische Details übersprungen.

Whatever suite of Debian system you may decide to use, you may still wish to run versions of programs which aren't available in that suite. Even if you find binary packages of such programs in other Debian suites or in other non-Debian resources, their requirements may conflict with your current Debian system.

Although you can tweak package management system with apt-pinning technique etc. as described in Abschnitt 2.7.7, „Tweaking candidate version with apt-pinning to instal such out-of-sync binary packages, such tweaking approaches have only limited use cases since they may break those programs and your system.

Before brutally installing such out-of-sync packages, you should seek all available alternative safer technical solutions which are compatible with your current Debian syetem.

Paketmanagement-Operationen können im Debian-System mit vielen, auf APT aufbauenden Werkzeugen durchgeführt werden. Wir beschreiben hier drei grundlegende Paketmanagement-Werkzeuge: apt, apt-get / apt-cache und aptitude.

Für Paketmanagement-Operationen inklusive Installation oder Aktualisierung der Paket-Metadaten benötigen Sie root-Privilegien.

Obwohl aptitude ein tolles interaktives Werkzeug ist, das auch der Autor überwiegend verwendet, sollten Sie einige warnende Fakten kennen:

Die Befehle apt-get und apt-cache sind sehr grundlegende APT-basierte Paketmanagement-Werkzeuge.

  • apt-get und apt-cache bieten lediglich eine Befehlszeilen-Oberfläche.

  • apt-get eignet sich sehr gut für die großen Systemhochrüstungen von einer Debian-Veröffentlichung auf die nächste, usw.

  • apt-get bietet einen robusten Mechanismus zur Auflösung von Paketabhängigkeiten.

  • apt-get ist weniger anspruchsvoll bezüglich der Hardware-Ressourcen. Es verbraucht weniger Speicher und läuft schneller.

  • apt-cache bietet eine grundlegende, auf regulären Ausdrücken basierende Suche über Paketname und -beschreibung.

  • apt-get und apt-cache können über /etc/apt/preferences mehrere Versionen des gleichen Pakets verwalten, aber dies ist ziemlich mühselig.

Das apt-Programm ist eine Befehlszeilenschnittstelle für das Paketmanagement. Es ist vom Grundsatz her ein Wrapper-Skript für apt-get, apt-cache und ähnliche Programme und als Bedienoberfläche für den Benutzer gedacht; einige für die interaktive Nutzung zweckmäßige Optionen sind standardmäßig aktiviert.

  • apt bietet eine nette Fortschrittsanzeige bei der Paketinstallation mittels apt install.

  • Standardmäßig entfernt apt die zwischengespeicherten .deb-Dateien nach der erfolgreichen Installation.

[Tipp] Tipp

Benutzern wird empfohlen, den neuen apt(8)-Befehl zu verwenden, der für die interaktive Nutzung durch den Benutzer gedacht ist. In Shell-Skripten sollten Sie apt-get(8) und apt-cache(8) einsetzen.

Der Befehl aptitude ist das vielseitigste APT-basierte Paketmanagement-Werkzeug.

  • aptitude bietet eine interaktive textbasierte Benutzeroberfläche mit Vollbildschirm-Ansicht.

  • aptitude enthält auch eine Befehlszeilen-Benutzerschnittstelle.

  • aptitude eignet sich sehr gut für das tägliche interaktive Paketmanagement, wie die Überprüfung installierter Pakete und die Suche nach verfügbaren Paketen.

  • aptitude ist anspruchsvoller bezüglich der Hardware-Ressourcen. Es verbraucht mehr Speicher und läuft geringfügig langsamer.

  • aptitude bietet eine erweiterte, auf regulären Ausdrücken basierende Suche über alle Paket-Metadaten.

  • aptitude kann mehrere Versionen des gleichen Pakets verwalten, ohne dabei /etc/apt/preferences zu verwenden, und es ist sehr intuitiv.

Hier einige grundlegende Paketmanagement-Operationen auf der Befehlszeile, die apt(8), aptitude(8) und apt-get(8) / apt-cache(8) verwenden.

Tabelle 2.6. Grundlegende Paketmanagement-Operationen mit apt(8), aptitude(8) und apt-get(8) / apt-cache(8)

apt-Syntax aptitude-Syntax apt-get/apt-cache-Syntax Beschreibung
apt update aptitude update apt-get update Aktualisieren der Paket-Metadaten
apt install foo aptitude install foo apt-get install foo Installieren der Installationskandidat-Version von "foo" inklusive seiner Abhängigkeiten
apt upgrade aptitude safe-upgrade apt-get upgrade Installieren der Installationskandidat-Version aller installierten Pakete, ohne irgendwelche anderen Pakete zu entfernen
apt full-upgrade aptitude full-upgrade apt-get dist-upgrade Installieren der Installationskandidat-Version aller installierten Pakete und Entfernen anderer Pakete, falls nötig
apt remove foo aptitude remove foo apt-get remove foo Entfernen des Pakets "foo" bei gleichzeitiger Erhaltung seiner Konfigurationsdateien
apt autoremove Nicht verfügbar apt-get autoremove Entfernen aller automatisch installierten, nicht mehr benötigten Pakete
apt purge foo aptitude purge foo apt-get purge foo Vollständiges Entfernen des Pakets "foo" und Löschung seiner Konfigurationsdateien
apt clean aptitude clean apt-get clean Vollständiges Leeren des lokalen Depots heruntergeladener Paketdateien
apt autoclean aptitude autoclean apt-get autoclean Leeren des lokalen Depots heruntergeladener Paketdateien für veraltete Pakete
apt show foo aptitude show foo apt-cache show foo Anzeigen von detaillierten Informationen über das Paket "foo"
apt search regex aptitude search regex apt-cache search regex Suchen nach Paketen, auf die der reguläre Ausdruck regex zutrifft
Nicht verfügbar aptitude why regex Nicht verfügbar Erklären, warum die Pakete, auf die der reguläre Ausdruck regex zutrifft, installiert werden sollen
Nicht verfügbar aptitude why-not regex Nicht verfügbar Erklären, warum die Pakete, auf die der reguläre Ausdruck regex zutrifft, nicht installiert werden sollen
apt list --manual-installed aptitude search '~i!~M' apt-mark showmanual Händisch installierte Paket auflisten

apt/apt-get und aptitude können ohne größere Probleme gemischt verwendet werden.

Der Befehl "aptitude why regex" kann mehr Informationen ausgeben, wenn "-v" verwendet wird ("aptitude -v why regex"). Ähnliche Informationen erhalten Sie mit apt rdepends paket" oder "apt-cache rdepends paket.

Wenn aptitude im Befehlszeilenmodus gestartet wird und Probleme wie z.B. Paketkonflikte anzeigt, können Sie im Nachhinein in die interaktive Vollbildschirm-Ansicht wechseln, indem Sie am Prompt die Taste "e" drücken.

[Anmerkung] Anmerkung

Obwohl der aptitude-Befehl reichhaltige Funktionen mit sich bringt, wie z.B. seinen erweiterten Paketabhängigkeitsauflöser, hat diese Komplexität einige Rückentwicklungen verursacht (oder könnte sie auch in Zukunft verursachen), wie z.B. Fehler #411123, Fehler #514930 und Fehler #570377. Im Zweifel bevorzugen Sie bitte die apt-, apt-get- und apt-cache-Befehle.

Befehlsoptionen können direkt im Anschluß an den "aptitude"-Befehl angegeben werden.


Weitere Informationen finden Sie unter aptitude(8) und im "aptitude-Benutzerhandbuch" in "/usr/share/doc/aptitude/README".

Es folgen einige erwähnenswerte Tastenkürzel, um in der Vollbildschirm-Ansicht den Status von Paketen abzufragen und "geplante Aktionen" vorzumerken.


The file name specification of the command line and the menu prompt after pressing "l" and "//" take the aptitude regex as described below. Aptitude regex can explicitly match a package name using a string started by "~n" and followed by the package name.

[Tipp] Tipp

Im interaktiven Modus müssen Sie "U" drücken, um alle installierten Pakete auf die Installationskandidat-Version zu aktualisieren. Andernfalls werden nur die markierten Pakete und solche mit versionierten Abhängigkeiten zu diesen auf die Installationskandidat-Version aktualisiert.

In der interaktiven Vollbildschirm-Ansicht von aptitude(8) werden Pakete in der Paketliste wie im folgenden Beispiel angezeigt:

idA   libsmbclient                             -2220kB 3.0.25a-1  3.0.25a-2

Diese Zeile hat die folgenden Bedeutungen (von links nach rechts):

  • die Markierung für den aktuellen Zustand (der erste Buchstabe);

  • die Markierung für die geplante Aktion (der zweite Buchstabe);

  • die Markierung für "automatisch installiert" (der dritte Buchstabe);

  • der Paketname;

  • die voraussichtliche Änderung beim verwendeten Platz auf der Festplatte, ausgelöst durch die geplante Aktion;

  • die aktuelle Version des Pakets;

  • die Installationskandidat-Version des Pakets.

[Tipp] Tipp

Eine vollständige Liste der Markierungen finden Sie am unteren Ende der Hilfe-Ansicht, die Ihnen durch Drücken von "?" angezeigt wird.

Die Installationskandidat-Version wird aufgrund der aktuellen lokalen Voreinstellungen ausgewählt (lesen Sie dazu apt_preferences(5) und Abschnitt 2.7.7, „Tweaking candidate version with apt-pinning).

Im Menü unter Ansichten sind verschiedene Arten von Paketansichten verfügbar:


[Anmerkung] Anmerkung

Bitte helfen Sie uns, Pakete mit debtags zu versehen!

Die Standard-Paketansicht kategorisiert Pakete ähnlich wie dselect plus einiger zusätzlicher Funktionalitäten.


[Tipp] Tipp

Die Tasks-Ansicht kann verwendet werden, um aus verschiedenen Paketen für eine Aufgabe auszuwählen.

Die Regex-Formel (regulärer Ausdruck) ist ähnlich wie bei mutt ein erweiterter regulärer Ausdruck (ERE) (lesen Sie dazu Abschnitt 1.6.2, „Reguläre Ausdrücke“); die Bedeutung der aptitude-spezifischen speziellen Regelerweiterungen ist im folgenden erklärt:

Tabelle 2.11. Liste von aptitudes Regex-Formeln

Beschreibung der erweiterten Regel Regex-Formel
Treffer auf Paketname ~nregex_name
Treffer auf Paketbeschreibung ~dregex_beschreibung
Treffer auf Task-Name ~tregex_task
Treffer auf Debtag ~Gregex_debtag
Treffer auf Paketbetreuer ~mregex_betreuer
Treffer auf Paketsektion ~sregex_sektion
Treffer auf Paketversion ~Vregex_version
Treffer auf Archiv ~A{bookworm,trixie,sid}
Treffer auf Paket-Herkunft ~O{debian,…}
Treffer auf Priorität ~p{extra,important,optional,required,standard}
Treffer auf essentielle Pakete ~E
Treffer auf virtuelle Pakete ~v
Treffer auf neue Pakete ~N
Treffer auf noch nicht abgeschlossene Aktion ~a{install,upgrade,downgrade,remove,purge,hold,keep}
Treffer auf installierte Pakete ~i
Treffer auf Pakete mit der A-Markierung (automatisch installierte Pakete) ~M
Treffer auf Pakete ohne A-Markierung (vom Administrator manuell zur Installation ausgewählte Pakete) ~i!~M
Treffer auf installierte und aktualisierbare Pakete ~U
Treffer auf entfernte Pakete, deren Konfigurationsdateien aber noch vorhanden sind ~c
Treffer auf Pakete, die entfernt oder vollständig inklusive der Konfigurationsdateien entfernt wurden oder entfernt werden können ~g
Treffer auf Pakete, die eine beschädigte Abhängigkeit melden ~b
Treffer auf Pakete, die eine beschädigte Abhängigkeit vom Typ typ melden ~Btyp
Treffer auf Pakete, die eine Abhängigkeit vom Typ typ definiert haben ~D[typ:]muster
Treffer auf Pakete, die eine beschädigte Abhängigkeit vom Typ typ definiert haben ~DB[typ:]muster
Treffer auf Pakete, zu denen auf muster passende Pakete die Abhängigkeit typ definiert haben ~R[typ:]muster
Treffer auf Pakete, zu denen auf muster passende Pakete die beschädigte Abhängigkeit typ definiert haben ~RB[typ:]muster
Treffer auf Pakete, von denen andere installierte Pakete abhängig sind ~R~i
Treffer auf Pakete, von denen keine anderen installierten Pakete abhängig sind !~R~i
Treffer auf Pakete, von denen andere installierte Pakete abhängig sind oder empfohlen werden ~R~i|~Rrecommends:~i
Treffer auf Pakete, die auf muster passen, mit gefilterter Version ~S filter muster
Treffer auf alle Pakete (true/wahr) ~T
Treffer auf kein Paket (false/unwahr) ~F

  • Der Regex-Teil ist der gleiche erweiterte reguläre Ausdruck (ERE) wie in Unix-typischen Textverarbeitungswerkzeugen und nutzt "^", ".*", "$" usw., wie es auch egrep(1), awk(1) und perl(1) tun.

  • Der Typ einer Abhängigkeit zur Festlegung von Wechselbeziehungen zwischen Paketen ist einer aus der folgenden Liste: depends (hängt ab von), predepends (hängt ab (vorher) von), recommends (empfiehlt), suggests (schlägt vor), conflicts (kollidiert mit), replaces (ersetzt), provides (stellt bereit).

  • Der Typ der Standardabhängigkeit ist "depends".

[Tipp] Tipp

Wenn regex_muster ein Null-String ist, geben Sie "~T" direkt hinter dem Befehl an.

Hier einige Abkürzungen:

  • "~Pname" == "~Dprovides:name"

  • "~Cname" == "~Dconflicts:name"

  • "…~W name" == "(…|name)"

Benutzer, denen mutt geläufig ist, werden sich auch hier schnell zurechtfinden, da mutt die Inspiration für die Syntax des regulären Ausdrucks war. Lesen Sie "SEARCHING, LIMITING, AND EXPRESSIONS" im "Benutzerhandbuch" unter "/usr/share/doc/aptitude/README".

[Anmerkung] Anmerkung

Seit der Lenny-Version von aptitude(8) kann für die Suche über reguläre Ausdrücke statt der alten kurzen Form (wie z.B. "~b") auch die neue lange Form (entsprechend "?broken") verwendet werden. Leerzeichen " " werden jetzt als Regex-Abschluß-Zeichen gewertet, zusätzlich zu dem Tilde-Zeichen "~". Weitere Details zur Syntax der neuen langen Form finden Sie im Benutzerhandbuch.

Hier ein paar Beispiele für aptitude(8)-Operationen.

Hier beschreibe ich, wie Sie den automatisch/manuell-Installationsstatus bereinigen können (nach der Verwendung von anderen Paketinstallationsprogrammen o.ä.):

  1. Starten Sie aptitude im interaktiven Modus als root.

  2. Drücken Sie "u", "U", "f" und "g", um die Paketliste sowie die Pakete zu aktualisieren.

  3. Drücken Sie "l" und setzen Sie den Anzeigefilter auf "~i(~R~i|~Rrecommends:~i)"; drücken Sie dann "M" mit der Markierung auf "Installierte Pakete", um deren Status auf "Automatisch installiert" zu ändern.

  4. Drücken Sie "l", setzen Sie den Anzeigefilter auf "~prequired|~pimportant|~pstandard|~E" und drücken Sie "m" mit der Markierung auf "Installierte Pakete", um deren Status auf "Manuell installiert" zu ändern.

  5. Drücken Sie "l", setzen Sie den Anzeigefilter auf "~i!~M" und entfernen Sie nicht genutzte Pakete, indem Sie "-" auf jedem davon drücken (wenn die Markierung auf "Installierte Pakete" steht, können Sie mit "[" die Liste aufklappen, so dass alle Pakete sichtbar werden).

  6. Drücken Sie "l" um den Anzeigefilter auf "~i" zu setzen; drücken Sie dann "m", während die Markierung auf "Tasks" steht, um diese Pakete auf "Manuell installiert" zu setzen.

  7. Beenden Sie aptitude.

  8. Führen Sie "apt-get -s autoremove|less" als root aus, um zu überprüfen, welche Pakete derzeit von apt-get als ungenutzt gemeldet werden.

  9. Starten Sie aptitude erneut im interaktiven Modus und markieren Sie Pakete, bei denen dies nötig ist, mit "m" als "Manuell installiert".

  10. Führen Sie erneut "apt-get -s autoremove|less" als root aus, um erneut zu überprüfen, ob bei ENTFERNT nur die gewünschten Pakete enthalten sind.

  11. Führen Sie "apt-get autoremove|less" als root aus, um nicht genutzte Pakete automatisch zu entfernen.

Die Aktion "m" mit der Markierung auf "Tasks" ist eine optionale Aktion, um die Situation massenhaft zu entfernender Pakete in der Zukunft zu vermeiden.

[Anmerkung] Anmerkung

Beim Wechsel auf einen neue Veröffentlichung sollten Sie eine Neuinstallation in Erwägung ziehen, auch wenn Debian wie unten beschrieben auch auf die neue Version hochgerüstet werden kann. So haben Sie eine Chance, Müll, der sich über die Dauer der Zeit angesammelt hat, loszuwerden und bekommen die beste Kombination der aktuellsten Pakete. Natürlich sollten Sie ein vollständiges System-Backup machen und an einem sicheren Platz ablegen (lesen Sie dazu Abschnitt 10.2, „Datensicherung und -wiederherstellung“), bevor Sie neu installieren. Ich empfehle für einen sanften Übergang eine Dual-Boot-Installation unter Verwendung separater Partitionen.

You can perform system wide upgrade to a newer release by changing contents of the source list pointing to a new release and running the "apt update; apt dist-upgrade" command.

To upgrade from stable to testing or unstable during the bookworm-as-stable release cycle, you replace "bookworm" in the source list example of Abschnitt 2.1.5, „Grundlagen über das Debian-Archiv“ with "trixie" or "sid".

In der Realität könnte es vielleicht einige Komplikationen aufgrund von Problemen mit Paketübergängen geben, meistens wegen Paketabhängigkeiten. Je größer die Unterschiede bei der Hochrüstung sind, um so wahrscheinlicher werden Sie gravierendere Probleme bekommen. Für die Hochrüstung des alten Stable auf das neue Stable nach dessen Veröffentlichung können Sie die neuen Veröffentlichungshinweise (Release Notes) lesen. Folgen Sie exakt der dort beschriebenen Prozedur, um die möglichen Probleme zu minimieren.

Wenn Sie sich entscheiden, vor der offiziellen Freigabe der nächsten Veröffentlichung von Stable zu Testing zu wechseln, gibt es keine Veröffentlichunshinweise, die Ihnen helfen könnten. Die Unterschiede zwischen Stable und Testing könnten seit der letzten Stable-Veröffentlichung ziemlich groß geworden sein und die Situation für eine Hochrüstung recht komplex machen.

Sie sollten vorbeugende Schritte für das vollständige Upgrade durchführen, indem Sie aktuellste Informationen von den Mailinglisten sammeln, und Ihren gesunden Menschenverstand einsetzen.

  1. Lesen Sie die vorherigen "Veröffentlichungshinweise (Release Notes)".

  2. Machen Sie eine vollständige Sicherung (Backup) von Ihrem System (speziell Daten und Konfigurationsdateien).

  3. Halten Sie ein boot-fähiges Medium bereit für den Fall eines beschädigten Bootloaders.

  4. Informieren Sie die Benutzer des Systems rechtzeitig vorher.

  5. Zeichnen Sie die Aktivitäten während des Upgrades mit script(1) auf.

  6. Wenden Sie "unmarkauto" für erforderliche Pakete an, also z.B. "aptitude unmarkauto vim", um solche Pakete als "Manuell installiert" zu markieren und zu verhindern, dass sie entfernt werden.

  7. Minimieren Sie die Anzahl installierter Pakete, um die Wahrscheinlichkeit von Paketkonflikten zu reduzieren, entfernen Sie z.B. Desktop-Task-Pakete.

  8. Remove the "/etc/apt/preferences" file (disable apt-pinning).

  9. Versuchen Sie, das Upgrade in mehreren Schritten durchzuführen: oldstablestabletestingunstable.

  10. Update the source list to point to new archive only and run "aptitude update".

  11. Installieren Sie neue Kern-Pakete separat im Voraus, z.B. "aptitude install perl" (optional).

  12. Führen Sie "apt-get -s dist-upgrade" aus, um die Auswirkungen im Voraus abschätzen zu können.

  13. Führen Sie als letztes den Befehl "apt-get dist-upgrade" aus.

[Achtung] Achtung

Es ist nicht klug, bei Hochrüstung einer Stable-Veröffentlichung auf ein anderes Stable ein oder mehrere Debian-Hauptveröffentlichungen zu überspringen (also z.B. von Debian 5.0 direkt auf 7.0 hochzurüsten und dabei 6.0 zu überspringen).

[Achtung] Achtung

In früheren "Veröffentlichungshinweisen" wurden für GCC, Linux-Kernel, initrd-Werkzeuge, Glibc, Perl, APT-Werkzeuge usw. spezielle Vorsichtsmaßnahmen bei systemweiten Upgrades erwähnt.

Informationen zu täglichen Upgrades in Unstable finden Sie in Abschnitt 2.4.3, „Absicherungen für den Fall von Paketproblemen“.

Hier eine Liste weiterer Paketmanagement-Operationen, die aptitude nicht unterstützt, weil es auf einer anderen Ebene arbeitet oder weil ihm die nötigen Funktionen fehlen.

Tabelle 2.13. Liste erweiterter Paketmanagement-Operationen

Befehl Aktion
COLUMNS=120 dpkg -l paketnamen_muster Status eines installierten Pakets für einen Fehlerbericht auflisten
dpkg -L paketname Inhalte eines installierten Pakets auflisten
dpkg -L paketname | egrep '/usr/share/man/man.*/.+' Handbuchseiten (manpages) für ein installiertes Paket auflisten
dpkg -S dateinamen_muster Installierte Pakete auflisten, die auf das Muster passende Dateien enthalten
apt-file search dateinamen_muster Pakete im Archiv auflisten, die auf das Muster passende Dateien enthalten
apt-file list paketnamen_muster Inhalte von auf das Muster passenden Paketen im Archiv auflisten
dpkg-reconfigure paketname Dieses Paket neu konfigurieren
dpkg-reconfigure -plow paketname Dieses Paket mit detaillierten Fragen neu konfigurieren
configure-debian Pakete über das Vollbildschirm-Menü neu konfigurieren
dpkg --audit System nach teilweise installierten Paketen durchsuchen
dpkg --configure -a Alle teilweise installierten Pakete konfigurieren
apt-cache policy binärpaketname Verfügbare Version, Priorität und Archivinformationen eines Binärpakets anzeigen
apt-cache madison paketname Verfügbare Version und Archivinformationen eines Pakets anzeigen
apt-cache showsrc binärpaketname Quellpaket-Informationen eines Binärpakets anzeigen
apt-get build-dep paketname Zum Bau eines Pakets benötigte Pakete installieren
aptitude build-dep paketname Zum Bau eines Pakets benötigte Pakete installieren
apt-get source paketname Ein Quellpaket herunterladen (aus dem Standardarchiv)
dget URL für dsc-Datei Ein Quellpaket herunterladen (aus einem anderen Archiv)
dpkg-source -x paketname_version-debian.revision.dsc Einen Quellcodebaum aus einem Satz von Quellpaketen erstellen ("*.orig.tar.gz" und "*.debian.tar.gz" / "*.diff.gz")
debuild binärdatei Paket(e) aus einem lokalen Quellcodebaum bauen
make-kpkg kernel_image Ein Kernelpaket aus einem Kernel-Quellcodebaum bauen
make-kpkg --initrd kernel_image Ein Kernelpaket mit aktivierter initramfs aus einem Kernel-Quellcodebaum bauen
dpkg -i paketname_version-debian.revision_arch.deb Ein lokales Paket in das System installieren
apt install /pfad/zu/paketname.deb Ein lokales Paket in das System installieren und dabei versuchen, die Abhängigkeiten automatisch aufzulösen
debi paketname_version-debian.revision_arch.dsc Lokale(s) Paket(e) in das System installieren
dpkg --get-selections '*' >selection.txt dpkg-Paketauswahlinformationen sichern
dpkg --set-selections <selection.txt dpkg-Paketauswahlinformationen setzen
echo paketname hold | dpkg --set-selections dpkg-Paketauswahlinformationen eines Pakets auf hold (halten) setzen (gleichbedeutend mit "aptitude hold paketname")

[Anmerkung] Anmerkung

Für ein Paket mit der multi-arch-Funktionalität müssen Sie unter Umständen bei einigen Befehlen den Architekturnamen mit angeben. Verwenden Sie zum Beispiel "dpkg -L libglib2.0-0:amd64", um die Inhalte des Pakets libglib2.0-0 für die amd64-Architektur anzuzeigen.

[Achtung] Achtung

Grundlegende Paketwerkzeuge wie "dpkg -i …" und "debi …" sollten vom Systemadministrator mit Vorsicht eingesetzt werden. Erforderliche Paketabhängigkeiten werden dabei nicht automatisch aufgelöst. Dpkg's Befehlszeilenoption "--force-all" und ähnliche (schauen Sie in dpkg(1)) dürfen nur von Experten eingesetzt werden. Sie zu verwenden ohne deren Auswirkungen vollständig zu verstehen könnte das komplette System beschädigen.

Bitte beachten Sie folgendes:

Die Installation von debsums ermöglicht die Verifizierung installierter Pakete über MD5sum-Werte aus der Datei "/var/lib/dpkg/info/*.md5sums" mittels debsums(1). Details darüber, wie MD5sum arbeitet, finden Sie in Abschnitt 10.3.5, „Die MD5-Prüfsumme“.

[Anmerkung] Anmerkung

Da die MD5sum-Datenbank durch Eindringlinge gefälscht werden könnte, ist debsums(1) als Werkzeug für die Systemsicherheit nur von begrenztem Nutzen. Es eignet sich aber gut dafür, lokale Veränderungen durch den Administrator oder durch Beschädigungen aufgrund von Fehlern des Speichermediums zu erkennen.

Obwohl der Besuch der Debian-Site https://packages.debian.org/ heutzutage einfache Möglichkeiten bietet, die Paket-Metadaten zu durchsuchen, wollen wir uns auch die traditionellen Wege anschauen.

Die Befehle grep-dctrl(1), grep-status(1) und grep-available(1) können verwendet werden, um jegliche Datei zu durchsuchen, die das grundsätzliche Format einer control-Datei für ein Debian-Paket hat.

"dpkg -S dateinamen_muster" kann verwendet werden, um durch dpkg installierte Pakete zu finden, die auf das Suchmuster passende Dateinamen enthalten. Hiermit werden jedoch keine Dateien gefunden, die durch Skripte der Paketbetreuer erzeugt wurden.

Wenn Sie eine tiefergehende Suche der dpkg-Metadaten benötigen, müssen Sie den Befehl "grep -e regex_muster *" im Verzeichnis "/var/lib/dpkg/info/" ausführen. So können Sie Wörter finden, die in Paketskripten und Texten für Abfragen bei der Installation auftauchen.

Wenn Sie Paketabhängigkeiten rekursiv abfragen möchten, sollten Sie apt-rdepends(8) verwenden.

Lassen Sie uns betrachten, wie das Debian-Paketmanagement-System intern funktioniert. Dies sollte Ihnen dabei helfen, eigene Lösungen für gewisse Paketprobleme zu finden.

[Tipp] Tipp

Die "Release"-Datei im Wurzelverzeichnis wird verwendet, um die Archive im Secure-APT-System zu signieren.

Jede Suite im Debian-Archiv hat im Wurzelverzeichnis eine "Release"-Datei, z.B. "http://deb.debian.org/debian/dists/unstable/Release", wie hier:

Origin: Debian
Label: Debian
Suite: unstable
Codename: sid
Date: Sat, 14 May 2011 08:20:50 UTC
Valid-Until: Sat, 21 May 2011 08:20:50 UTC
Architectures: alpha amd64 armel hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 sparc
Components: main contrib non-free
Description: Debian x.y Unstable - Not Released
MD5Sum:
 bdc8fa4b3f5e4a715dd0d56d176fc789 18876880 Contents-alpha.gz
 9469a03c94b85e010d116aeeab9614c0 19441880 Contents-amd64.gz
 3d68e206d7faa3aded660dc0996054fe 19203165 Contents-armel.gz
...
[Anmerkung] Anmerkung

Hier finden Sie den Grund dafür, warum ich in Abschnitt 2.1.5, „Grundlagen über das Debian-Archiv“ "Suite" und "Codename" verwende. Die "Distribution" wird benutzt, um sowohl auf "Suite" wie auch auf "Codename" zu verweisen. Alle Namen der Archiv-Bereiche, die von dem Archiv angeboten werden, sind unter "Components" aufgelistet.

The integrity of the top level "Release" file is verified by cryptographic infrastructure called the secure apt as described in apt-secure(8).

  • Die kryptografische Signaturdatei "Release.gpg" wird aus der authentischen "Release"-Datei im Wurzelverzeichnis und dem geheimen Debian-Archiv-Schlüssel erzeugt.

  • The public Debian archive keys are locally installed by the latest debian-archive-keyring package.

  • The secure APT system automatically verifies the integrity of the downloaded top level "Release" file cryptographically by this "Release.gpg" file and the locally installed public Debian archive keys.

  • Die Integrität all der "Packages"- und "Sources"-Dateien wird über MD5sum-Werte in der "Release"-Datei im Wurzelverzeichnis verifiziert. Die Integrität der Paketdateien wird über MD5sum-Werte in den "Packages"- und "Sources"-Dateien verifiziert. Lesen Sie dazu debsums(1) und Abschnitt 2.4.2, „Verifizierung von installierten Paketdateien“.

  • Da die kryptografische Signaturverifizierung viel CPU-intensiver ist als die Berechnung von MD5sum-Werten, bietet die Verwendung von MD5sum-Werten für die Pakete bei gleichzeitiger Nutzung einer kryptografischen Signatur für die "Release"-Datei im Wurzelverzeichnis einen guten Kompromiss zwischen Sicherheit und Performance (weiteres in Abschnitt 10.3, „Datensicherheits-Infrastruktur“).

If the source list entry specifies the "signed-by" option, the integrity of its downloaded top level "Release" file is verified using specified public key. This is useful when the source list contains non-Debian archives.

[Tipp] Tipp

The use of apt-key(8) command for APT key management is deprecated.

Also, you can manually verify the integrity of the "Release" file with the "Release.gpg" file and the public Debian archive key posted on ftp-master.debian.org using gpg.

When APT tools, such as aptitude, apt-get, synaptic, apt-file, auto-apt, … are used, we need to update the local copies of the meta data containing the Debian archive information. These local copies have following file names corresponding to the specified distribution, area, and architecture names in the source list (see Abschnitt 2.1.5, „Grundlagen über das Debian-Archiv“).

  • "/var/lib/apt/lists/deb.debian.org_debian_dists_distribution_Release"

  • "/var/lib/apt/lists/deb.debian.org_debian_dists_distribution_Release.gpg"

  • "/var/lib/apt/lists/deb.debian.org_debian_dists_distribution_area_binary-architektur_Packages"

  • "/var/lib/apt/lists/deb.debian.org_debian_dists_distribution_bereich_source_Sources"

  • "/var/cache/apt/apt-file/deb.debian.org_debian_dists_distribution_Contents-architektur.gz" (für apt-file)

First 4 types of files are shared by all the pertinent APT commands and updated from command line by "apt-get update" or "aptitude update". The "Packages" meta data are updated if the "deb" is specified in the source list. The "Sources" meta data are updated if the "deb-src" is specified in the source list.

Die "Packages"- und "Sources"-Metadaten enthalten einen "Filename:"-Eintrag, der auf den Speicherort der Binär- und Quellpakete verweist. Derzeit sind diese Pakete in dem Verzeichnisbaum unterhalb von "pool/" abgelegt zwecks einfacher Übergänge zwischen den Veröffentlichungen.

Lokale Kopien der "Packages"-Metadaten können mit Hilfe von aptitude interaktiv durchsucht werden. Der spezialisierte Suchbefehl grep-dctrl(1) kann lokale Kopien der "Packages"- und "Sources"-Metadaten durchsuchen.

Lokale Kopien von "Contents-architektur"-Metadaten können mittels "apt-file update" aktualisiert werden und ihr Speicherort unterscheidet sich von den vier anderen. Lesen Sie dazu apt-file(1). (auto-apt nutzt standardmäßig andere Speicherorte für die lokale Kopie von "Contents-architektur.gz".)

Die Dateien von Debian-Paketen haben eine bestimmte Namensstruktur:


[Tipp] Tipp

Hier sind nur die grundlegenden Quellpaketformate beschrieben. Lesen Sie weitere Details in dpkg-source(1).


[Anmerkung] Anmerkung

Sie können die Reihenfolge von Paketversionen (welche Versionsnummer höher ist) mit dpkg(1) überprüfen, z.B. mittels "dpkg --compare-versions 7.0 gt 7.~pre1 ; echo $?" .

[Anmerkung] Anmerkung

Der debian-installer (d-i) nutzt udeb als Dateinamenerweiterung für seine Binärpakete statt des normalen deb. Ein udeb-Paket ist ein reduziertes deb-Paket, in dem einige nicht-essentielle Bestandteile wie Dokumentation entfernt wurden, um Speicherplatz zu sparen; dazu wurden die Anforderungen an die Paketrichtlinien etwas gelockert. Sowohl deb- wie auch udeb-Pakete verwenden die gleiche Paketstruktur. Das "u" steht für micro (sehr klein).

dpkg(1) ist das Werkzeug, das beim Debian-Paketmanagement auf der untersten Ebene arbeitet. Es ist sehr leistungsfähig und muss mit Vorsicht verwendet werden.

Beim Installieren eines Pakets "paketname" arbeitet dpkg folgende Schritte ab:

  1. die deb-Datei auspacken (gleichbedeutend mit "ar -x");

  2. ausführen von "paketname.preinst" mittels debconf(1);

  3. installieren des Paketinhalts in das System (gleichbedeutend zu "tar -x");

  4. ausführen von "paketname.postinst" mittels debconf(1).

Das debconf-System bietet eine standardisierte Benutzer-Schnittstelle mit Unterstützung für I18N und L10N (Näheres in Kapitel 8, I18N und L10N).

Tabelle 2.17. Erwähnenswerte Dateien, die durch dpkg erzeugt werden

Datei Beschreibung des Inhalts
/var/lib/dpkg/info/paketname.conffiles Liste der Konfigurationsdateien (durch den Benutzer änderbar)
/var/lib/dpkg/info/paketname.list Liste von Dateien und Verzeichnissen, die durch das Paket installiert werden
/var/lib/dpkg/info/paketname.md5sums Liste der MD5-Hash-Werte für Dateien, die durch das Paket installiert werden
/var/lib/dpkg/info/paketname.preinst Paket-Skript, das vor der Paketinstallation ausgeführt wird
/var/lib/dpkg/info/paketname.postinst Paket-Skript, das nach der Paketinstallation ausgeführt wird
/var/lib/dpkg/info/paketname.prerm Paket-Skript, das vor der Paketentfernung ausgeführt wird
/var/lib/dpkg/info/paketname.postrm Paket-Skript, das nach der Paketentfernung ausgeführt wird
/var/lib/dpkg/info/paketname.config Paket-Skript für das debconf-System
/var/lib/dpkg/alternatives/paketname alternative-Informationen, die durch den update-alternatives-Befehl genutzt werden
/var/lib/dpkg/available availability-Informationen (Verfügbarkeit) für alle Pakete
/var/lib/dpkg/diversions die diversions-Informationen, die durch dpkg(1) genutzt und durch dpkg-divert(8) gesetzt werden
/var/lib/dpkg/statoverride die stat-override-Informationen, die durch dpkg(1) genutzt und durch dpkg-statoverride(8) gesetzt werden
/var/lib/dpkg/status Status-Informationen für alle Pakete
/var/lib/dpkg/status-old Backup der ersten Generation von "var/lib/dpkg/status"
/var/backups/dpkg.status* Backup der zweiten Generation und ältere von "var/lib/dpkg/status"

Die "status"-Datei wird auch von Werkzeugen wie dpkg(1), "dselect update" und "apt-get -u dselect-upgrade" verwendet.

Der spezialisierte Suchbefehl grep-dctrl(1) kann lokale Kopien der "status"- und "available"-Metadaten durchsuchen.

[Tipp] Tipp

In der debian-installer-Umgebung wird der Befehl udpkg benutzt, um udeb-Pakete zu öffnen. udpkg ist eine reduzierte Variante des dpkg-Befehls.

Bei einem testing- oder unstable-System sollte der Administrator darauf vorbereitet sein, das System im Falle einer Beschädigung des Paketmanagements wiederherstellen zu können.

[Achtung] Achtung

Einige Methoden, die hier beschrieben werden, beinhalten ein hohes Risiko. Sie wurden gewarnt!

Fehler beim Zwischenspeichern der Paketdaten führen zu verblüffenden Meldungen, wie "GPG error: ... invalid: BADSIG ..." bei APT.

Sie sollten alle zwischengespeicherten Daten mittels "sudo rm -rf /var/lib/apt/* " entfernen und es erneut versuchen. (Falls Sie apt-cacher-ng verwenden, führen Sie auch "sudo rm -rf /var/cache/apt-cacher-ng/* " aus.)

Paketmanagementsysteme für das Debian-Archiv wie aptitude(8) oder apt-get(1) versuchen erst gar nicht, Pakete mit überlappenden Dateien über Paketabhängigkeiten zu installieren (weiteres in Abschnitt 2.1.7, „Paketabhängigkeiten“).

Fehler durch einen Paketbetreuer oder die Einrichtung von inkonsistent gemischten Archivquellen durch den Systemadministrator (lesen Sie Abschnitt 2.7.6, „Packages from mixed source of archives without apt-pinning) könnten Situationen mit falsch definierten Paketabhängigkeiten hervorrufen. Wenn Sie in solch einer Situation ein Paket mit überlappenden Dateien mittels aptitude(8) oder apt-get(1) installieren, stellt dpkg(1), das das Paket entpackt, sicher, dass ein Fehler an das aufrufende Programm zurückgegeben wird, ohne dass vorhandene Dateien überschrieben werden.

[Achtung] Achtung

Die Verwendung von Paketen aus Drittquellen bringt durch Betreuerskripte ein erhebliches Risiko für das System mit sich, da diese mit root-Privilegien ausgeführt werden und jegliche Aktion auf dem System ausführen können. Der dpkg(1)-Befehl schützt lediglich vor dem Überschreiben beim Entpacken.

Sie können solche beschädigten Installationen umgehen, indem Sie vorher das alte betroffene Paket altes-paket entfernen:

$ sudo dpkg -P old-package

Da dpkg ein Paketwerkzeug ist, das auf der untersten Ebene arbeitet, kann es auch in sehr schlechten Situationen wie einem nicht startfähigen System und ohne Netzwerkverbindung noch arbeiten. Wir gehen hier davon aus, dass das Paket foo beschädigt war und ersetzt werden muss.

Sie könnten im cache-Verzeichnis "/var/cache/apt/archives/" zwischengespeicherte Kopien von älteren, fehlerfreien Versionen des Pakets foo finden. (Falls nicht, können Sie diese auch aus dem Archiv unter https://snapshot.debian.org/ herunterladen oder von einem funktionierenden System herüber kopieren.)

Ist das System boot-fähig, könnte es unter Umständen möglich sein, das Paket mit folgendem Befehl zu installieren:

# dpkg -i /path/to/foo_old_version_arch.deb
[Tipp] Tipp

Wenn die Beschädigung des Systems nur gering ist, könnten Sie das ganze System möglicherweise mit dem APT-System auf eine ältere Version zurückrüsten, wie in Abschnitt 2.7.11, „Downgrade im Notfall“ beschrieben.

Kann Ihr System überhaupt nicht mehr von Festplatte gestartet werden, suchen Sie nach anderen Wegen, das System zu starten:

  1. Booten Sie das System, indem Sie den Rettungsmodus der debian-installer-CD verwenden.

  2. Binden Sie die Festplattenpartitionen des nicht mehr zu startenden Systems in "/target" ein.

  3. Installieren Sie wie folgt eine ältere Version des Pakets foo:

# dpkg --root /target -i /path/to/foo_old_version_arch.deb

Dies funktioniert sogar, wenn der dpkg-Befehl auf der Festplatte beschädigt ist.

[Tipp] Tipp

Jegliches GNU/Linux-System, das von einem anderen System auf der Festplatte oder von Live-GNU/Linux-CD, bootfähigem USB-Stick oder per Netboot gestartet wird, kann auf ähnliche Art zur Rettung des beschädigten Systems verwendet werden.

Falls der Versuch, ein Paket auf diese Art zu installieren, aufgrund von verletzten Abhängigkeiten fehlschlägt, können Sie als letzten Ausweg Abhängigkeiten mit den dpkg-Optionen "--ignore-depends", "--force-depends" und weiteren überschreiben. Dabei müssen Sie besondere Sorgfalt darauf verwenden, die Abhängigkeiten später korrekt wiederherzustellen. Details finden Sie in dpkg(8).

[Anmerkung] Anmerkung

Falls Ihr System ernsthaft beschädigt ist, sollten ein vollständiges Backup aller Daten an einem sicheren Ort ablegen (siehe Abschnitt 10.2, „Datensicherung und -wiederherstellung“) und eine saubere Neuinstallation durchführen. Dies ist weniger zeitaufwändig und führt am Ende zu einem besseren Ergebnis.

For simplicity, the source list examples in this section are presented as "/etc/apt/sources.list" in one-line-style after the bookworm release.

Das apt-Paket enthält ein eigenes cron-Skript ("/etc/cron.daily/apt"), um den automatischen Download von Paketen zu unterstützen. Durch die Installation des unattended-upgrades-Pakets kann dieses Skript erweitert werden, so dass auch die automatische Aktualisierung von Paketen durchgeführt wird. Sie können dies über Parameter in "/etc/apt/apt.conf.d/02backup" und "/etc/apt/apt.conf.d/50unattended-upgrades" noch weiter anpassen, wie in "/usr/share/doc/unattended-upgrades/README" beschrieben.

Das unattended-upgrades-Paket ist hauptsächlich für Sicherheits-Upgrades auf Stable-Systemen gedacht. Wenn das Risiko, ein vorhandenes Stable-System über einen automatischen Upgrade-Prozess zu beschädigen, geringer ist als das, welches von einem Angreifer ausgeht, der über Ausnutzung einer Sicherheitslücke das System schädigt, sollten Sie ein automatisches Upgrade in Erwägung ziehen, das diese Lücke über ein Sicherheits-Upgrade schließt. Nutzen Sie dazu folgende Konfigurationsparameter:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "1";

If you are running an testing or unstable system, you do not want to use the automatic upgrade since it certainly breaks system some day. Even for such testing or unstable case, you may still want to download packages in advance to save time for the interactive upgrade with configuration parameters as the following.

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "0";

There are stable-updates ("bookworm-updates" during the bookworm-as-stable release cycle) and backports.debian.org archives which provide upgrade packages for stable.

Um diese Archive zu nutzen, listen Sie alle erforderlichen Archive in der "/etc/apt/sources.list"-Datei auf, wie hier:

deb http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free
deb http://security.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free
deb http://deb.debian.org/debian/ bookworm-updates main non-free-firmware contrib non-free
deb http://deb.debian.org/debian/ bookworm-backports main non-free-firmware contrib non-free

Es ist nicht nötig, einen Wert für die Pin-Priorität in "/etc/apt/preferences" zu setzen. Wenn neuere Pakete verfügbar werden, werden mit der Standardkonfiguration passende Upgrades bereitgestellt (siehe Abschnitt 2.5.3, „"Release"-Dateien im Archivverzeichnis“).

  • Alle installierten veralteten Pakete werden auf die neuen von bookworm-updates aktualisiert.

  • Nur manuell installierte veraltete Pakete von bookworm-backports werden auf die neuen Versionen von bookworm-backports aktualisiert.

Wann immer Sie ein Paket namens "paketname" inklusive seiner Abhängigkeiten von bookworm-backports manuell installieren möchten, verwenden Sie den folgenden Befehl, wobei Sie die Zielveröffentlichung mit der Option "-t" festlegen:

$ sudo apt-get install -t bookworm-backports package-name
[Warnung] Warnung

Do not install too many packages from backports.debian.org archives. It may cause package dependency complications. See Abschnitt 2.1.11, „How to cope with conflicting requirements“ for alternative solutions.

[Achtung] Achtung

Installing packages from mixed source of archives is not supported by the official Debian distribution except for officially supported particular combinations of archives such as stable with security updates and stable-updates.

Hier ein Beispiel von Befehlen, über die man spezielle neuere Upstream-Versionen von Paketen aus Unstable verwendet, während ansonsten Testing genutzt wird:

  1. Ändern Sie die Datei "/etc/apt/sources.list" vorübergehend in "unstable".

  2. Führen Sie "aptitude update" aus.

  3. Führen Sie "aptitude install packetname" aus.

  4. Stellen Sie die Originalversion von "/etc/apt/sources.list" für testing wieder her.

  5. Führen Sie "aptitude update" aus.

You do not create the "/etc/apt/preferences" file nor need to worry about apt-pinning with this manual approach. But this is very cumbersome.

[Achtung] Achtung

Wenn Sie gemischte Paketquellen verwenden, müssen Sie die Kompatibilität selbst sicherstellen, da Debian diese in solchem Falle nicht garantieren kann. Falls Paketinkompatibilitäten existieren, könnten Sie Ihr System beschädigen. Sie müssen in der Lage sein, diese technischen Anforderungen zu beurteilen. Die Verwendung von gemischten Quellen zufällig ausgewählter Archive ist eine absolut optionale Operation und nicht zu empfehlen.

Die grundsätzlichen Regeln für die Installation von Paketen aus unterschiedlichen Archiven sind wie folgt:

[Anmerkung] Anmerkung

Um die Installation eines Pakets unproblematischer zu machen, existieren möglicherweise einige nicht-freie Binärprogramm-Pakete mit vollständig statisch gelinkten Bibliotheken. Sie sollten diese immer auf ABI-Kompatibilitätsprobleme usw. kontrollieren.

[Anmerkung] Anmerkung

Except to avoid broken package for a short term, installing binary packages from non-Debian archives is generally bad idea. You should seek all available alternative safer technical solutions which are compatible with your current Debian syetem (see Abschnitt 2.1.11, „How to cope with conflicting requirements“).

[Warnung] Warnung

Use of apt-pinning technique by a novice user is sure call for major troubles. You must avoid using this technique except when you absolutely need it.

Ohne eine "/etc/apt/preferences"-Datei wählt das APT-System basierend auf dem Versionseintrag die letzte verfügbare Version als Installationskandidat-Version aus. Dies ist der normale Weg und die empfohlene Verwendung des APT-Systems. Alle offiziell unterstützten Archivkombinationen erfordern keine "/etc/apt/preferences"-Datei, da bei Archiven, die nicht als automatische Quelle für Aktualisierungen empfohlen werden, die Einstellung NotAutomatic gesetzt ist und diese entsprechend behandelt werden.

[Tipp] Tipp

Die Regel zum Vergleich der Versionsnummern (welche Versionsnummer größer ist) kann z.B. über "dpkg --compare-versions ver1.1 gt ver1.1~1; echo $?" verifiziert werden (näheres unter dpkg(1)).

Wenn Sie regelmäßig Pakete aus gemischten Quellen installieren (siehe Abschnitt 2.7.6, „Packages from mixed source of archives without apt-pinning), können Sie diese komplizierten Operationen automatisieren, indem Sie eine Datei "/etc/apt/preferences" mit entsprechenden Einträgen erstellen; so beeinflussen Sie die Auswahlregel für die Installationskandidat-Version; dies ist in apt_preferences(5) beschrieben. Dies Verfahren wird apt-pinning genannt.

When using apt-pinning, you must ensure compatibility of packages by yourself since the Debian does not guarantee it. The apt-pinning is completely optional operation and its use is not something I encourage you to use.

Archive level Release files (see Abschnitt 2.5.3, „"Release"-Dateien im Archivverzeichnis“) are used for the rule of apt_preferences(5). Thus apt-pinning works only with "suite" name for normal Debian archives and security Debian archives. (This is different from Ubuntu archives.) For example, you can do "Pin: release a=unstable" but can not do "Pin: release a=sid" in the "/etc/apt/preferences" file.

When you use non-Debian archive as a part of apt-pinning, you should check what they are intended for and also check their credibility. For example, Ubuntu and Debian are not meant to be mixed.

[Anmerkung] Anmerkung

Even if you do not create the "/etc/apt/preferences" file, you can do fairly complex system operations (see Abschnitt 2.6.6, „Systemrettung mit dem dpkg-Befehl“ and Abschnitt 2.7.6, „Packages from mixed source of archives without apt-pinning) without apt-pinning.

Hier eine vereinfachte Beschreibung der Technik hinter apt-pinning:

Das APT-System wählt für ein Upgrade das Paket mit der höchsten Pin-Priorität aus den verfügbaren (in "/etc/apt/sources.list" definierten) Paketquellen als Installationskandidat-Version aus. Wenn die Pin-Priorität des Pakets größer als 1000 ist, wird die Einschränkung für Upgrades nicht beachtet, um ein Downgrade (eine Zurückrüstung auf eine ältere Version) zu ermöglichen (siehe Abschnitt 2.7.11, „Downgrade im Notfall“).

Werte für die Pin-Priorität eines jeden Pakets werden über Einträge in der "/etc/apt/preferences"-Datei festgelegt oder verwenden deren Standardwert.


The target release archive can be set by the command line option, e.g., "apt-get install -t testing some-package"

Die NotAutomatic- und ButAutomaticUpgrades-Archive werden durch Archiv-Server definiert, die in ihren Release-Dateien im Archiv-Wurzelverzeichnis (siehe Abschnitt 2.5.3, „"Release"-Dateien im Archivverzeichnis“) sowohl "NotAutomatic: yes" wie auch "ButAutomaticUpgrades: yes" gesetzt haben. Das NotAutomatic-Archiv wird über Server definiert, die in ihren Release-Dateien lediglich "NotAutomatic: yes" gesetzt haben.

Die apt-pinning-Situation von package aus mehreren Archivquellen wird mittels "apt-cache policy package" angezeigt.

  • Eine Zeile beginnend mit "Package pin:" listet die Paketversion von pin auf, wenn die Zuordnung direkt über package definiert ist, z.B. "Package pin: 0.190".

  • Es existiert keine Zeile mit "Package pin:", wenn keine Zuordnung direkt über package definiert ist.

  • Der Pin-Prioritäts-Wert, der direkt zu package gehört, ist rechts neben den Versionseinträgen aufgelistet, z.B. "0.181 700".

  • "0" wird rechts neben den Versionseinträgen aufgelistet, wenn keine Zuordnung direkt mit package definiert ist, z.B "0.181 0".

  • Die Pin-Prioritäts-Werte von Archiven (definiert als "Package: *" in der "/etc/apt/preferences"-Datei) sind links von den Archivpfaden aufgelistet, z.B. "100 http://deb.debian.org/debian/ bookworm-backports/main Packages".

[Warnung] Warnung

Use of apt-pinning technique by a novice user is sure call for major troubles. You must avoid using this technique except when you absolutely need it.

Hier ein Beispiel für eine apt-pinning-Technik, um neuere Upstream-Versionen einzelner Pakete aus Unstable regelmäßig aktualisieren zu können und ansonsten Testing zu nutzen. Sie listen alle benötigten Archive in der "/etc/apt/sources.list"-Datei auf, wie hier:

deb http://deb.debian.org/debian/ testing main contrib non-free
deb http://deb.debian.org/debian/ unstable main contrib non-free
deb http://security.debian.org/debian-security testing-security main contrib

Richten Sie die "/etc/apt/preferences"-Datei wie folgt ein:

Package: *
Pin: release a=unstable
Pin-Priority: 100

Wenn Sie mit dieser Konfiguration ein Paket namens "paketname" aus dem Unstable-Archiv inklusive seiner Abhängigkeiten installieren möchten, führen Sie folgenden Befehl aus, wobei über die Option "-t" die Zielveröffentlichung angepasst wird (die Pin-Priorität von Unstable wird 990):

$ sudo apt-get install -t unstable package-name

Mit dieser Konfiguration wird die normale Ausführung von "apt-get upgrade" und "apt-get dist-upgrade" (oder "aptitude safe-upgrade" und "aptitude full-upgrade") Pakete, die aus Testing installiert wurden, unter Verwendung des derzeitigen Testing-Archivs aktualisieren; Pakete, die aus Unstable installiert wurden, werden unter Verwendung des derzeitigen Unstable-Archivs aktualisiert.

[Achtung] Achtung

Achten Sie darauf, dass Sie nicht den "testing"-Eintrag aus der "/etc/apt/sources.list"-Datei entfernen. Ohne diesen "testing"-Eintrag aktualisiert das APT-System alle Pakete unter Verwendung des (neueren) Unstable-Archivs.

[Tipp] Tipp

Ich bearbeite für gewöhnlich die "/etc/apt/sources.list"-Datei direkt nach obigen Befehlen, um das "unstable"-Archiv auszukommentieren. Dies verhindert, dass der Prozess zur Aktualisierung der Paketdaten aufgrund von zu vielen Einträgen in der "/etc/apt/sources.list"-Datei sehr lange dauert; allerdings können dadurch Pakete, die aus Unstable installiert wurden, nicht unter Verwendung des derzeitigen Unstable-Archivs aktualisiert werden.

[Tipp] Tipp

Wenn "Pin-Priority: 1" statt "Pin-Priority: 100" in der "/etc/apt/preferences"-Datei eingetragen wird, werden bereits installierte Pakete, die den Pin-Prioritäts-Wert 100 haben, nicht mittels dem Unstable-Archiv aktualisiert, selbst wenn der "testing"-Eintrag in "/etc/apt/sources.list" entfernt wird.

Möchten Sie bestimmte Pakete in Unstable automatisch ohne vorangestelltes "-t unstable" auf aktuellem Stand halten, müssen Sie die "/etc/apt/preferences"-Datei erstellen und ganz oben in der Datei all diese Pakete wie folgt auflisten:

Package: package-1
Pin: release a=unstable
Pin-Priority: 700

Package: package-2
Pin: release a=unstable
Pin-Priority: 700

Dadurch wird die Pin-Priorität für jedes dieser Pakete spezifisch gesetzt. Um zum Beispiel immer die aktuellste Unstable-Version dieser "Debian Reference" in Englisch zu installieren, sollten Sie folgende Einträge in Ihrer "/etc/apt/preferences"-Datei haben:

Package: debian-reference-en
Pin: release a=unstable
Pin-Priority: 700

Package: debian-reference-common
Pin: release a=unstable
Pin-Priority: 700
[Tipp] Tipp

This apt-pinning technique is valid even when you are tracking stable archive. Documentation packages have been always safe to install from unstable archive in my experience, so far.

[Warnung] Warnung

Use of apt-pinning technique by a novice user is sure call for major troubles. You must avoid using this technique except when you absolutely need it.

[Achtung] Achtung

Ein Downgrade wird von Debian aufgrund seines Designs nicht offiziell unterstützt. Es sollte nur als Teil einer Notfall-Rettungsmaßnahme durchgeführt werden. Davon einmal abgesehen ist bekannt, dass es in den meisten Fällen gut funktioniert. Bei kritischen Systemen sollten Sie nach der Wiederherstellung alle wichtigen Daten auf dem System sichern und dann das System von Grund auf neu installieren.

Sie könnten Glück haben und ein Downgrade auf eine ältere Archiv-Version durch Manipulation der Installationskandidat-Versionen hinbekommen (lesen Sie dazu Abschnitt 2.7.7, „Tweaking candidate version with apt-pinning). Dies ist die tippfaule Alternative zu vielen langwierigen Befehlen der Art "dpkg -i beschädigtes-paket_alte-version.deb" (näheres dazu in Abschnitt 2.6.6, „Systemrettung mit dem dpkg-Befehl“).

Suchen Sie Zeilen in der "/etc/apt/sources.list"-Datei wie die folgende, die unstable referenzieren:

deb http://deb.debian.org/debian/ sid main contrib non-free

Ersetzen Sie sie durch die folgende, um stattdessen auf testing zu verweisen:

deb http://deb.debian.org/debian/ trixie main contrib non-free

Richten Sie die "/etc/apt/preferences"-Datei wie folgt ein:

Package: *
Pin: release a=testing
Pin-Priority: 1010

Führen Sie "apt-get update; apt-get dist-upgrade" aus, um ein Downgrade aller Pakete im System zu erzwingen.

Entfernen Sie diese spezielle "/etc/apt/preferences"-Datei nach dem Downgrade.

[Tipp] Tipp

Es ist eine gute Idee, so viele Pakete wie möglich zu löschen (nicht vollständig inklusive der Konfigurationsdateien entfernen!), um die Wahrscheinlichkeit von Abhängigkeitsproblemen zu minimieren. Sie müssen bei einem solchen Downgrade unter Umständen einige Pakete von Hand entfernen oder installieren. Linux-Kernel, Bootloader, udev, PAM, APT und Netzwerk-bezogene Pakete sowie deren Konfigurationsdateien erfordern besondere Aufmerksamkeit.

Obwohl das Spiegeln von vollständigen Sektionen des Debian-Archivs Plattenplatz und Netzwerkbandbreite verschwendet, ist es der Einsatz eines lokalen Proxy-Servers für APT wert in Erwägung gezogen zu werden, wenn Sie viele Systeme im LAN (Netzwerk) administrieren. APT kann konfiguriert werden, einen generischen Web-(http-)Proxy-Server wie squid (siehe auch Abschnitt 6.5, „Weitere Netzwerkanwendungs-Server“) zu verwenden, wie in apt.conf(5) und "/usr/share/doc/apt/examples/configure-index.gz" beschrieben. Sie können die Umgebungsvariable "$http_proxy" nutzen, um die Proxy-Server-Einstellungen aus der "/etc/apt/apt.conf"-Datei zu überschreiben.

Es gibt Proxy-Hilfsprogramme, die für das Debian-Archiv spezialisiert sind. Sie sollten die Fehlerdatenbank (BTS) überprüfen, bevor Sie sie verwenden.


[Achtung] Achtung

Sollte Debian einmal seine Archivstruktur umorganisieren, benötigen diese spezialisierten Proxy-Hilfsprogramme eventuell eine Code-Änderung durch den Paketbetreuer und könnten eine Zeit lang nicht funktionsfähig sein. Generische Web-(http-)Proxy-Server sind andererseits robuster und können einfacher mit solchen Änderungen umgehen.