Provided by:
dpkg-dev_1.16.1.2ubuntu7_all 
NAMN
dpkg-shlibdeps - skapar substvar-beroenden for delade bibliotek
SYNOPS
dpkg-shlibdeps [flagga...] [-e]programfil [flagga...]
BESKRIVNING
dpkg-shlibdeps beraknar beroenden mellan exekverbara filer som anges
som argument och delade bibliotek. Beroendena laggs till i
substitueringsvariabelfilen debian/substvars som variabler med namnen
shlibs:beroendef"alt dar beroendeef"alt ar ett beroendefaltsnamn. Alla
andra variabler som borjar pa shlibs: tas bort ur filen.
dpkg-shlibdeps kan generera beroendeinformation fran tva
informationskallor, antingen filen symbols eller filen shlibs. For
varje binarfil som analyseras av dpkg-shlibdeps tas en lista fram over
vilka bibliotek de ar lankade mot. Programmet slar sedan upp varje
bibliotek i filen symbols, eller i filen shlibs (om den forstnamnda
inte existerar eller om debian/shlibs.local innehaller ett relevant
beroende). ). De bada filerna skall tillhandahallas av
bibliotekspaketet och borde darfor vara tillgangliga som
/var/lib/dpkg/info/paket.symbols eller /var/lib/dpkg/info/paket.shlibs.
Paketnamnet identifieras i tva steg: biblioteksfilen lokaliseras pa
systemet (genom att sla upp i de kataloger ld.so skulle anvant), och
darefter anvands dpkg -S biblioteksfil for att sla upp vilket paket
biblioteket kommer fran.
Symbolfiler
Symbolfiler innehaller mer finkornig beroendeinformation genom att ange
det minsta beroendet for varje symbol som exporteras av biblioteket.
Skriptet forsoker hitta de symboler som ar associerade med ett
bibliotek pa foljande platser (den forsta traffen anvands):
debian/*/DEBIAN/symbols
Information om delade bibliotek som skapats av den aktuella
byggproceduren som ocksa anropade dpkg-shlibdeps. De genereras
av dpkg-gensymbols(1). De anvands endast om biblioteket finns i
paketets byggrad. Filen symbols i det byggtradet gar fore
symbols-filer fran andra binarpaket.
/etc/dpkg/symbols/package.symbols.arkitektur
/etc/dpkg/symbols/paket.symbols
Overstyrningsfil for beroendeinformation for delade bibliotek,
per system. arkitektur ar det aktuella systemets arkitektur
(hamtas fran dpkg-architecture -qDEB_HOST_ARCH).
Utdata fran "dpkg-query --control-path package symbols"
Paketlokal overstyrande beroendeinformation for delade
bibliotek. Filerna befinner sig i /var/lib/dpkg om inte
overstyrt med --admindir.
dpkg-shlibs kommer ihag den (storsta) minimala version som behovs av
varje bibliotek nar den soker genom de symboler som anvands av alla
binarfilerna. Nar proceduren ar avslutad kan den visa det minsta
beroende som behovs av alla bibliotek som anvands (sa tillvida
informationen i symbols-filerna ar korrekt).
Som en sakerhetsatgard kan en symbols-fil innehalla
metainformationsfaltet Build-Depends-Package, varpa dpkg-shlibdeps
hamtar vilken minsta version som behovs for paketet ur
Build-Depends-faltet och anvander denna version om den ar hogre an den
minsta version som beraknats genom att soka genom symbolerna.
Shlibs-filer
Shlibs-filer associerar ett bibliotek direkt till ett beroende (utan
att se pa symbolerna). Det ar darfor oftare starkare an vad som
egentligen behovs, men mycket sakert och enkelt att hantera.
Beroenden for ett bibliotek slas upp pa flera platser. Den forsta filen
som innehaller information om det intressanta biblioteket anvands:
debian/shlibs.local
Paketlokal overstyrande beroendeinformation for delade
bibliotek.
/etc/dpkg/shlibs.override
Systemspecifik overstyrande beroendeinformation for delade
bibliotek.
debian/*/DEBIAN/shlibs
Information om delade bibliotek som skapats av den aktuella
byggproceduren som ocksa anropade dpkg-shlibdeps. De genereras
av dpkg-gensymbols(1). De anvands bara om biblioteket finns i
paketets byggtrad. Filen shlibs i byggtradet gar fore
shlibs-filer fran andra paket.
Utdata fran "dpkg-query --control-path package shlibs"
Paketlokal overstyrande beroendeinformation for delade
bibliotek. Filerna befinner sig i /var/lib/dpkg om inte
overstyrt med --admindir.
/etc/dpkg/shlibs.default
Systemspecifik standardberoendeinformation for delade bibliotek.
De utokade beroendena anvands sedan direkt (forutom om de filtrerats
bort for att de identifierats som dubbletter, eller svagare an ett
annat beroende).
FLAGGOR
dpkg-shlibdeps tolkar argument som inte ar flaggor som namn pa korbara
filer, precis som om de angivits som -eprogramfil.
-eprogramfil
Ta med beroenden som ar passar for delade bibliotek som kravs
for programfil.
-dberoendef"alt
Lagg till beroenden som skall laggas till till control-filens
beroendefalt beroendef"alt. (Beroenden for detta falt laggs in i
variabeln shlibs:beroendef"alt.)
Flaggan -dberoendef"alt galler for samtliga binarer efter
flaggan, fram till nasta -dberoendef"alt. Standardvardet for
beroendef"alt ar Depends.
Om samma katalogpost (eller en uppsattning alternativ)
forekommer i mer an ett av de kanda beroendefaltnamnen
Pre-Depends, Depends, Recommends, Enhances eller Suggests sa
kommer dpkg-shlibdeps att automatiskt ta bort beroendet fran
samtliga falt forutom det som anger de viktigaste beroendena.
-pvariabelnamnsprefix
Inled substitueringsvariabler med variabelnamnsprefix: i stallet
for shlibs:. Pa samma satt kommer befintliga
substitueringsvariabler som inleds med variabelnamnsprefix: (i
stallet for shlibs:) att tas bort fran
substitueringsvariabelfilen.
-O Skriv substitueringsvariabelinstallningar pa standard ut, i
stallet for att forsoka lagga till dem i
substitueringsvariabelfilen (som standard debian/substvars).
-ttyp Foredra information om delade bibliotek som markts for den givna
pakettypen. Om det inte finns nagon markt information anvands
omarkt. Standardpakettypen ar "deb". Beroendeinformation for
delade bibliotek marks for en given typ genom att inleda det med
namnet pa typen, ett kolon, samt blanktecken.
-Llokal-shlibs-fil
Las overstyrande beroendeinformation om delade bibliotek fran
lokal-shlibs-fil i stallet for debian/shlibs.local.
-Tsubstvars-fil
Skriv substitueringsvariabler i substvars-fil; standard ar
debian/substvars.
-V Aktiverar pratsamt lage. Flera meddelanden visas for att
forklara vad dpkg-shlibs haller pa med.
-xpaket
Uteslut paketet fran de genererade beroendena. Flaggan ar
anvandbar for att undvika sjalvberoenden for paket som
innehaller ELF-binarer (exekverbara eller
biblioteksinsticksprogram) som anvander ett bibliotek som ligger
i samma paket. Flaggan kan anvandas flera ganger for att
utesluta flera paket.
-Spaketbyggkatalog
Se forst i paketbyggkatalog vid forsok att hitta ett bibliotek.
Anvandbart nar kallkodspaketet bygger flera varianter av samma
bibliotek och du vill se till att du far beroendet fran ett
givet binarpaket. Flaggan kan inte anvandas flera ganger:
kataloger soks efter i samma ordning fore kataloger fran andra
binarpaket.
--ignore-missing-info
Misslyckas inte om det inte upptacks nagon beroendeinformation
for ett delat bibliotek. Alla bibliotek bor tillhandahalla
beroendeinformation (antingen med shlibs-filer eller med
symbols-filer), aven om de annu inte anvands av andra paket.
--warnings=v"arde
V"arde ar ett bitfalt som anger de varningar som kan ges av
dpkg-shlibdeps. Bit 0 (varde=1) aktiverar varningen "symbolen
sym, som anvands av bin"ar, hittades inte i nagot av
biblioteken", bit 1 (varde=2) aktiverar varningen "beroendet pa
bibliotekt kunde undvikas" och bit 2 (varde=4) aktiverar
varningen "bin"ar borde inte vara lankat mot bibliotek". Standard
for v"arde ar 3: de forsta tva varningarna ar aktiva som
standard, men inte den sista. Satt v"arde till 7 om du vill att
alla varningar skall vara aktiva.
--admindir=kat
Andra platsen for dpkg-databasen. Forval ar /var/lib/dpkg.
-h, --help
Visar hjalpskarm och avslutar.
--version
Visar version och avslutar.
VARNINGAR
Eftersom dpkg-shlibdeps analyserar mangden symboler som anvands av
varje binarfil i det genererade paketet, kan det i flera fall skriva ut
varningsmeddelanden. De visar pa saker som kan forbattras i paketet. I
de flesta fall galler forbattringarna direkt uppstromskallkoden. Har ar
de varningar du kan stota pa, i fallande allvarlighetsgrad:
symbolen sym, som anv"ands av bin"ar, hittades inte i noagot av
biblioteken.
Den omnamnda symbolen hittades inte i biblioteken som lankas mot
binaren. Bin"ar ar antagligen ett bibliotek och maste lankas mot
ett annat bibliotek under byggproceduren (lankarflaggan
-lbibliotek).
bin"ar innehoaller en referens till symbolen sym som inte kan kopplas;
det "ar troligen ett insticksprogram
Den angivna symbolen hittades inte i biblioteken som lankats mot
binaren. Bin"ar ar antagligen ett insticksprogram och symbolen
tillhandahalls av programmet som laser in det. I teorin har inte
insticksprogram nagot SONAMN, men den har binaren har ett och
darmed kunde det inte tydligt identifieras som insticksprogram.
Det faktum att binaren befinner sig i en icke-offentlig katalog
ar dock en stark indikation pa att det inte ar ett vanligt delat
bibliotek. Om binaren faktiskt ar ett insticksprogram kan du
ignorera varningen. Det ar dock alltid mojligt att det ar ett
riktigt bibliotek och att program som lanker det anvander en
RPATH sa att den dynamiska lankaren hittar det. Om sa ar fallet
ar biblioteket trasigt och behover fixas.
Beroendet poa bibliotek kunde undvikas om inte bin"arer meningsl"ost
l"ankades mot det (de anv"ander inga av dess symboler).
Ingen av bin"arerna som lankas mot bibliotek anvander nagon av
symbolerna som tillhandahalls av biblioteket. Genom att ratta
alla binarer kan du undvika beroendet som galler detta bibliotek
(savida inte samma beroende aven genereras av ett annat
bibliotek som faktiskt anvands).
bin"ar borde inte vara l"ankat mot bibliotek (inga av symbolerna
anv"ands).
Bin"ar lankar mot ett bibliotek den inte behover. Det ar inte ett
problem, Men genom att inte lanka biblioteket mot binaren kan
man uppna en mindre prestandaforbattring. Varningen kontrollerar
samma information som den foregaende, men gor det for varje
binar istallet for att utfora kontrollen globalt pa alla
analyserade binarer.
FELMEDDELANDEN
dpkg-shlibdeps kommer att misslyckas om det inte hittar ett oppet
bibliotek som en av binarerna anvander, eller om biblioteket saknar
associerad beroendeinformation (antingen en shlibs-fil eller en
symbols-fil). Ett oppet bibliotek har ett SONAMN och ar
versionshanterad (libvadsomhelst.so.X). Ett privat bibliotek (till
exempel ett insticksprogram) bor inte ha nagot SONAMN och behover inte
vara versionshanterat.
hittade inte biblioteket bibliotek-sonamn som beh"ovs f"or bin"ar (dess
RPATH "ar "rpath")
Bin"ar anvander ett bibliotek som heter bibliotek-sonamn, men
dpkg-shlibdeps kunde inte hitta biblioteket. dpkg-shlibdeps
skapar en lista over kataloger det ser i pa foljande satt:
katalogerna som beskrivs i RPATH i binaren, kataloger som
beskrivs i /etc/ld.so.conf, kataloger i miljovariabeln
LD_LIBRARY_PATH, och vanliga oppna kataloger (/lib, /usr/lib,
/lib32, /usr/lib32, /lib64, /usr/lib64). Darefter ser det i
motsvarande kataloger i byggtradet for paketet som innehaller
binaren som analyseras, i paketbyggtradet som anges med
kommandoradsflaggan -S, i andra pakets byggtrad som innehaller
en DEBIAN/shlibs-fil och slutligen i rotkatalogen. Om
biblioteket inte hittas i nagon av dessa kataloger far du det
har felmeddelandet.
Om biblioteket som inte hittades ligger i en privat katalog i
samma paket bor du lagga till katalogen i LD_LIBRARY_PATH. Om
det finns i ett annat binarpaket som byggs bor du se till att
shlibs- eller symbols-filen for paketet redan har skapats och
att LD_LIBRARY_PATH innehaller korrekt katalog som det ocksa
ligger i en privat katalog.
hittade ingen beroendeinformation f"or biblioteksfil (anv"and av bin"ar).
Biblioteket som behovs av bin"ar hittades i biblioteksfil av
dpkg-shlibdeps, men dpkg-shlibdeps kunde inte hitta nagon
beroendeinformation for biblioteket. For att hitta beroendet har
det forsokt koppla biblioteket mot ett Debianpaket med hjalp av
dpkg -S biblioteksfil. Darefter sag det i motsvarande shlibs-
och symbols-filer i /var/lib/dpkg/info/, samt i de olika
paketens byggtrad (debian/*/DEBIAN/).
Det har felet kan orsakas av felaktiga eller saknade shlibs-
eller symbols-filer i bibliotekets paket. Det kan aven intraffa
om biblioteket byggts i samma kallkodspaket och om shlibs-filen
annu inte har skapats (da maste du fixa debian/rules sa att det
skapar shlibs-filen innan det anropar dpkg-shlibdeps). Felaktig
RPATH kan ocksa leda till att biblioteket hittas under ett
icke-kanoniskt namn (till exempel:
/usr/lib/openoffice.org/../lib/libssl.so.9.8 istallet for
/usr/lib/libssl.so.0.9.8) som inte associeras till nagot paket,
dpkg-shlibdeps forsoker ga runt detta genom att falla tillbaka
pa ett kanoniskt namn (med realpath(3)), men det fungerar kanske
inte alltid. Det ar alltid bast att stada upp RPATH i binaren
for att undvika problem.
Om du anropar dpkg-shlibdeps i pratsamt lage (-v) kommer det ge
mycket mer information om var det forsokte hitta
beroendeinformationen. Det kan vara anvandbart om du inte
forstar varfor du far felmeddelandet.
SE "AVEN
deb-shlibs(5), deb-symbols(5), dpkg-gensymbols(1).
F"ORFATTARE
Upphovsrattsskyddat (C) 1995-1996 Ian Jackson
Upphovsrattsskyddat (C) 2000 Wichert Akkerman
Upphovsrattsskyddat (C) 2006 Frank Lichtenheld
Upphovsrattsskyddat (C) 2007-2008 Raphael Hertzog
Detta ar fri programvara; se GNU General Public License version 2 eller
senare for kopieringsvillkor. Det finns INGEN GARANTI.
"OVERS"ATTNING
Peter Krefting och Daniel Nylander.