Provided by: dpkg-dev_1.15.4ubuntu2_all bug

NAMN

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

SYNOPS

       dpkg-shlibdeps [flaggor] programfil|-eprogramfil [flaggor]

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:beroendeflt där beroendeeflt ä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).

       adminkat/info/paket.symbols
              Paketlokal   överstyrande   beroendeinformation    för    delade
              bibliotek. Normalt är adminkat /var/lib/dpkg.

       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.

       adminkat/info/paket.shlibs
              Paketlokal   överstyrande   beroendeinformation    för    delade
              bibliotek. Normalt är adminkat /var/lib/dpkg.

       /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.

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

              Flaggan  -dberoendeflt  gäller  för  samtliga   binärer   efter
              flaggan,  fram  till  nästa  -dberoendeflt.  Standardvärdet för
              beroendeflt ä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     Skriv  substitueringsvariabelinställningar  på  standard  ut,  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.  Flera  meddelanden  visas  för   att
              förklara vad dpkg-shlibs håller på med.

       -xpaket
              Uteslut  paketet  från  de  genererade  beroendena.  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.
              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  inte  användas  flera  gånger:
              kataloger söks efter i samma ordning före kataloger  från  andra
              binärpaket.

       --ignore-missing-info
              Misslyckas  inte  om det inte upptäcks någon beroendeinformation
              för ett  delat  bibliotek.  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=vrde
              Vrde är ett bitfält som anger  de  varningar  som  kan  ges  av
              dpkg-shlibdeps.  Bit  0  (värde=1) aktiverar varningen "symbolen
              sym,  som  används  av  binr,  hittades   inte   i   något   av
              biblioteken",  bit 1 (värde=2) aktiverar varningen "beroendet på
              bibliotekt  kunde  undvikas"  och  bit  2  (värde=4)   aktiverar
              varningen "binr borde inte vara länkat mot bibliotek". Standard
              för vrde  är  3:  de  första  två  varningarna  är  aktiva  som
              standard,  men  inte den sista. Sätt vrde till 7 om du vill att
              alla varningar skall vara aktiva.

       --admindir=kat
              Ändra platsen för dpkg-databasen. Förval är /var/lib/dpkg.

       -h, --help
              Visar hjälpskärm och avslutar.

       --version
              Visar version och avslutar.

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  binr,  hittades  inte  i  något   av
       biblioteken.
              Den omnämnda symbolen hittades inte i biblioteken som länkas mot
              binären.  Binr är antagligen ett bibliotek och måste länkas mot
              ett  annat   bibliotek   under   byggproceduren   (länkarflaggan
              -lbibliotek).

       binr  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. Binr ä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.

       Beroendet  bibliotek  kunde  undvikas  om  inte  binrer  meningslöst
       länkades mot det (de använder inga av dess symboler).
              Ingen av binrerna 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).

       binr  borde  inte  vara  länkat  mot  bibliotek  (inga  av  symbolerna
       används).
              Binr 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.

FELMEDDELANDEN

       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 binr (dess
       RPATH är "rpath")
              Binr  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  i  LD_LIBRARY_PATH.  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  LD_LIBRARY_PATH  innehåller  korrekt  katalog som det också
              ligger i en privat katalog.

       hittade ingen beroendeinformation för biblioteksfil (använd av  binr).
              Biblioteket som behövs av  binr  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/gcc/i486-linux-gnu/4.2.3/../../../../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).

FÖRFATTARE

       Upphovsrättsskyddat © 1995-1996 Ian Jackson
       Upphovsrättsskyddat © 2000 Wichert Akkerman
       Upphovsrättsskyddat © 2006 Frank Lichtenheld
       Upphovsrättsskyddat © 2007-2008 Raphaël Hertzog

       Detta är fri programvara; se GNU General Public License version 2 eller
       senare för kopieringsvillkor. Det finns INGEN GARANTI.

ÖVERSÄTTNING

       Peter Krefting och Daniel Nylander.