dpkg-shlibdeps(1)

NAME
dpkg-shlibdeps - erstelle Substvar-Abhängigkeiten für Laufzeitbibliotheken

ÜBERSICHT
dpkg-shlibdeps [Option ?] [-e]Programm [Option ?]

BESCHREIBUNG
dpkg-shlibdeps berechnet Abhängigkeiten von Laufzeitbibliotheken für Programme, deren Name als Argument übergeben werden. Die Abhängigkeiten werden zu der Datei der Substitutionsvariablen 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 in Shlibs-Datei (falls erstere nicht existiert odr 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”
    Package-provided shared library dependency information. Unless overridden by --admindir, those files are located in /var/lib/dpkg.

Während des Durchsuchens aller vom Programm verwendeten Symbole erinnert sich dpkg-shlibdeps an die größte 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).

As a safe-guard measure, a symbols file can provide a Build-Depends-Package meta-information field and dpkg-shlibdeps will extract the minimal version required by the corresponding package in the Build-Depends field and use this version if it's higher than the minimal version computed by scanning symbols.

  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 wird 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”
    Package-provided shared library dependency information. Unless overridden by --admindir, those files are located in /var/lib/dpkg.

/etc/dpkg/shlibs.default
    Systemabhängige Vorgaben für Abhängigkeitsinformationen von Laufzeitbibliotheken.

Die extrahierten Abhängigkeiten werden direkt verwendet (es sei den, 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
    Include dependencies appropriate for the shared libraries required by executable. This option can be used multiple times.

-ldirectory
    Add directory to the list of directories to search for private shared libraries (since dpkg 1.17.0). This option can be used multiple times. Note: Use this option instead of setting LD_LIBRARY_PATH, as that environment variable is used to control the run-time linker and abusing it to set the shared library paths at build-time can be problematic when cross-compiling for example.

-dAbhängigkeitsfeld
    Füge Abhängigkeiten hinzu, die zum Abhängigkeitsfeld 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.

-pVariablennamepräfix
    Beginn die Substitutionsvariablen mit Variablennamepräfix: statt mit shlibs:. Entsprechend werden alle Substitutionsvariablen, die mit Variablennamepräfix: (statt mit shlibs:) beginnen, aus den Substitutionsvariablen entfernt.

-O  Gebe die Variableneinstellung in die Standardausgabe aus, statt sie zu der Substitutionsvariablendatei (standardmäßig (debian/substvars) hinzuzufügen.

-tTyp
    Bevorzuge 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 Leerzeichen gesetzt wird.

-Llokale_shlibs-Datei
    Lese die Hinwegsetz-Abhängigkeiten von Laufzeitbibliotheken aus lokale_shlibs-Datei statt aus debian/shlibs.local.

-TSubstvars-Datei
    Schreibe Substitutionsvariablen in Substvars-Datei; standardmäßig debian/substvars.

-v  Aktiviere ausführlichen Modus. Eine Vielzahl von Nachrichten wird angezeigt, um zu erklären, was dpkg-shlibdeps durchführt.

-xPaket
    Schließe das Paket von den generierten Abhängigkeiten aus. Dies ist für Pakete nützlich, die ELF-Programmdateien (Programme oder Bibliothekserweiterungen) bereitstellen, die eine Bibliothek im gleichen Paket verwenden, um selbst-Abhängigkeiten zu vermeiden. Diese Option kann mehrfach verwendet werden, um mehrere Pakete auszuschließen.

-SPaketbauverzeichnis
    Schaue beim Versuch, eine Bibliothek zu finden, zuerst in Paketbauverzeichnis. 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.

--ignore-missing-info
    Falls keine Abhängigkeitsinformationen für die Laufzeitbibliothek gefunden werden kann, erfolgt kein Fehlschlag. Von der Verwendung dieser Option wird abgearten, 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. 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. Setzten Sie Wert auf 7, falls Sie möchten, dass alle Warnungen aktiv sein sollen.

--admindir=Verz
    Ändert den Ablageort der dpkg-Datenbank. Der Standardort ist /var/lib/dpkg.

-?, --help
    Zeige den Bedienungshinweis und beende.

--version
    Gebe die Version aus und beende sich.

DIAGNOSE

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

  Errors
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. ein 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«).
    The binary uses a library called library-soname but dpkg-shlibdeps has been unable to find the library. dpkg-shlibdeps creates a list of directories to check as following: directories listed in the RPATH of the binary, directories listed in /etc/ld.so.conf, directories added by the -l option, directories listed in the LD_LIBRARY_PATH environment variable, and standard public directories (/lib, /usr/lib, /lib32, /usr/lib32, /lib64, /usr/lib64). Then it checks those directories in the package's build tree of the binary being analyzed, in the packages' build trees indicated with the -S command-line option, in other packages' build trees that contains a DEBIAN/shlibs or DEBIAN/symbols file and finally in the root directory. If the library is not found in any of those directories, then you get this error. If the library not found is in a private directory of the same package, then you want to add the directory with -l. If it's in another binary package being built, you want to make sure that the shlibs/symbols file of this package is already created and that -l contains the appropriate directory if it also is in a private directory.

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. Calling dpkg-shlibdeps in verbose mode (-v) will provide much more information about where it tried to find the dependency information. This might be useful if you don't understand why it's giving you this error.

ÜBERSETZUNG
Die deutsche Übersetzung wurde 2004, 2006-2012 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.

SIEHE AUCH
deb-shlibs(5), deb-symbols(5), dpkg-gensymbols(1).