Provided by: dpkg-dev_1.22.18ubuntu3_all 

BEZEICHNUNG
dpkg-shlibdeps - Substvar-Abhängigkeiten für Laufzeitbibliotheken erstellen
ÜBERSICHT
dpkg-shlibdeps [Option…] [-e] Programm [Option…]
BESCHREIBUNG
dpkg-shlibdeps berechnet Abhängigkeiten von Laufzeitbibliotheken für Programme, deren Namen als Argument
übergeben werden. Die Abhängigkeiten werden zu der Datei der Ersetzungsvariablen debian/substvars als
Variablennamen shlibs:Abhängigkeitsfeld hinzugefügt, wobei Abhängigkeitsfeld der Feldname einer
Abhängigkeit ist. Alle anderen Variablen, die mit shlibs: beginnen, werden aus der Datei entfernt.
dpkg-shlibdeps hat zwei mögliche Informationsquellen zur Erstellung der Abhängigkeitsinformationen.
Entweder Symbol- oder Shlibs-Dateien. dpkg-shlibdeps findet für jedes Programm, das es analysiert, die
Bibliotheken heraus, gegen die es gelinkt ist. Bei jeder Bibliothek schaut es entweder in die Symbol-
oder in die Shlibs-Datei (falls Erstere nicht existiert oder falls debian/shlibs.local die relevanten
Abhängigkeiten enthält). Beide Dateien sollten von dem Bibliothekspaket bereitgestellt werden und sollten
daher als /var/lib/dpkg/info/Paket.Symbol oder /var/lib/dpkg/info/Paket.Shlibs verfügbar sein. Der
Paketname wird in zwei Schritten identifiziert: zuerst wird die Bibliotheksdatei auf dem System gefunden
(durch Prüfung der gleichen Verzeichnisse wie bei ld.so), dann wird dpkg -S Bibliotheksdatei verwendet,
um das Paket, das die Bibliothek bereitstellt, zu ermitteln.
Symboldateien
Symboldateien enthalten feiner-granulare Abhängigkeitsinformationen, indem sie die Minimalabhängigkeit
für jedes von der Bibliothek exportierte Symbol beschreiben. Das Skript versucht, eine Symboldatei, die
zu dem Bibliothekspaket gehört, an den folgenden Orten zuzuordnen (der erste Treffer wird verwendet):
debian/*/DEBIAN/symbols
Informationen über Laufzeitbibliotheken, die vom aktuellen Bauprozess erstellt werden, der auch dpkg-
shlibdeps aufruft. Sie werden von dpkg-gensymbols(1) erstellt. Sie werden nur verwendet, falls die
Bibliothek im Bau-Baum des Pakets gefunden wird. Die Symboldatei im Bau-Baum hat Vorrang gegenüber
Symboldateien aus anderen Binärpaketen.
/etc/dpkg/symbols/Paket.symbols.Architektur
/etc/dpkg/symbols/Paket.symbols
Systemabhängige Überschreibung der Abhängigkeitsinformationen von Laufzeitbibliotheken. Architektur
ist die Architektur des aktuellen Systems (ermittelt durch dpkg-architecture -qDEB_HOST_ARCH).
Ausgabe von „dpkg-query --control-path Paket symbols“
Vom Paket bereitgestellte Abhängigkeitsinformationen für Laufzeitbibliotheken. Falls nicht durch
--admindir überschrieben, befinden sich solche Dateien unter /var/lib/dpkg.
Während des Durchsuchens aller vom Programm verwendeten Symbole erinnert sich dpkg-shlibdeps an die
(höchste) Minimalversion, die von jeder Bibliothek benötigt wird. Am Ende des Prozesses ist es in der
Lage, die minimale Abhängigkeit für jede eingesetzte Bibliothek zu schreiben (vorausgesetzt, die
Informationen in den Symbol-Dateien sind korrekt).
Als Sicherheitsmaßnahme kann eine Symbols-Datei ein Meta-Informationsfeld Build-Depends-Package oder
Build-Depends-Packages enthalten. dpkg-shlibdeps entnimmt dann die minimale Version, die von dem
korrespondierenden Paket im Feld Build-Depends benötigt wird, und verwendet diese Version, falls sie
höher ist als die minimale Version, die beim Durchsuchen der Symbole ermittelt wurde.
Shlibs-Dateien
Shlibs-Dateien ordnen Bibliotheken direkt Abhängigkeiten zu (ohne auf die Symbole zu schauen). Daher ist
dies oft stärker als benötigt, aber dafür sicher und leicht zu handhaben.
Die Abhängigkeiten für eine Bibliothek werden an verschiedenen Stellen nachgeschlagen. Die erste Datei,
die Informationen für die betrachtete Bibliothek bereitstellt, wird verwendet:
debian/shlibs.local
Paket-beschränkte Überschreibung der Abhängigkeitsinformationen von Laufzeitbibliotheken.
/etc/dpkg/shlibs.override
Systemabhängige Überschreibung der Abhängigkeitsinformationen von Laufzeitbibliotheken.
debian/*/DEBIAN/shlibs
Informationen über Laufzeitbibliotheken, die vom aktuellen Bauprozess erstellt werden, der auch dpkg-
shlibdeps aufruft. Sie werden nur verwendet, falls die Bibliothek im Bau-Verzeichnis eines Pakets
gefunden wird. Die Shlibs-Datei in diesem Bau-Verzeichnis hat gegenüber Shlibs-Dateien von anderen
Binärpaketen Vorrang.
Ausgabe von „dpkg-query --control-path Paket shlibs“
Vom Paket bereitgestellte Abhängigkeitsinformationen für Laufzeitbibliotheken. Falls nicht durch
--admindir überschrieben, befinden sich solche Dateien unter /var/lib/dpkg.
/etc/dpkg/shlibs.default
Systemabhängige Vorgaben für Abhängigkeitsinformationen von Laufzeitbibliotheken.
Die entnommenen Abhängigkeiten werden direkt verwendet (es sei denn, sie werden als Dubletten
herausgefiltert oder sie sind schwächer als eine andere Abhängigkeit).
OPTIONEN
dpkg-shlibdeps interpretiert nicht-Options-Argumente als Namen von ausführbaren Programmen, als ob diese
mit -eProgramm übergeben worden wären.
-eProgramm
Nimmt Abhängigkeiten auf, die für von Programm benötigte Laufzeitbibliotheken angemessen sind. Diese
Option kann mehrfach angegeben werden.
-lVerzeichnis
Stellt Verzeichnis der Liste der zu durchsuchenden privaten Laufzeitbibliotheken voran (seit Dpkg
1.17.0). Diese Option kann mehrfach angegeben werden.
Hinweis: Verwenden Sie diese Variable, statt LD_LIBRARY_PATH zu setzen, da diese Umgebungsvariable
verwandt wird, um den Laufzeit-Linker zu steuern und ihr Missbrauch zum Setzen von Pfaden zu
Laufzeitbibliotheken zur Bauzeit kann beispielsweise beim Cross-Kompilieren problematisch werden.
-dAbhängigkeitsfeld
Fügt Abhängigkeiten hinzu, die zum Abhängigkeitsfeld der Steuerdatei hinzugefügt werden sollen. (Die
Abhängigkeiten für dieses Feld werden in die Variable shlibs:Abhängigkeitsfeld geschrieben.)
Die Option -dAbhängigkeitsfeld betrifft alle Programme, die danach angegeben werden, bis zum nächsten
-dAbhängigkeitsfeld. Der Standardwert für Abhängigkeitsfeld ist Depends.
Falls der gleiche Abhängigkeitseintrag (oder ein Satz von Alternativen) mehr als einmal in den
erkannten Abhängigkeitsfeldnamen Pre-Depends, Depends, Recommends, Enhances oder Suggests auftaucht,
wird dpkg-shlibdeps die Abhängigkeit von allen Feldern außer dem, das die wichtigsten Abhängigkeiten
repräsentiert, entfernen.
--package=Paket
Definiert den Paketnamen.
Wenn angegeben wird der Paketname verwandt, um die Vorgaben, basierend auf den Binärpaket-Metadaten
in debian/control, zu ändern.
Falls das Paket Essential: yes, dann ist das standardmäßige Abhängigkeitsfeld Pre-Depends,
andernfalls Depends. Der Standard-Pakettyp wird aus dem Feld Package-Type gesetzt. Das Paket wird zu
der Gruppe der mit -x ausgeschlossenen Pakete hinzugefügt.
Option unterstützt seit Dpkg 1.22.7.
-pVariablennamepräfix
Beginnt die Ersetzungsvariablen mit Variablennamepräfix: statt mit shlibs:. Entsprechend werden alle
Ersetzungsvariablen, die mit Variablennamepräfix: (statt mit shlibs:) beginnen, aus der
Ersetzungsvariablendatei entfernt.
-O[Dateiname]
Gibt die Ersetzungsvariableneinstellung in die Standardausgabe (oder nach Dateiname, falls angegeben,
seit Dpkg 1.17.2) aus, statt sie zu der Ersetzungsvariablendatei (standardmäßig (debian/substvars)
hinzuzufügen.
-tTyp
Bevorzugt Abhängigkeitsinformationen für Laufzeitbibliotheken, die für ein vorgegebenes Paket
markiert sind. Falls keine Markierungsinformation verfügbar ist, fällt dies auf unmarkierte
Informationen zurück. Der Standard-Pakettyp ist deb. Abhängigkeitsinformationen für
Laufzeitbibliotheken werden für einen vorgegebenen Typ markiert, indem vor sie der Namen des Typs,
ein Doppelpunkt und ein Leerraumzeichen gesetzt wird.
-Llokale_shlibs-Datei
Liest die Hinwegsetz-Abhängigkeiten von Laufzeitbibliotheken aus lokale_shlibs-Datei statt aus
debian/shlibs.local.
-TSubstvars-Datei
Schreibt Ersetzungsvariablen in Substvars-Datei; standardmäßig debian/substvars.
-v Aktiviert ausführlichen Modus (seit Dpkg 1.14.8). Eine Vielzahl von Meldungen wird angezeigt, um zu
erklären, was dpkg-shlibdeps durchführt.
-xPaket
Schließt das Paket von den generierten Abhängigkeiten aus (seit Dpkg 1.14.8). Dies ist für Pakete
nützlich, die ELF-Programmdateien (Programme oder Bibliothekserweiterungen) bereitstellen, die eine
Bibliothek im gleichen Paket verwendet, um Abhängigkeiten des Pakets zu sich selbst zu vermeiden.
Diese Option kann mehrfach verwendet werden, um mehrere Pakete auszuschließen.
-SPaketbauverzeichnis
Schaut beim Versuch, eine Bibliothek zu finden, zuerst in Paketbauverzeichnis (seit Dpkg 1.14.15).
Dies ist nützlich, wenn das Quellpaket mehrere Spielarten der gleichen Bibliothek baut und Sie
sicherstellen wollen, dass Sie die Abhängigkeit aus einem bestimmten Binärpaket erhalten. Sie können
diese Option mehrfach verwenden: Verzeichnisse werden in der gleichen Reihenfolge vor Verzeichnissen
anderer Binärpakete probiert.
-IPaketbauverzeichnis
Ignoriert Paketbauverzeichnis beim Schauen nach Shlibs, Symbolen und gemeinsam benutzten Bibliotheken
(seit Dpkg 1.18.5). Sie können diese Option mehrfach verwenden.
--ignore-missing-info
Falls keine Abhängigkeitsinformationen für die Laufzeitbibliothek gefunden werden kann, erfolgt kein
Fehlschlag (seit Dpkg 1.14.8). Von der Verwendung dieser Option wird abgeraten, da alle Bibliotheken
Abhängigkeitsinformationen bereitstellen sollten (entweder über shlibs-Dateien oder über symbols-
Dateien), selbst falls diese noch nicht von anderen Paketen verwendet werden.
--warnings=[Wert|Zeichenkette[,…]]
Wählt die Gruppe der Warnungen, die von dpkg-shlibdeps ausgegeben werden kann (seit Dpkg 1.14.17).
Die Warnungen können aus einer Kommata-getrennten Liste von symbolischen Namen ausgewählt werden
(seit Dpkg 1.22.12) oder aus einem Wert, der ein Bitfeld für diese Warnungen bezeichnet.
symbol-not-found (Symbol nicht gefunden, Bit 0, Wert 1)
Wählt die Warnung „Symbol Sym, verwendet von Programm, in keiner der Bibliotheken gefunden“.
Standardmäßig aktiviert.
avoidable-dependency (Vermeidbare Abhängigkeit, Bit 1, Wert 2)
Wählt die Warnung „Das Paket könnte eine nutzlose Abhängigkeit vermeiden“.
Standardmäßig aktiviert.
useless-linkage (nutzloses Linken, Bit 2, Wert 4)
Wählt die Warnung „Programm sollte nicht gegen Bibliothek gelinkt werden“.
--admindir=Verz
Ändert den Ablageort der dpkg-Datenbank (seit Dpkg 1.14.0). Der Standardort ist /var/lib/dpkg.
-?, --help
Zeigt einen Hinweis zum Aufruf und beendet das Programm.
--version
Gibt die Version aus und beendet das Programm.
UMGEBUNG
DEB_HOST_ARCH
Setzt die Host-Architektur. Dies betrifft Objekte und Symboldateien, nach denen gesucht wird, und
ihre standardmäßigen Suchpfadnamen.
DPKG_COLORS
Setzt den Farbmodus (seit Dpkg 1.18.5). Die derzeit unterstützten Werte sind: auto (Vorgabe), always
und never.
DPKG_NLS
Falls dies gesetzt ist, wird es zur Entscheidung, ob Native Language Support, auch als Unterstützung
für Internationalisierung (oder i18n) bekannt, aktiviert wird (seit Dpkg 1.19.0). Die akzeptierten
Werte sind: 0 und 1 (Vorgabe).
DIAGNOSE
Warnungen
Da dpkg-shlibdeps den Symbolsatz, der von jedem Programm des erstellten Pakets verwendet wird,
analysiert, ist es in mehreren Fällen in der Lage, Warnungen auszugeben. Sie informieren Sie über Dinge,
die im Paket verbessert werden können. Meistens betreffen diese Verbesserungen direkt die Quellen der
Originalautoren. In der Reihenfolge abnehmender Wichtigkeit folgen hier die relevanten Warnungen, die
auftauchen könnten:
Symbol Symbol, verwendet von Programm, in keiner der Bibliotheken gefunden.
Das angegebene Symbol wurde nicht in den Bibliotheken gefunden, gegen die das Programm gelinkt wurde.
Programm ist höchstwahrscheinlich eine Bibliothek und muss mit zusätzlichen Bibliotheken während des
Bau-Prozesses gelinkt werden (Option -lBibliothek des Linkers).
Programm enthält eine nicht-auflösbare Referenz auf Symbol Sym: wahrscheinlich eine Erweiterung.
Das angegebene Symbol wurde nicht in den Bibliotheken gefunden, die mit diesem Programm verlinkt
sind. Das Progamm ist höchstwahrscheinlich eine Erweiterung und das Symbol wird von dem Programm
bereitgestellt, das diese Erweiterung lädt. Theoretisch verfügt eine Erweiterung nicht über einen
SONAMEn, allerdings ist dies bei diesem Programm der Fall und daher konnte es nicht eindeutig als
Erweiterung erkannt werden. Die Tatsache, dass dieses Programm in einem nicht-öffentlichen
Verzeichnis gespeichert wird, ist allerdings ein starkes Anzeichen dafür, dass es keine normale
gemeinsam benutzte Bibliothek ist. Falls dieses Programm tatsächlich eine Erweiterung ist, ignorieren
Sie die Warnung. Allerdings besteht immer die Möglichkeit, dass es eine echte Bibliothek ist und dass
Programme, die damit verlinken, einen RPATH verwenden, so dass der dynamische Lader sie findet. In
diesem Fall ist die Bibliothek beschädigt und muss repariert werden.
Das Paket könnte eine nutzlose Abhängigkeit vermeiden, falls Programm nicht gegen Bibliothek gelinkt wäre
(es verwendet keines der Symbole der Bibliothek).
Keines der Programme, die gegen Bibliothek gelinkt sind, verwendet eines der von der Bibliothek
bereitgestellten Symbole. Indem Sie die Programme korrigierten, vermieden Sie die Abhängigkeit, die
mit dieser Bibliothek verbunden ist (es sei denn, die Abhängigkeit wird auch durch eine andere
Bibliothek generiert, die diese Bibliothek wirklich verwendet).
Das Paket könnte eine nutzlose Abhängigkeit vermeiden, falls Programme nicht gegen Bibliothek gelinkt
wären (sie verwenden keines der Symbole der Bibliothek).
Exakt das gleiche wie die obige Warnung, aber für mehrere Programme.
Programm sollte nicht gegen Bibliothek gelinkt werden (es verwendet keines der Bibliotheks-Symbole).
Das Programm ist gegen eine Bibliothek gelinkt, die es nicht benötigt. Das ist kein Problem, aber bei
der Ladezeit können kleine Leistungsverbesserungen erreicht werden, indem diese Bibliothek nicht in
das Programm gelinkt wird. Diese Warnung überprüft die gleichen Informationen wie die vorhergehende,
allerdings für jedes Programm statt global für alle überprüften Programme.
Fehler
dpkg-shlibdeps wird fehlschlagen, falls es eine vom Programm verwendete öffentliche Bibliothek nicht
finden kann oder falls diese Bibliothek keine zugeordneten Abhängigkeitsinformationen hat (entweder eine
Shlibs- oder Symbols-Datei). Eine öffentliche Bibliothek hat einen SONAME und ist versioniert
(libirgendwas.so.X). Eine private Bibliothek (wie z.B. eine Erweiterung) sollte keinen SONAME haben und
braucht nicht versioniert zu sein.
konnte Bibliothek SONAME-der-Bibliothek benötigt von Programm nicht finden (ihr RPATH ist „rpath“).
Das Programm verwendet eine Bibliothek mit Namen SONAME-der-Bibliothek, aber dpkg-shlibdeps konnte
diese Bibliothek nicht finden. dpkg-shlibdeps erstellt folgendermaßen eine Liste der zu prüfenden
Verzeichnisse: im RPATH des Programms aufgeführte Verzeichnisse, durch die Option -l hinzugefügte
Verzeichnisse, in der Umgebungsvariable LD_LIBRARY_PATH aufgeführte Verzeichnisse, Cross-Multiarch-
Verzeichnisse (z.B. /lib/arm64-linux-gnu, /usr/lib/arm64-linux-gnu), standardmäßige öffentliche
Verzeichnisse (/lib, /usr/lib), in /etc/ld.so.conf aufgeführte Verzeichnisse und veraltete Multilib-
Verzeichnisse (/lib32, /usr/lib32, /lib64, /usr/lib64). Dann prüft es diese Verzeichnisse im Bau-Baum
des analysierten Pakets, in den mit der Befehlszeilenoption -S angegebenen Paketbauverzeichnissen, in
anderen Paketbau-Bäumen, die eine DEBIAN/shlibs- oder DEBIAN/symbols-Datei enthalten und schließlich
im Wurzelverzeichnis. Falls die Bibliothek nicht in einem dieser Verzeichnisse gefunden wird,
erhalten Sie diesen Fehler.
Falls sich die nicht gefundene Bibliothek in einem privaten Verzeichnis des gleichen Pakets befindet,
müssen Sie das Verzeichnis mit -l hinzufügen. Falls sie sich in einem anderen gerade zu bauenden
Paket befindet, müssen Sie sicherstellen, dass die „shlibs/symbols“-Datei dieses Pakets bereits
angelegt ist und das -l das geeignete Verzeichnis enthält, falls die Bibliothek zudem in einem
privaten Verzeichnis liegt.
Keine Abhängigkeitsinformationen für Bibliotheksdatei (verwendet von Programm) gefunden.
Die von Programm benötigte Bibliothek wurde von dpkg-shlibdeps in Bibliotheksdatei gefunden,
allerdings konnte dpkg-shlibdeps keine Abhängigkeitsinformationen für diese Bibliothek ermitteln. Um
die Abhängigkeit herauszufinden, hat es versucht, die Bibliothek mittels dpkg -S Bibliotheksdatei auf
ein Debian-Paket abzubilden. Dann überprüfte es die zugehörigen Shlibs- und Symboldateien in
/var/lib/dpkg/info/ und die verschiedenen Paketbaubäume (debian/*/DEBIAN/).
Dieser Fehlschlag kann durch defekte oder fehlende Shlibs- oder Symboldateien im Paket der Bibliothek
ausgelöst werden. Er könnte auch auftreten, falls die Bibliothek im gleichen Quellpaket gebaut wird
und die Shlibs-Datei noch nicht angelegt wurde (wobei Sie in diesem Fall debian/rules korrigieren
müssen, damit die Shlibs-Datei erstellt wird, bevor dpkg-shlibdeps aufgerufen wird). Defekte RPATH
können auch dazu führen, dass die Bibliothek unter nicht-kanonischen Namen gefunden wird
(beispielsweise /usr/lib/openoffice.org/../lib/libssl.so.0.9.8 statt /usr/lib/libssl.so.0.9.8), so
dass dann diese keinem Paket zugeordnet ist; dpkg-shlibdeps versucht dies zu umgehen, indem es auf
einen kanonischen Namen (mittels realpath(3)) zurückfällt, allerdings könnte dies manchmal nicht
funktionieren. Es ist immer am besten, den RPATH zu bereinigen, um Probleme zu vermeiden.
Viele weitere Informationen darüber, wo nach Abhängigkeitsinformationen gesucht wird, können durch
einen Aufruf von dpkg-shlibdeps im detaillierten Modus (-v) erhalten werden. Dies kann nützlich sein,
falls Sie nicht verstehen, warum es Ihnen diesen Fehler meldet.
SIEHE AUCH
deb-substvars(5), deb-shlibs(5), deb-symbols(5), dpkg-gensymbols(1).
ÜBERSETZUNG
Die deutsche Übersetzung wurde 2004, 2006-2025 von Helge Kreutzmann <debian@helgefjell.de>, 2007 von
Florian Rehnisch <eixman@gmx.de> und 2008 von Sven Joachim <svenjoac@gmx.de> angefertigt. Diese
Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 2 oder neuer für
die Kopierbedingungen. Es gibt KEINE HAFTUNG.
1.22.18 2025-04-28 dpkg-shlibdeps(1)