Man page - dpkg-shlibdeps(1)

Packages contains this manual

Available languages:

en fr pt nl sv de

Manual

dpkg-shlibdeps

NAMN
SYNOPS
BESKRIVNING
Symbolfiler
Shlibs-filer
FLAGGOR
MILJÖVARIABLER
DIAGNOSTIK
Varningar
Fel
SE ÄVEN
ÖVERSÄTTNING

NAMN

dpkg-shlibdeps - skapar substvar-beroenden för delade bibliotek

SYNOPS

dpkg-shlibdeps [ flagga ...] [ -e ] programfil [ flagga ...]

BESKRIVNING

dpkg-shlibdeps berÀknar beroenden mellan exekverbara filer som anges som argument och delade bibliotek. Beroendena lÀggs till i substitueringsvariabelfilen debian/substvars som variabler med namnen shlibs: beroendefÀlt dÀr beroendeefÀlt Àr ett beroendefÀltsnamn. Alla andra variabler som börjar pÄ shlibs: tas bort ur filen.

dpkg-shlibdeps kan generera beroendeinformation frÄn tvÄ informationskÀllor, antingen filen symbols eller filen shlibs . För varje binÀrfil som analyseras av dpkg-shlibdeps tas en lista fram över vilka bibliotek de Àr lÀnkade mot. Programmet slÄr sedan upp varje bibliotek i filen symbols , eller i filen shlibs (om den förstnÀmnda inte existerar eller om debian/shlibs.local innehÄller ett relevant beroende). ). De bÄda filerna ska tillhandahÄllas av bibliotekspaketet och borde dÀrför vara tillgÀngliga 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 anvÀnt), och dÀrefter anvÀnds dpkg -S biblioteksfil för att slÄ upp vilket paket biblioteket kommer frÄn.

Symbolfiler

Symbolfiler innehÄller mer finkornig beroendeinformation genom att ange det minsta beroendet för varje symbol som exporteras av biblioteket. Skriptet försöker hitta de symboler som Àr associerade med ett bibliotek pÄ följande platser (den första trÀffen anvÀnds):
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 anvÀnds endast om biblioteket finns i paketets byggrÀd. Filen symbols i det byggtrÀdet gÄr före symbols-filer frÄn andra binÀrpaket.

/etc/dpkg/symbols/ package .symbols. arkitektur
/etc/dpkg/symbols/ paket .symbols

Överstyrningsfil för beroendeinformation för delade bibliotek, per system. arkitektur Ă€r det aktuella systemets arkitektur (hĂ€mtas frĂ„n dpkg-architecture -qDEB_HOST_ARCH ).

Utdata frĂ„n ” dpkg-query --control-path package symbols”

Paketlokal överstyrande beroendeinformation för delade bibliotek. Filerna befinner sig i /var/lib/dpkg om inte överstyrt med --admindir .

dpkg-shlibs kommer ihÄg den (största) minimala version som behövs av varje bibliotek nÀr den söker genom de symboler som anvÀnds av alla binÀrfilerna. NÀr proceduren Àr avslutad kan den visa det minsta beroende som behövs av alla bibliotek som anvÀnds (sÄ tillvida informationen i symbols -filerna Àr korrekt).

Som en sÀkerhetsÄtgÀrd kan en symbols-fil innehÄlla metainformationsfÀltet Build-Depends-Package eller Build-Depends-Packages , varpÄ dpkg-shlibdeps hÀmtar vilken minsta version som behövs för paketet ur Build-Depends -fÀltet och anvÀnder denna version om den Àr högre Àn den minsta version som berÀknats genom att söka genom symbolerna.

Shlibs-filer

Shlibs-filer associerar ett bibliotek direkt till ett beroende (utan att se pÄ symbolerna). Det Àr dÀrför oftare starkare Àn vad som egentligen behövs, men mycket sÀkert och enkelt att hantera.

Beroenden för ett bibliotek slÄs upp pÄ flera platser. Den första filen som innehÄller information om det intressanta biblioteket anvÀnds:
debian/shlibs.local

Paketlokal överstyrande beroendeinformation för delade bibliotek.

/etc/dpkg/shlibs.override

Systemspecifik överstyrande beroendeinformation för 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 anvÀnds bara om biblioteket finns i paketets byggtrÀd. Filen shlibs i byggtrÀdet gÄr före shlibs-filer frÄn andra paket.

Utdata frĂ„n ” dpkg-query --control-path package shlibs”

Paketlokal överstyrande beroendeinformation för delade bibliotek. Filerna befinner sig i /var/lib/dpkg om inte överstyrt med --admindir .

/etc/dpkg/shlibs.default

