Provided by:
dpkg-dev_1.15.8.4ubuntu3_all 
NAMN
dpkg-shlibdeps - skapar substvar-beroenden fr delade bibliotek
SYNOPS
dpkg-shlibdeps [flaggor] programfil|-eprogramfil [flaggor]
BESKRIVNING
dpkg-shlibdeps berknar beroenden mellan exekverbara filer som anges som
argument och delade bibliotek. Beroendena lggs till i
substitueringsvariabelfilen debian/substvars som variabler med namnen
shlibs:beroendeflt dr beroendeeflt r ett beroendefltsnamn. Alla andra
variabler som brjar p shlibs: tas bort ur filen.
dpkg-shlibdeps kan generera beroendeinformation frn tv
informationskllor, antingen filen symbols eller filen shlibs. Fr varje
binrfil som analyseras av dpkg-shlibdeps tas en lista fram ver vilka
bibliotek de r lnkade mot. Programmet slr sedan upp varje bibliotek i
filen symbols, eller i filen shlibs (om den frstnmnda inte existerar
eller om debian/shlibs.local innehller ett relevant beroende). ). De
bda filerna skall tillhandahllas av bibliotekspaketet och borde drfr
vara tillgngliga som /var/lib/dpkg/info/paket.symbols eller
/var/lib/dpkg/info/paket.shlibs. Paketnamnet identifieras i tv steg:
biblioteksfilen lokaliseras p systemet (genom att sl upp i de kataloger
ld.so skulle anvnt), och drefter anvnds dpkg -S biblioteksfil fr att sl
upp vilket paket biblioteket kommer frn.
Symbolfiler
Symbolfiler innehller mer finkornig beroendeinformation genom att ange
det minsta beroendet fr varje symbol som exporteras av biblioteket.
Skriptet frsker hitta de symboler som r associerade med ett bibliotek p
fljande platser (den frsta trffen anvnds):
debian/*/DEBIAN/symbols
Information om delade bibliotek som skapats av den aktuella
byggproceduren som ocks anropade dpkg-shlibdeps. De genereras av
dpkg-gensymbols(1). De anvnds endast om biblioteket finns i
paketets byggrd. Filen symbols i det byggtrdet gr fre
symbols-filer frn andra binrpaket.
/etc/dpkg/symbols/package.symbols.arkitektur
/etc/dpkg/symbols/paket.symbols
verstyrningsfil fr beroendeinformation fr delade bibliotek, per
system. arkitektur r det aktuella systemets arkitektur (hmtas
frn dpkg-architecture -qDEB_HOST_ARCH).
adminkat/info/paket.symbols
Paketlokal verstyrande beroendeinformation fr delade bibliotek.
Normalt r adminkat /var/lib/dpkg.
dpkg-shlibs kommer ihg den (strsta) minimala version som behvs av varje
bibliotek nr den sker genom de symboler som anvnds av alla binrfilerna.
Nr proceduren r avslutad kan den visa det minsta beroende som behvs av
alla bibliotek som anvnds (s tillvida informationen i symbols-filerna r
korrekt).
Som en skerhetstgrd kan en symbols-fil innehlla metainformationsfltet
Build-Depends-Package, varp dpkg-shlibdeps hmtar vilken minsta version
som behvs fr paketet ur Build-Depends-fltet och anvnder denna version
om den r hgre n den minsta version som berknats genom att ska genom
symbolerna.
Shlibs-filer
Shlibs-filer associerar ett bibliotek direkt till ett beroende (utan
att se p symbolerna). Det r drfr oftare starkare n vad som egentligen
behvs, men mycket skert och enkelt att hantera.
Beroenden fr ett bibliotek sls upp p flera platser. Den frsta filen som
innehller information om det intressanta biblioteket anvnds:
debian/shlibs.local
Paketlokal verstyrande beroendeinformation fr delade bibliotek.
/etc/dpkg/shlibs.override
Systemspecifik verstyrande beroendeinformation fr delade
bibliotek.
debian/*/DEBIAN/shlibs
Information om delade bibliotek som skapats av den aktuella
byggproceduren som ocks anropade dpkg-shlibdeps. De genereras av
dpkg-gensymbols(1). De anvnds bara om biblioteket finns i
paketets byggtrd. Filen shlibs i byggtrdet gr fre shlibs-filer
frn andra paket.
adminkat/info/paket.shlibs
Paketlokal verstyrande beroendeinformation fr delade bibliotek.
Normalt r adminkat /var/lib/dpkg.
/etc/dpkg/shlibs.default
Systemspecifik standardberoendeinformation fr delade bibliotek.
De utkade beroendena anvnds sedan direkt (frutom om de filtrerats bort
fr att de identifierats som dubbletter, eller svagare n ett annat
beroende).
FLAGGOR
dpkg-shlibdeps tolkar argument som inte r flaggor som namn p krbara
filer, precis som om de angivits som -eprogramfil.
-eprogramfil
Ta med beroenden som r passar fr delade bibliotek som krvs fr
programfil.
-dberoendeflt
Lgg till beroenden som skall lggas till till control-filens
beroendeflt beroendeflt. (Beroenden fr detta flt lggs in i
variabeln shlibs:beroendeflt.)
Flaggan -dberoendeflt gller fr samtliga binrer efter flaggan,
fram till nsta -dberoendeflt. Standardvrdet fr beroendeflt r
Depends.
Om samma katalogpost (eller en uppsttning alternativ) frekommer
i mer n ett av de knda beroendefltnamnen Pre-Depends, Depends,
Recommends, Enhances eller Suggests s kommer dpkg-shlibdeps att
automatiskt ta bort beroendet frn samtliga flt frutom det som
anger de viktigaste beroendena.
-pvariabelnamnsprefix
Inled substitueringsvariabler med variabelnamnsprefix: i stllet
fr shlibs:. P samma stt kommer befintliga
substitueringsvariabler som inleds med variabelnamnsprefix: (i
stllet fr shlibs:) att tas bort frn substitueringsvariabelfilen.
-O Skriv substitueringsvariabelinstllningar p standard ut, i stllet
fr att frska lgga till dem i substitueringsvariabelfilen (som
standard debian/substvars).
-ttyp Fredra information om delade bibliotek som mrkts fr den givna
pakettypen. Om det inte finns ngon mrkt information anvnds
omrkt. Standardpakettypen r "deb". Beroendeinformation fr delade
bibliotek mrks fr en given typ genom att inleda det med namnet p
typen, ett kolon, samt blanktecken.
-Llokal-shlibs-fil
Ls verstyrande beroendeinformation om delade bibliotek frn
lokal-shlibs-fil i stllet fr debian/shlibs.local.
-Tsubstvars-fil
Skriv substitueringsvariabler i substvars-fil; standard r
debian/substvars.
-V Aktiverar pratsamt lge. Flera meddelanden visas fr att frklara
vad dpkg-shlibs hller p med.
-xpaket
Uteslut paketet frn de genererade beroendena. Flaggan r anvndbar
fr att undvika sjlvberoenden fr paket som innehller ELF-binrer
(exekverbara eller biblioteksinsticksprogram) som anvnder ett
bibliotek som ligger i samma paket. Flaggan kan anvndas flera
gnger fr att utesluta flera paket.
-Spaketbyggkatalog
Se frst i paketbyggkatalog vid frsk att hitta ett bibliotek.
Anvndbart nr kllkodspaketet bygger flera varianter av samma
bibliotek och du vill se till att du fr beroendet frn ett givet
binrpaket. Flaggan kan inte anvndas flera gnger: kataloger sks
efter i samma ordning fre kataloger frn andra binrpaket.
--ignore-missing-info
Misslyckas inte om det inte upptcks ngon beroendeinformation fr
ett delat bibliotek. Alla bibliotek br tillhandahlla
beroendeinformation (antingen med shlibs-filer eller med
symbols-filer), ven om de nnu inte anvnds av andra paket.
--warnings=vrde
Vrde r ett bitflt som anger de varningar som kan ges av
dpkg-shlibdeps. Bit 0 (vrde=1) aktiverar varningen "symbolen
sym, som anvnds av binr, hittades inte i ngot av biblioteken",
bit 1 (vrde=2) aktiverar varningen "beroendet p bibliotekt kunde
undvikas" och bit 2 (vrde=4) aktiverar varningen "binr borde
inte vara lnkat mot bibliotek". Standard fr vrde r 3: de frsta
tv varningarna r aktiva som standard, men inte den sista. Stt
vrde till 7 om du vill att alla varningar skall vara aktiva.
--admindir=kat
ndra platsen fr dpkg-databasen. Frval r /var/lib/dpkg.
-h, --help
Visar hjlpskrm och avslutar.
--version
Visar version och avslutar.
VARNINGAR
Eftersom dpkg-shlibdeps analyserar mngden symboler som anvnds av varje
binrfil i det genererade paketet, kan det i flera fall skriva ut
varningsmeddelanden. De visar p saker som kan frbttras i paketet. I de
flesta fall gller frbttringarna direkt uppstrmskllkoden. Hr r de
varningar du kan stta p, i fallande allvarlighetsgrad:
symbolen sym, som anvnds av binr, hittades inte i ngot av biblioteken.
Den omnmnda symbolen hittades inte i biblioteken som lnkas mot
binren. Binr r antagligen ett bibliotek och mste lnkas mot ett
annat bibliotek under byggproceduren (lnkarflaggan -lbibliotek).
binr innehller en referens till symbolen sym som inte kan kopplas; det
r troligen ett insticksprogram
Den angivna symbolen hittades inte i biblioteken som lnkats mot
binren. Binr r antagligen ett insticksprogram och symbolen
tillhandahlls av programmet som lser in det. I teorin har inte
insticksprogram ngot SONAMN, men den hr binren har ett och drmed
kunde det inte tydligt identifieras som insticksprogram. Det
faktum att binren befinner sig i en icke-offentlig katalog r
dock en stark indikation p att det inte r ett vanligt delat
bibliotek. Om binren faktiskt r ett insticksprogram kan du
ignorera varningen. Det r dock alltid mjligt att det r ett
riktigt bibliotek och att program som lnker det anvnder en RPATH
s att den dynamiska lnkaren hittar det. Om s r fallet r
biblioteket trasigt och behver fixas.
Beroendet p bibliotek kunde undvikas om inte binrer meningslst lnkades
mot det (de anvnder inga av dess symboler).
Ingen av binrerna som lnkas mot bibliotek anvnder ngon av
symbolerna som tillhandahlls av biblioteket. Genom att rtta alla
binrer kan du undvika beroendet som gller detta bibliotek (svida
inte samma beroende ven genereras av ett annat bibliotek som
faktiskt anvnds).
binr borde inte vara lnkat mot bibliotek (inga av symbolerna anvnds).
Binr lnkar mot ett bibliotek den inte behver. Det r inte ett
problem, Men genom att inte lnka biblioteket mot binren kan man
uppn en mindre prestandafrbttring. Varningen kontrollerar samma
information som den fregende, men gr det fr varje binr istllet
fr att utfra kontrollen globalt p alla analyserade binrer.
FELMEDDELANDEN
dpkg-shlibdeps kommer att misslyckas om det inte hittar ett ppet
bibliotek som en av binrerna anvnder, eller om biblioteket saknar
associerad beroendeinformation (antingen en shlibs-fil eller en
symbols-fil). Ett ppet bibliotek har ett SONAMN och r versionshanterad
(libvadsomhelst.so.X). Ett privat bibliotek (till exempel ett
insticksprogram) br inte ha ngot SONAMN och behver inte vara
versionshanterat.
hittade inte biblioteket bibliotek-sonamn som behvs fr binr (dess RPATH
r "rpath")
Binr anvnder ett bibliotek som heter bibliotek-sonamn, men
dpkg-shlibdeps kunde inte hitta biblioteket. dpkg-shlibdeps
skapar en lista ver kataloger det ser i p fljande stt:
katalogerna som beskrivs i RPATH i binren, kataloger som
beskrivs i /etc/ld.so.conf, kataloger i miljvariabeln
LD_LIBRARY_PATH, och vanliga ppna kataloger (/lib, /usr/lib,
/lib32, /usr/lib32, /lib64, /usr/lib64). Drefter ser det i
motsvarande kataloger i byggtrdet fr paketet som innehller
binren som analyseras, i paketbyggtrdet som anges med
kommandoradsflaggan -S, i andra pakets byggtrd som innehller en
DEBIAN/shlibs-fil och slutligen i rotkatalogen. Om biblioteket
inte hittas i ngon av dessa kataloger fr du det hr
felmeddelandet.
Om biblioteket som inte hittades ligger i en privat katalog i
samma paket br du lgga till katalogen i LD_LIBRARY_PATH. Om det
finns i ett annat binrpaket som byggs br du se till att shlibs-
eller symbols-filen fr paketet redan har skapats och att
LD_LIBRARY_PATH innehller korrekt katalog som det ocks ligger i
en privat katalog.
hittade ingen beroendeinformation fr biblioteksfil (anvnd av binr).
Biblioteket som behvs av binr hittades i biblioteksfil av
dpkg-shlibdeps, men dpkg-shlibdeps kunde inte hitta ngon
beroendeinformation fr biblioteket. Fr att hitta beroendet har
det frskt koppla biblioteket mot ett Debianpaket med hjlp av
dpkg -S biblioteksfil. Drefter sg det i motsvarande shlibs- och
symbols-filer i /var/lib/dpkg/info/, samt i de olika paketens
byggtrd (debian/*/DEBIAN/).
Det hr felet kan orsakas av felaktiga eller saknade shlibs-
eller symbols-filer i bibliotekets paket. Det kan ven intrffa om
biblioteket byggts i samma kllkodspaket och om shlibs-filen nnu
inte har skapats (d mste du fixa debian/rules s att det skapar
shlibs-filen innan det anropar dpkg-shlibdeps). Felaktig RPATH
kan ocks leda till att biblioteket hittas under ett
icke-kanoniskt namn (till exempel:
/usr/lib/openoffice.org/../lib/libssl.so.9.8 istllet fr
/usr/lib/libssl.so.0.9.8) som inte associeras till ngot paket,
dpkg-shlibdeps frsker g runt detta genom att falla tillbaka p
ett kanoniskt namn (med realpath(3)), men det fungerar kanske
inte alltid. Det r alltid bst att stda upp RPATH i binren fr att
undvika problem.
Om du anropar dpkg-shlibdeps i pratsamt lge (-v) kommer det ge
mycket mer information om var det frskte hitta
beroendeinformationen. Det kan vara anvndbart om du inte frstr
varfr du fr felmeddelandet.
SE VEN
deb-shlibs(5), deb-symbols(5), dpkg-gensymbols(1).
FRFATTARE
Upphovsrttsskyddat 1995-1996 Ian Jackson
Upphovsrttsskyddat 2000 Wichert Akkerman
Upphovsrttsskyddat 2006 Frank Lichtenheld
Upphovsrttsskyddat 2007-2008 Raphal Hertzog
Detta r fri programvara; se GNU General Public License version 2 eller
senare fr kopieringsvillkor. Det finns INGEN GARANTI.
VERSTTNING
Peter Krefting och Daniel Nylander.