Provided by: dpkg-dev_1.22.6ubuntu6.5_all 

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).
As a safe-guard measure, a symbols file can provide a Build-Depends-Package or Build-Depends-Packages
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-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 -eprogramfil.
-eprogramfil
Ta med beroenden som är passar för delade bibliotek som krävs för programfil. Flaggan kan användas
flera gånger.
-lkatalog
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.
-dberoendefä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 -dberoendefält gäller för samtliga binärer efter flaggan, fram till nästa -dberoendefä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.
-pvariabelnamnsprefix
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).
-ttyp
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.
-Llokal-shlibs-fil
Läs överstyrande beroendeinformation om delade bibliotek från lokal-shlibs-fil i stället för
debian/shlibs.local.
-Tsubstvars-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.
-xpaket
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.
-Spaketbyggkatalog
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.
-Ipaketbyggkatalog
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
Värde är ett bitfält som anger de varningar som kan ges av dpkg-shlibdeps (sedan dpkg 1.14.17). Bit 0
(värde=1) aktiverar varningen ”symbolen sym, som används av binär, hittades inte i något av
biblioteken”, bit 1 (värde=2) aktiverar varningen ”paketet kunde undvika ett onödigt beroende” och
bit 2 (värde=4) aktiverar varningen ”binär borde inte vara länkat mot bibliotek”. Standard för värde
är 3: de första två varningarna är aktiva som standard, men inte den sista. Sätt värde till 7 om du
vill att alla varningar ska vara aktiva.
--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
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 -lbibliotek).
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ärerna 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.
1.22.6 2025-09-18 dpkg-shlibdeps(1)