Systemspecifik standardberoendeinformation för delade bibliotek.

De utökade beroendena anvÀnds sedan direkt (förutom om de filtrerats bort för att de identifierats som dubbletter, eller svagare Àn ett annat beroende).

FLAGGOR

dpkg-shlibdeps tolkar argument som inte Àr flaggor som namn pÄ körbara filer, precis som om de angivits som -e programfil .
-e
programfil

Ta med beroenden som Àr passar för delade bibliotek som krÀvs för programfil . Flaggan kan anvÀndas flera gÄnger.

-l katalog

LÀgg till katalog först i listan över kataloger som ska eftersökas efter privata delade bibliotek (sedan dpkg 1.17.0). Flaggan kan anvÀndas flera gÄnger.

Observera : AnvÀnd den hÀr flaggan istÀllet för att sÀtta LD_LIBRARY_PATH , eftersom miljövariabeln anvÀnds för att styra körtidslÀnkaren, och genom att utnyttja det för att ange sökvÀgen till delade bibliotek vid kompilering kan det uppstÄ problem, till exempel vid korskompilering.

-d beroendefÀlt

LÀgg till beroenden som ska lÀggas till till control-filens beroendefÀlt beroendefÀlt . (Beroenden för detta fÀlt lÀggs in i variabeln shlibs: beroendefÀlt .)

Flaggan -d beroendefÀlt gÀller för samtliga binÀrer efter flaggan, fram till nÀsta -d beroendefÀlt . StandardvÀrdet för beroendefÀlt Àr Depends .

Om samma katalogpost (eller en uppsÀttning alternativ) förekommer i mer Àn ett av de kÀnda beroendefÀltnamnen Pre-Depends , Depends , Recommends , Enhances eller Suggests sÄ kommer dpkg-shlibdeps att automatiskt ta bort beroendet frÄn samtliga fÀlt förutom det som anger de viktigaste beroendena.

--package= paket

Ange paketets namn.

NÀr detta anges kommer paketnamnet anvÀnds för att Àndra förvalen baserade pÄ binÀrpaketets metadata i debian/control .

Om paketet Àr Essential: yes Àr det förvalda beroendefÀltet Pre-Depends , annars Depends . Den förvalda pakettypen anges frÄn fÀltet Package-Type . Paketet lÀggs till uppsÀttningen över paket som utesluts av -x .

Flaggan stöds sedan dpkg 1.22.7.

-p variabelnamnsprefix

Inled substitueringsvariabler med variabelnamnsprefix : i stÀllet för shlibs: . PÄ samma sÀtt kommer befintliga substitueringsvariabler som inleds med variabelnamnsprefix : (i stÀllet för shlibs: ) att tas bort frÄn substitueringsvariabelfilen.

-O [ filnamn ]

Skriv substitueringsvariabelinstÀllningar pÄ standard ut (eller filnamn om angivet, sedan dpkg 1.17.2), i stÀllet för att försöka lÀgga till dem i substitueringsvariabelfilen (som standard debian/substvars ).

-t typ

Föredra information om delade bibliotek som mÀrkts för den givna pakettypen. Om det inte finns nÄgon mÀrkt information anvÀnds omÀrkt. Standardpakettypen Àr deb . Beroendeinformation för delade bibliotek mÀrks för en given typ genom att inleda det med namnet pÄ typen, ett kolon, samt blanktecken.

-L lokal-shlibs-fil

LÀs överstyrande beroendeinformation om delade bibliotek frÄn lokal-shlibs-fil i stÀllet för debian/shlibs.local .

-T substvars-fil

Skriv substitueringsvariabler i substvars-fil ; standard Àr debian/substvars .

-V

Aktiverar pratsamt lÀge (sedan dpkg 1.14.8). Flera meddelanden visas för att förklara vad dpkg-shlibs hÄller pÄ med.

-x paket

Uteslut paketet frÄn de genererade beroendena (dpkg 1.14.8). Flaggan Àr anvÀndbar för att undvika sjÀlvberoenden för paket som innehÄller ELF-binÀrer (exekverbara eller biblioteksinsticksprogram) som anvÀnder ett bibliotek som ligger i samma paket. Flaggan kan anvÀndas flera gÄnger för att utesluta flera paket.

-S paketbyggkatalog

Se först i paketbyggkatalog vid försök att hitta ett bibliotek (sedan dpkg 1.14.15). AnvÀndbart nÀr kÀllkodspaketet bygger flera varianter av samma bibliotek och du vill se till att du fÄr beroendet frÄn ett givet binÀrpaket. Flaggan kan anvÀndas flera gÄnger: kataloger söks efter i samma ordning före kataloger frÄn andra binÀrpaket.

