Provided by: dpkg-dev_1.18.4ubuntu1.7_all bug

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  skall
       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, 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 -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 till listan över kataloger som  skall  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  skall  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]
              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ä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     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.

       --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ärde
              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  “symbol
              sym  used  by  binary  found in none of the libraries”, bit 1 (value=2) enables the
              warning “package could avoid a useless dependency” and bit 2 (value=4) enables  the
              warning  “binary should not be linked against library”. 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älpskärm och avslutar.

       --version
              Visar version och avslutar.

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 SONAMN, 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  SONAMN  och  är
       versionshanterad  (libvadsomhelst.so.X).  Ett   privat   bibliotek   (till   exempel   ett
       insticksprogram) bör inte ha något SONAMN 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 beskrivs i
              /etc/ld.so.conf, kataloger i  miljövariabeln  LD_LIBRARY_PATH,  och  vanliga  öppna
              kataloger  (/lib,  /usr/lib,  /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-shlibs(5), deb-symbols(5), dpkg-gensymbols(1).

ÖVERSÄTTNING

       Peter Krefting och Daniel Nylander.