Linux repositories inspector

dpkg-shlibdeps(1) - Svenska

1.19.0.5

dpkg-dev

Debian package development tools

dpkg-lang

Translations for package dpkg

dpkg

Debian package management system

NAMN

dpkg-shlibdeps - skapar substvar-beroenden f\(:or delade bibliotek

SYNOPS

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

BESKRIVNING

dpkg-shlibdeps ber\(:aknar beroenden mellan exekverbara filer som anges som argument och delade bibliotek. Beroendena l\(:aggs till i substitueringsvariabelfilen debian/substvars som variabler med namnen shlibs:beroendef\(:alt d\(:ar beroendeef\(:alt \(:ar ett beroendef\(:altsnamn. Alla andra variabler som b\(:orjar p\(oa shlibs: tas bort ur filen.
dpkg-shlibdeps kan generera beroendeinformation fr\(oan tv\(oa informationsk\(:allor, antingen filen symbols eller filen shlibs. F\(:or varje bin\(:arfil som analyseras av dpkg-shlibdeps tas en lista fram \(:over vilka bibliotek de \(:ar l\(:ankade mot. Programmet sl\(oar sedan upp varje bibliotek i filen symbols, eller i filen shlibs (om den f\(:orstn\(:amnda inte existerar eller om debian/shlibs.local inneh\(oaller ett relevant beroende). ). De b\(oada filerna skall tillhandah\(oallas av bibliotekspaketet och borde d\(:arf\(:or vara tillg\(:angliga som /var/lib/dpkg/info/paket.symbols eller /var/lib/dpkg/info/paket.shlibs. Paketnamnet identifieras i tv\(oa steg: biblioteksfilen lokaliseras p\(oa systemet (genom att sl\(oa upp i de kataloger ld.so skulle anv\(:ant), och d\(:arefter anv\(:ands dpkg -S biblioteksfil f\(:or att sl\(oa upp vilket paket biblioteket kommer fr\(oan.

Symbolfiler

Symbolfiler inneh\(oaller mer finkornig beroendeinformation genom att ange det minsta beroendet f\(:or varje symbol som exporteras av biblioteket. Skriptet f\(:ors\(:oker hitta de symboler som \(:ar associerade med ett bibliotek p\(oa f\(:oljande platser (den f\(:orsta tr\(:affen anv\(:ands):
debian/*/DEBIAN/symbols Information om delade bibliotek som skapats av den aktuella byggproceduren som ocks\(oa anropade dpkg-shlibdeps. De genereras av dpkg-gensymbols(1). De anv\(:ands endast om biblioteket finns i paketets byggr\(:ad. Filen symbols i det byggtr\(:adet g\(oar f\(:ore symbols-filer fr\(oan andra bin\(:arpaket.
/etc/dpkg/symbols/package.symbols.arkitektur
/etc/dpkg/symbols/paket.symbols \(:Overstyrningsfil f\(:or beroendeinformation f\(:or delade bibliotek, per system. arkitektur \(:ar det aktuella systemets arkitektur (h\(:amtas fr\(oan dpkg-architecture -qDEB_HOST_ARCH).
Utdata fr\(oan \(rqdpkg-query --control-path package symbols\(rq Paketlokal \(:overstyrande beroendeinformation f\(:or delade bibliotek. Filerna befinner sig i /var/lib/dpkg om inte \(:overstyrt med --admindir.
dpkg-shlibs kommer ih\(oag den (st\(:orsta) minimala version som beh\(:ovs av varje bibliotek n\(:ar den s\(:oker genom de symboler som anv\(:ands av alla bin\(:arfilerna. N\(:ar proceduren \(:ar avslutad kan den visa det minsta beroende som beh\(:ovs av alla bibliotek som anv\(:ands (s\(oa tillvida informationen i symbols-filerna \(:ar korrekt).
Som en s\(:akerhets\(oatg\(:ard kan en symbols-fil inneh\(oalla metainformationsf\(:altet Build-Depends-Package, varp\(oa dpkg-shlibdeps h\(:amtar vilken minsta version som beh\(:ovs f\(:or paketet ur Build-Depends-f\(:altet och anv\(:ander denna version om den \(:ar h\(:ogre \(:an den minsta version som ber\(:aknats genom att s\(:oka genom symbolerna.

Shlibs-filer

Shlibs-filer associerar ett bibliotek direkt till ett beroende (utan att se p\(oa symbolerna). Det \(:ar d\(:arf\(:or oftare starkare \(:an vad som egentligen beh\(:ovs, men mycket s\(:akert och enkelt att hantera.
Beroenden f\(:or ett bibliotek sl\(oas upp p\(oa flera platser. Den f\(:orsta filen som inneh\(oaller information om det intressanta biblioteket anv\(:ands:
debian/shlibs.local Paketlokal \(:overstyrande beroendeinformation f\(:or delade bibliotek.
/etc/dpkg/shlibs.override Systemspecifik \(:overstyrande beroendeinformation f\(:or delade bibliotek.
debian/*/DEBIAN/shlibs Information om delade bibliotek som skapats av den aktuella byggproceduren som ocks\(oa anropade dpkg-shlibdeps. De genereras av dpkg-gensymbols(1). De anv\(:ands bara om biblioteket finns i paketets byggtr\(:ad. Filen shlibs i byggtr\(:adet g\(oar f\(:ore shlibs-filer fr\(oan andra paket.
Utdata fr\(oan \(rqdpkg-query --control-path package shlibs\(rq Paketlokal \(:overstyrande beroendeinformation f\(:or delade bibliotek. Filerna befinner sig i /var/lib/dpkg om inte \(:overstyrt med --admindir.
/etc/dpkg/shlibs.default Systemspecifik standardberoendeinformation f\(:or delade bibliotek.
De ut\(:okade beroendena anv\(:ands sedan direkt (f\(:orutom om de filtrerats bort f\(:or att de identifierats som dubbletter, eller svagare \(:an ett annat beroende).

FLAGGOR

dpkg-shlibdeps tolkar argument som inte \(:ar flaggor som namn p\(oa k\(:orbara filer, precis som om de angivits som -eprogramfil.
-eprogramfil
Ta med beroenden som \(:ar passar f\(:or delade bibliotek som kr\(:avs f\(:or programfil. Flaggan kan anv\(:andas flera g\(oanger.
-lkatalog
Prepend directory to the list of directories to search for private shared libraries (since dpkg 1.17.0). This option can be used multiple times.
Observera: Anv\(:and den h\(:ar flaggan ist\(:allet f\(:or att s\(:atta LD_LIBRARY_PATH, eftersom milj\(:ovariabeln anv\(:ands f\(:or att styra k\(:ortidsl\(:ankaren, och genom att utnyttja det f\(:or att ange s\(:okv\(:agen till delade bibliotek vid kompilering kan det uppst\(oa problem, till exempel vid korskompilering.
-dberoendef\(:alt
L\(:agg till beroenden som skall l\(:aggas till till control-filens beroendef\(:alt beroendef\(:alt. (Beroenden f\(:or detta f\(:alt l\(:aggs in i variabeln shlibs:beroendef\(:alt.)
Flaggan -dberoendef\(:alt g\(:aller f\(:or samtliga bin\(:arer efter flaggan, fram till n\(:asta -dberoendef\(:alt. Standardv\(:ardet f\(:or beroendef\(:alt \(:ar Depends.
Om samma katalogpost (eller en upps\(:attning alternativ) f\(:orekommer i mer \(:an ett av de k\(:anda beroendef\(:altnamnen Pre-Depends, Depends, Recommends, Enhances eller Suggests s\(oa kommer dpkg-shlibdeps att automatiskt ta bort beroendet fr\(oan samtliga f\(:alt f\(:orutom det som anger de viktigaste beroendena.
-pvariabelnamnsprefix
Inled substitueringsvariabler med variabelnamnsprefix: i st\(:allet f\(:or shlibs:. P\(oa samma s\(:att kommer befintliga substitueringsvariabler som inleds med variabelnamnsprefix: (i st\(:allet f\(:or shlibs:) att tas bort fr\(oan substitueringsvariabelfilen.
-O[filnamn]
Print substitution variable settings to standard output (or filename if specified, since dpkg 1.17.2), rather than being added to the substitution variables file (debian/substvars by default).
-ttyp Prefer shared library dependency information tagged for the given package type. If no tagged information is available, falls back to untagged information. The default package type is deb. Shared library dependency information is tagged for a given type by prefixing it with the name of the type, a colon, and whitespace.
-Llokal-shlibs-fil
L\(:as \(:overstyrande beroendeinformation om delade bibliotek fr\(oan lokal-shlibs-fil i st\(:allet f\(:or debian/shlibs.local.
-Tsubstvars-fil
Skriv substitueringsvariabler i substvars-fil; standard \(:ar debian/substvars.
-V Enable verbose mode (since dpkg 1.14.8). Numerous messages are displayed to explain what dpkg-shlibdeps does.
-xpaket Exclude the package from the generated dependencies (since dpkg 1.14.8). This is useful to avoid self-dependencies for packages which provide ELF binaries (executables or library plugins) using a library contained in the same package. This option can be used multiple times to exclude several packages.
-Spaketbyggkatalog
Look into package-build-dir first when trying to find a library (since dpkg 1.14.15). This is useful when the source package builds multiple flavors of the same library and you want to ensure that you get the dependency from a given binary package. You can use this option multiple times: directories will be tried in the same order before directories of other binary packages.
-Ipackage-build-dir
Ignore package-build-dir when looking for shlibs, symbols, and shared library files (since dpkg 1.18.5). You can use this option multiple times.
--ignore-missing-info
Do not fail if dependency information can’t be found for a shared library (since dpkg 1.14.8). Usage of this option is discouraged, all libraries should provide dependency information (either with shlibs files, or with symbols files) even if they are not yet used by other packages.
--warnings=v\(:arde
value is a bit field defining the set of warnings that can be emitted by dpkg-shlibdeps (since dpkg 1.14.17). Bit 0 (value=1) enables the warning \(lqsymbol sym used by binary found in none of the libraries\(rq, bit 1 (value=2) enables the warning \(lqpackage could avoid a useless dependency\(rq and bit 2 (value=4) enables the warning \(lqbinary should not be linked against library\(rq. The default value is 3: the first two warnings are active by default, the last one is not. Set value to 7 if you want all warnings to be active.
--admindir=kat
Change the location of the dpkg database (since dpkg 1.14.0). The default location is /var/lib/dpkg.
-?, --help Visar hj\(:alpsk\(:arm och avslutar.
--version
Visar version och avslutar.

DIAGNOSTIK

Varningar

Eftersom dpkg-shlibdeps analyserar m\(:angden symboler som anv\(:ands av varje bin\(:arfil i det genererade paketet, kan det i flera fall skriva ut varningsmeddelanden. De visar p\(oa saker som kan f\(:orb\(:attras i paketet. I de flesta fall g\(:aller f\(:orb\(:attringarna direkt uppstr\(:omsk\(:allkoden. H\(:ar \(:ar de varningar du kan st\(:ota p\(oa, i fallande allvarlighetsgrad:
symbolen sym, som anv\(:ands av bin\(:ar, hittades inte i n\(oagot av biblioteken.
Den omn\(:amnda symbolen hittades inte i biblioteken som l\(:ankas mot bin\(:aren. Bin\(:ar \(:ar antagligen ett bibliotek och m\(oaste l\(:ankas mot ett annat bibliotek under byggproceduren (l\(:ankarflaggan -lbibliotek).
bin\(:ar inneh\(oaller en referens till symbolen sym som inte kan kopplas; det \(:ar troligen ett insticksprogram
Den angivna symbolen hittades inte i biblioteken som l\(:ankats mot bin\(:aren. Bin\(:ar \(:ar antagligen ett insticksprogram och symbolen tillhandah\(oalls av programmet som l\(:aser in det. I teorin har inte insticksprogram n\(oagot SONAMN, men den h\(:ar bin\(:aren har ett och d\(:armed kunde det inte tydligt identifieras som insticksprogram. Det faktum att bin\(:aren befinner sig i en icke-offentlig katalog \(:ar dock en stark indikation p\(oa att det inte \(:ar ett vanligt delat bibliotek. Om bin\(:aren faktiskt \(:ar ett insticksprogram kan du ignorera varningen. Det \(:ar dock alltid m\(:ojligt att det \(:ar ett riktigt bibliotek och att program som l\(:anker det anv\(:ander en RPATH s\(oa att den dynamiska l\(:ankaren hittar det. Om s\(oa \(:ar fallet \(:ar biblioteket trasigt och beh\(:over fixas.
paketet kan undvika ett on\(:odigt beroende om bin\(:ar inte l\(:ankades mot bibliotek (det anv\(:ander inget av bibliotekets symboler)
Ingen av bin\(:arerna som l\(:ankas mot bibliotek anv\(:ander n\(oagon av symbolerna som tillhandah\(oalls av biblioteket. Genom att r\(:atta alla bin\(:arer kan du undvika beroendet som g\(:aller detta bibliotek (s\(oavida inte samma beroende \(:aven genereras av ett annat bibliotek som faktiskt anv\(:ands).
package could avoid a useless dependency if binaries were not linked against library (they use none of the library’s symbols)
Exakt samma varning som ovan, men f\(:or flera bin\(:arer
bin\(:ar borde inte vara l\(:ankat mot bibliotek (det anv\(:ander inget av bibliotekets symboler)
The binary is linked to a library that it doesn’t need. It’s not a problem but some small performance improvements in binary load time can be obtained by not linking this library to this binary. This warning checks the same information as the previous one but does it for each binary instead of doing the check globally on all binaries analyzed.

Fel

dpkg-shlibdeps kommer att misslyckas om det inte hittar ett \(:oppet bibliotek som en av bin\(:arerna anv\(:ander, 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) b\(:or inte ha n\(oagot SONAMN och beh\(:over inte vara versionshanterat.
hittade inte biblioteket bibliotek-sonamn som beh\(:ovs f\(:or bin\(:ar (dess RPATH \(:ar "rpath")
The binary uses a library called library-soname but dpkg-shlibdeps has been unable to find the library. dpkg-shlibdeps creates a list of directories to check as following: directories listed in the RPATH of the binary, directories added by the -l option, directories listed in the LD_LIBRARY_PATH environment variable, cross multiarch directories (ex. /lib/arm64-linux-gnu, /usr/lib/arm64-linux-gnu), standard public directories (/lib, /usr/lib), directories listed in /etc/ld.so.conf, and obsolete multilib directories (/lib32, /usr/lib32, /lib64, /usr/lib64). Then it checks those directories in the package’s build tree of the binary being analyzed, in the packages’ build trees indicated with the -S command-line option, in other packages’ build trees that contains a DEBIAN/shlibs or DEBIAN/symbols file and finally in the root directory. If the library is not found in any of those directories, then you get this error.
Om biblioteket som inte hittades ligger i en privat katalog i samma paket b\(:or du l\(:agga till katalogen med -l. Om det finns i ett annat bin\(:arpaket som byggs b\(:or du se till att shlibs- eller symbols-filen f\(:or paketet redan har skapats och att -l inneh\(oaller korrekt katalog som det ocks\(oa ligger i en privat katalog.
hittade ingen beroendeinformation f\(:or biblioteksfil (anv\(:and av bin\(:ar).
The library needed by binary has been found by dpkg-shlibdeps in library-file but dpkg-shlibdeps has been unable to find any dependency information for that library. To find out the dependency, it has tried to map the library to a Debian package with the help of dpkg -S library-file. Then it checked the corresponding shlibs and symbols files in /var/lib/dpkg/info/, and in the various package’s build trees (debian/*/DEBIAN/).
Det h\(:ar felet kan orsakas av felaktiga eller saknade shlibs- eller symbols-filer i bibliotekets paket. Det kan \(:aven intr\(:affa om biblioteket byggts i samma k\(:allkodspaket och om shlibs-filen \(:annu inte har skapats (d\(oa m\(oaste du fixa debian/rules s\(oa att det skapar shlibs-filen innan det anropar dpkg-shlibdeps). Felaktig RPATH kan ocks\(oa leda till att biblioteket hittas under ett icke-kanoniskt namn (till exempel: /usr/lib/openoffice.org/../lib/libssl.so.9.8 ist\(:allet f\(:or /usr/lib/libssl.so.0.9.8) som inte associeras till n\(oagot paket, dpkg-shlibdeps f\(:ors\(:oker g\(oa runt detta genom att falla tillbaka p\(oa ett kanoniskt namn (med realpath(3)), men det fungerar kanske inte alltid. Det \(:ar alltid b\(:ast att st\(:ada upp RPATH i bin\(:aren f\(:or att undvika problem.
Om du anropar dpkg-shlibdeps i pratsamt l\(:age (-v) kommer det ge mycket mer information om var det f\(:ors\(:okte hitta beroendeinformationen. Det kan vara anv\(:andbart om du inte f\(:orst\(oar varf\(:or du f\(oar felmeddelandet.

\(:OVERS\(:ATTNING

Peter Krefting och Daniel Nylander.
⇧ Top