-I paketbyggkatalog

Ignorera paketbyggkatalog vid sökning efter delade shlibs, symboler och delade biblioteksfiler (sedan dpkg 1.18.5). Flaggan kan anvÀndas flera gÄnger.

--ignore-missing-info

Misslyckas inte om det inte upptÀcks nÄgon beroendeinformation för ett delat bibliotek (sedan dpkg 1.14.8). Den hÀr flaggan rekommenderas inte, alla bibliotek bör tillhandahÄlla beroendeinformation (antingen med shlibs-filer eller med symbols-filer), Àven om de Ànnu inte anvÀnds av andra paket.

--warnings= vÀrde | strÀng [,...]

VÀljer den uppsÀttning varningar som kan matas ut av dpkg-shlibdeps (sedan dpkg 1.14.17).

Varningarna kan vÀljas för en kommaavdelad lista med symboliska namn (sedan dpkg 1.22.12) eller frÄn ett vÀrde som anger ett bitfÀlt för dessa varningar.
symbol-not-found (bit 0, vÀrde 1)

VĂ€ljer varningen ”symbolen sym , som anvĂ€nds av binĂ€r , hittades inte i nĂ„got av biblioteken”.

Aktiverad som förval.

avoidable-dependency (bit 1, vÀrde 2)

VĂ€ljer varningen ”paketet kunde undvika ett onödigt beroende”.

Aktiverad som förval.

useless-linkage (bit 2, vÀrde 4)

VĂ€ljer varningen ” binĂ€r borde inte vara lĂ€nkat mot bibliotek ”.

--admindir= kat

Ändra platsen för dpkg -databasen (sedan dpkg 1.14.0). Förvald plats Ă€r /var/lib/dpkg .

-? , --help

Visar hjÀlpskÀrm och avslutar.

--version

Visar version och avslutar.

MILJÖVARIABLER

DEB_HOST_ARCH

Anger vÀrdarkitekturen. Detta pÄverkar de objekt- och symbolfiler som söks efter och deras förvalda söknings-sökvÀgsnamn.

DPKG_COLORS

VÀljer fÀrglÀge (sedan dpkg 1.18.5). För nÀrvarande godtas följande vÀrden: auto (förval), always och never .

DPKG_NLS

Om satt, anvÀnds för att bestÀmma om lokalt sprÄkstöd ska aktiveras, Àven kÀnt som internationaliseringsstöd (eller i18n) (sedan dpkg 1.19.0). TillÄtna vÀrden Àr: 0 och 1 (förval).

DIAGNOSTIK

Varningar

Eftersom dpkg-shlibdeps analyserar mÀngden symboler som anvÀnds av varje binÀrfil i det genererade paketet, kan det i flera fall skriva ut varningsmeddelanden. De visar pÄ saker som kan förbÀttras i paketet. I de flesta fall gÀller förbÀttringarna direkt uppströmskÀllkoden. HÀr Àr de varningar du kan stöta pÄ, i fallande allvarlighetsgrad:
symbolen
sym , som anvÀnds av binÀr , hittades inte i nÄgot av
biblioteken.

Den omnÀmnda symbolen hittades inte i biblioteken som lÀnkas mot binÀren. BinÀr Àr antagligen ett bibliotek och mÄste lÀnkas mot ett annat bibliotek under byggproceduren (lÀnkarflaggan -l bibliotek ).

binÀr innehÄller en referens till symbolen sym som inte kan kopplas;
det Àr troligen ett insticksprogram

Den angivna symbolen hittades inte i biblioteken som lÀnkats mot binÀren. BinÀr Àr antagligen ett insticksprogram och symbolen tillhandahÄlls av programmet som lÀser in det. I teorin har inte insticksprogram nÄgot SONAME, men den hÀr binÀren har ett och dÀrmed kunde det inte tydligt identifieras som insticksprogram. Det faktum att binÀren befinner sig i en icke-offentlig katalog Àr dock en stark indikation pÄ att det inte Àr ett vanligt delat bibliotek. Om binÀren faktiskt Àr ett insticksprogram kan du ignorera varningen. Det Àr dock alltid möjligt att det Àr ett riktigt bibliotek och att program som lÀnker det anvÀnder en RPATH sÄ att den dynamiska lÀnkaren hittar det. Om sÄ Àr fallet Àr biblioteket trasigt och behöver fixas.

paketet kan undvika ett onödigt beroende om binÀr inte lÀnkades mot
bibliotek
(det anvÀnder inget av bibliotekets symboler)

