Provided by:
dpkg-dev_1.15.5.6ubuntu4_all 
NAME
dpkg-shlibdeps - erstelle Substvar-Abhängigkeiten für
Laufzeitbibliotheken
ÜBERSICHT
dpkg-shlibdeps [Optionen] Programm|-eProgramm [Optionen]
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.
Symbol-Dateien
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 Symbol-Datei im Bau-Baum hat Vorrang gegenüber
Symbol-Dateien 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).
adminverz/info/Paket.symbols
Vom Paket bereitgestellte Abhängigkeitsinformationen für
Laufzeitbibliotheken. Falls nicht überschrieben, ist adminverz
/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).
Als Sicherheitsmaßnahme kann eine Symbols-Datei ein
Meta-Informationsfeld Build-Depends-Package enthalten. dpkg-shlibdeps
extrahiert 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 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.
Adminverz/info/Paket.shlibs
Vom Paket bereitgestellte Abhängigkeitsinformationen für
Laufzeitbibliotheken. Falls nicht überschrieben, ist adminverz
/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
Abhängigkeiten aufnehmen, die für von Programm benötigte
Laufzeitbibliotheken angemessen sind.
-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.
-Llokalshlibsdatei
Lese die Hinwegsetz-Abhängigkeiten von Laufzeitbibliotheken aus
lokalshlibsdatei statt aus debian/shlibs.local.
-Tsubstvardatei
Schreibe Substitutionsvariablen in Substvardatei; 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 »Abhängigkeit von Bibliothek könnte vermieden werden«
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.
-h, --help
Zeige den Bedienungshinweis und beende.
--version
Gebe die Version aus und beende sich.
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.
Abhängigkeit von Bibliothek könnte vermieden werden, falls Programm
nicht unnötigerweise dagegen gelinkt wäre (es verwendet keines seiner
Symbole.
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).
Programm sollte nicht gegen Bibliothek gelinkt werden (es verwendet
keines ihrer 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. 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«).
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, in /etc/ld.so.conf
aufgeführte Verzeichnisse, in der Umgebungsvariable
LD_LIBRARY_PATH aufgeführte Verzeichnisse und standardmäßige
öffentliche Verzeichnisse (/lib, /usr/lib, /lib32, /usr/lib32,
/lib64, /usr/lib64). Dann prüft es diese Verzeichnisse im
Bau-Baum des analysierten Pakets, in den mit der
Kommandozeilenoption -S angegebenen Paketbauverzeichnisse, 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 zu LD_LIBRARY_PATH 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 dass LD_LIBRARY_PATH 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
Symbol-Dateien 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/gcc/i486-linux-gnu/4.2.3/../../../../lib/libssl.so.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 geschwätzigen Modus (-v) erhalten
werden. Dies kann nützlich sein, falls Sie nicht verstehen,
warum es Ihnen diesen Fehler meldet.
ÜBERSETZUNG
Die deutsche Übersetzung wurde 2004, 2006-2009 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).
AUTOREN
Copyright © 1995-1996 Ian Jackson
Copyright © 2000 Wichert Akkerman
Copyright © 2006 Frank Lichtenheld
Copyright © 2007-2008 Raphaël Hertzog
Dies ist Freie Software; lesen Sie die GNU General Public License
Version 2 oder neuer für die Kopierbedingungen. Es gibt KEINE Haftung.