Eine Paketabhängigkeit besagt, dass ein Paket für seine Installation oder seinen Betrieb ein anderes Paket, eine Fähigkeit oder eine kompatible Version benötigt. Paketverwaltungen mit Paketquellenkenntnis berechnen anhand dieser Metadaten eine konsistente Menge von Änderungen, statt jedes Archiv isoliert zu behandeln.
Pakete · Lektion 4
Paketabhängigkeiten
Erfahre, wie Paketmetadaten erforderliche Fähigkeiten, Versionen, Konflikte und Beziehungen zu gemeinsam genutzten Bibliotheken ausdrücken.
Abhängigkeitsbeziehungen
Paketmetadaten können mehr als einen einfachen erforderlichen Namen ausdrücken. Je nach Distributionsformat können Beziehungen Folgendes umfassen:
- erforderliche Abhängigkeiten
- Mindest-, Höchst- oder genaue Versionsbeschränkungen
- Alternativen, bei denen einer von mehreren Anbietern eine Anforderung erfüllt
- Empfehlungen oder Vorschläge mit schwächerer Semantik
- Konflikte, Brüche oder Ersetzungen
- virtuelle Fähigkeiten, die von mehr als einem Paket bereitgestellt werden
Mit diesen Regeln kann ein Solver eine Gruppe von Paketversionen auswählen, die mit den konfigurierten Paketquellen, der Architektur und dem installierten Zustand kompatibel ist. Eine Lösung kann Upgrades, Entfernungen oder die Wahl zwischen Anbietern erfordern. Prüfe daher die vorgeschlagene Transaktion, bevor du sie genehmigst.
Was versucht ein Abhängigkeits-Solver mit Paketquellenkenntnis zu erzeugen?
Gemeinsam genutzte Bibliotheken als Abhängigkeiten
Eine gemeinsam genutzte Bibliothek enthält kompilierten Code, den mehrere Programme zur Laufzeit einbinden können. Die gemeinsame Nutzung verringert doppelte Implementierungen und erlaubt Distributionen, eine gemeinsame Bibliothek unabhängig zu aktualisieren. Programme sind jedoch von einer kompatiblen Binärschnittstelle der Anwendung oder ABI abhängig.
Auf ELF-basierten Linux-Systemen kann eine ausführbare Datei einen benötigten Bibliotheksnamen wie einen SONAME erfassen. Der dynamische Linker findet beim Programmstart eine passende installierte Bibliothek. Paketmetadaten stellen diese Anforderung gewöhnlich als Abhängigkeit von dem Paket oder der Fähigkeit dar, das beziehungsweise die die kompatible Bibliothek bereitstellt.
Was ist eine gemeinsam genutzte Bibliothek?
Versions- und ABI-Kompatibilität
Eine Datei mit einem ähnlichen Bibliotheksnamen reicht nicht aus. Die erforderliche ABI, Architektur, Symbole und manchmal Mindestversion müssen übereinstimmen. Das manuelle Ersetzen einer Distributionsbibliothek kann jedes abhängige Programm beschädigen, selbst wenn der Dateiname richtig aussieht.
Paketbetreuer codieren Bibliotheksbeziehungen und koordinieren Übergänge, wenn sich eine ABI ändert. Belasse native Bibliotheken unter der Kontrolle der Paketverwaltung. Verwende unterstützte Mechanismen zur parallelen Installation, Container, Umgebungen oder Build-Mechanismen für Software, die eine in Konflikt stehende Version benötigt.
Warum kann ein Programm trotz einer ähnlich benannten Bibliotheksdatei fehlschlagen?
Defekte Abhängigkeitszustände
Ein Abhängigkeitsproblem kann durch gemischte Paketquellen, unterbrochene Vorgänge, manuell installierte Archive, zurückgehaltene Versionen, entfernte Dateien oder inkompatible Drittanbietersoftware entstehen. Reagiere darauf nicht, indem du Paketdatenbankdateien löschst oder eine Installation blind erzwingst.
Lies zuerst die Diagnose der Paketverwaltung, aktualisiere nur Metadaten vertrauenswürdiger Paketquellen, prüfe zurückgehaltene oder gepinnte Versionen und begutachte die vorgeschlagene Reparatur. Ein einfaches Paketinstallationswerkzeug kann ein Archiv entpacken, ohne alle Abhängigkeiten abzurufen. Ein übergeordnetes Werkzeug mit Paketquellenkenntnis ist für gewöhnliche Installationen meist sicherer, da es die vollständige Transaktion auflöst.
Was ist eine verbreitete Einschränkung bei der Installation eines lokalen Pakets mit einem einfachen Archivwerkzeug?
Nutze Gemeinsam genutzte Bibliotheken unter Linux verwalten, um Laufzeitbeziehungen zu prüfen, und vergleiche sie anschließend mit Paketmetadaten in Pakete mit RPM verwalten.
Lektion abgeschlossen
Sie haben Paketabhängigkeiten abgeschlossen
Du kannst nun erklären, wie die Auflösung von Paketabhängigkeiten funktioniert.
Erkenne erforderliche, alternative, versionierte und in Konflikt stehende Beziehungen.
Setze Pakete gemeinsam genutzter Bibliotheken mit ABI-Anforderungen zur Laufzeit in Beziehung.
Behandle Dateinamen als schwächeren Beleg als Architektur- und Schnittstellenkompatibilität.
Prüfe eine vollständige Paketverwaltungstransaktion, bevor du Reparaturen anwendest.
Lernfortschritt speichern
Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.
Kostenloses Konto erstellen