Ingen av binÀrer na som lÀnkas mot bibliotek anvÀnder nÄgon av symbolerna som tillhandahÄlls av biblioteket. Genom att rÀtta alla binÀrer kan du undvika beroendet som gÀller detta bibliotek (sÄvida inte samma beroende Àven genereras av ett annat bibliotek som faktiskt anvÀnds).

paketet kunde undvika ett onödigt beroende om binÀrer inte lÀnkades mot
bibliotek
(de anvÀnder inga av bibliotekets symboler)

Exakt samma varning som ovan, men för flera binÀrer

binÀr borde inte vara lÀnkat mot bibliotek (det anvÀnder inget av
bibliotekets symboler)

BinÀr lÀnkar mot ett bibliotek den inte behöver. Det Àr inte ett problem, Men genom att inte lÀnka biblioteket mot binÀren kan man uppnÄ en mindre prestandaförbÀttring. Varningen kontrollerar samma information som den föregÄende, men gör det för varje binÀr istÀllet för att utföra kontrollen globalt pÄ alla analyserade binÀrer.

Fel

dpkg-shlibdeps kommer att misslyckas om det inte hittar ett öppet bibliotek som en av binÀrerna anvÀnder, eller om biblioteket saknar associerad beroendeinformation (antingen en shlibs-fil eller en symbols-fil). Ett öppet bibliotek har ett SONAME och Àr versionshanterad (libvadsomhelst.so. X ). Ett privat bibliotek (till exempel ett insticksprogram) bör inte ha nÄgot SONAME och behöver inte vara versionshanterat.
hittade inte biblioteket
bibliotek-sonamn som behövs för binÀr (dess
RPATH Àr "
rpath ")

BinÀr anvÀnder ett bibliotek som heter bibliotek-sonamn , men dpkg-shlibdeps kunde inte hitta biblioteket. dpkg-shlibdeps skapar en lista över kataloger det ser i pÄ följande sÀtt: katalogerna som beskrivs i RPATH i binÀren, kataloger som lagts till med flaggan -l , kataloger i miljövariabeln LD_LIBRARY_PATH , kors-multiarkitekturskataloger (t.ex /lib/arm64-linux-gnu, /usr/lib/arm64-linux-gnu), vanliga öppna kataloger (/lib, /usr/lib), kataloger listade i /etc/ld.so.conf, samt förÄldrade multilib-kataloger (/lib32, /usr/lib32, /lib64, /usr/lib64). DÀrefter ser det i motsvarande kataloger i byggtrÀdet för paketet som innehÄller binÀren som analyseras, i paketbyggtrÀdet som anges med kommandoradsflaggan -S , i andra pakets byggtrÀd som innehÄller en DEBIAN/shlibs-fil och slutligen i rotkatalogen. Om biblioteket inte hittas i nÄgon av dessa kataloger fÄr du det hÀr felmeddelandet.

Om biblioteket som inte hittades ligger i en privat katalog i samma paket bör du lÀgga till katalogen med -l . Om det finns i ett annat binÀrpaket som byggs bör du se till att shlibs- eller symbols-filen för paketet redan har skapats och att -l innehÄller korrekt katalog som det ocksÄ ligger i en privat katalog.

hittade ingen beroendeinformation för biblioteksfil (anvÀnd av binÀr ).

Biblioteket som behövs av binÀr hittades i biblioteksfil av dpkg-shlibdeps , men dpkg-shlibdeps kunde inte hitta nÄgon beroendeinformation för biblioteket. För att hitta beroendet har det försökt koppla biblioteket mot ett Debianpaket med hjÀlp av dpkg -S biblioteksfil . DÀrefter sÄg det i motsvarande shlibs- och symbols-filer i /var/lib/dpkg/info/, samt i de olika paketens byggtrÀd (debian/*/DEBIAN/).

Det hÀr felet kan orsakas av felaktiga eller saknade shlibs- eller symbols-filer i bibliotekets paket. Det kan Àven intrÀffa om biblioteket byggts i samma kÀllkodspaket och om shlibs-filen Ànnu inte har skapats (dÄ mÄste 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 istÀllet för /usr/lib/libssl.so.0.9.8) som inte associeras till nÄgot paket, dpkg-shlibdeps försöker gÄ runt detta genom att falla tillbaka pÄ ett kanoniskt namn (med realpath (3)), men det fungerar kanske inte alltid. Det Àr alltid bÀst att stÀda upp RPATH i binÀren för att undvika problem.

Om du anropar dpkg-shlibdeps i pratsamt lÀge ( -v ) kommer det ge mycket mer information om var det försökte hitta beroendeinformationen. Det kan vara anvÀndbart om du inte förstÄr varför du fÄr felmeddelandet.

SE ÄVEN

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

ÖVERSÄTTNING

Peter Krefting och Daniel Nylander.