Provided by: dpkg-dev_1.22.11ubuntu1_all bug

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
           Wert ist ein Bitfeld, das den Satz an Warnungen definiert, die von dpkg-shlibdeps
           ausgegeben werden können (seit Dpkg 1.14.17). Bit 0 (Wert=1) aktiviert die Warnung
           „Symbol Sym, verwendet von Programm, in keiner der Bibliotheken gefunden.“, Bit 1
           (Wert=2) aktiviert die Warnung „Das Paket könnte eine nutzlose Abhängigkeit vermeiden“
           und Bit 2 (Wert=4) aktiviert die Warnung „Programm sollte nicht gegen Bibliothek
           gelinkt werden“. Standardmäßig ist Wert 3: die ersten zwei Warnungen sind
           standardmäßig aktiv, die letzte nicht. Setzen Sie Wert auf 7, falls Sie möchten, dass
           alle Warnungen aktiv sein sollen.

       --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-2024 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.