Provided by: dpkg-dev_1.19.0.5ubuntu2.4_all bug

NAAM

       dpkg-shlibdeps   -   genereert  substitutievariabelen  over  afhankelijkheidsrelaties  tot
       gedeelde bibliotheken

OVERZICHT

       dpkg-shlibdeps [optie...] [-e]programma [optie...]

BESCHRIJVING

       dpkg-shlibdeps berekent de afhankelijkheidsrelaties  tot  gedeelde  bibliotheken  voor  de
       programma's  die  genoemd  worden  in  zijn  argumenten. De afhankelijkheden worden in het
       bestand  met   substitutievariabelen   debian/substvars   toegevoegd   als   variabelenaam
       shlibs:afhankelijkheidsveld,    waarbij    afhankelijkheidsveld    de    naam    van   een
       afhankelijkheidsveld is. Eventuele andere variabelen die met shlibs: beginnen  worden  uit
       het bestand verwijderd.

       dpkg-shlibdeps  heeft  twee  mogelijke  informatiebronnen om afhankelijkheidsinformatie te
       genereren, ofwel symbols-bestanden ofwel shlibs-bestanden. Voor  elke  binair  pakket  dat
       dpkg-shlibdeps  analyseert, zoekt het de lijst van bibliotheken op waarmee het gelinkt is.
       Vervolgens  zoekt  het  voor  iedere  bibliotheek  ofwel  het   symbols-bestand   of   het
       shlibs-bestand  (indien het eerste niet bestaat of indien debian/shlibs.local de relevante
       afhankelijkheidsinformatie bevat) op. Beide bestanden  worden  verondersteld  geleverd  te
       worden   door   het   bibliotheekpakket   en   zouden   dus  te  vinden  moeten  zijn  als
       /var/lib/dpkg/info/pakket.symbols of /var/lib/dpkg/info/pakket.shlibs.  De  naam  van  het
       pakket  wordt in twee stappen gevonden: het bibliotheekbestand opzoeken op het systeem (er
       wordt in dezelfde mappen gezocht als die  welke  ld.so  zou  gebruiken)  en  dan  dpkg  -S
       bibliotheekbestand gebruiken om het pakket op te zoeken dat de bibliotheek levert.

   Symbolenbestanden
       Symbolenbestanden  bevatten  fijnmazige afhankelijkheidsinformatie door voor ieder symbool
       dat de bibliotheek exporteert, de minimumvereiste op  te  geven.  Het  script  tracht  een
       symbolenbestand dat bij een bibliotheekpakket hoort op de volgende plaatsen te vinden (het
       eerste dat gevonden wordt, wordt gebruikt):

       debian/*/DEBIAN/symbols
              Informatie over  gedeelde  bibliotheken  die  gegenereerd  werd  door  het  huidige
              bouwproces   dat   ook   dpkg-shlibdeps   aanriep.   Zij  worden  gegenereerd  door
              dpkg-gensymbols(1). Ze worden enkel gebruikt als de bibliotheek aangetroffen  wordt
              in  de  bouwboom van een pakket. Het bestand symbols in die bouwboom heeft voorrang
              op symbolenbestanden van andere binaire pakketten.

       /etc/dpkg/symbols/pakket.symbols.arch

       /etc/dpkg/symbols/pakket.symbols
              Systeemspecifieke vervangingsinformatie over afhankelijkheidsrelaties tot  gedeelde
              bibliotheken.  arch  is  de  architectuur  van  het huidige systeem (verkregen door
              dpkg-architecture -qDEB_HOST_ARCH).

       Uitvoer van “dpkg-query --control-path pakket symbols”
              Door een pakket verstrekte informatie over  afhankelijkheidsrelaties  tot  gedeelde
              bibliotheken.  Tenzij anders bepaald door --admindir, zijn deze bestanden te vinden
              in /var/lib/dpkg.

       Tijdens het doorzoeken  van  de  door  al  de  programma's  gebruikte  symbolen,  onthoudt
       dpkg-shlibdeps van elke bibliotheek de (hoogste) minimale versie die nodig is. Op het eind
       van het proces is het in staat voor elke gebruikte bibliotheek uit  te  schrijven  wat  de
       minimale  vereiste  is  (in de veronderstelling dat de informatie uit de symbols-bestanden
       accuraat is).

       Bij wijze van beschermende  maatregel  kan  een  symbols-bestand  een  meta-informatieveld
       Build-Depends-Pakket  bevatten. Dan zal dpkg-shlibdeps de door het corresponderende pakket
       vereiste minimale versie halen uit het veld Build-Depends en deze versie gebruiken als  ze
       hoger is dan de minimale versie die berekend werd via het doorzoeken van symbolen.

   Shlibs-bestanden
       Shlibs-bestanden  koppelen  rechtstreeks  een bibliotheek aan een vereiste (zonder naar de
       symbolen te kijken). Dit is dus dikwijls strikter dan  echt  nodig,  maar  erg  veilig  en
       gemakkelijk te hanteren.

       De   afhankelijkheidsrelaties   tot  een  bibliotheek  worden  op  verschillende  plaatsen
       opgezocht. Het eerste bestand dat informatie biedt over de bibliotheek in  kwestie,  wordt
       gebruikt:

       debian/shlibs.local
              Pakket-eigen  vervangende  informatie  over  afhankelijkheidsrelaties  tot gedeelde
              bibliotheken.

       /etc/dpkg/shlibs.override
              Systeemspecifieke vervangende informatie over afhankelijkheidsrelaties tot gedeelde
              bibliotheken.

       debian/*/DEBIAN/shlibs
              Informatie  over  gedeelde  bibliotheken  die  gegenereerd  werd  door  het huidige
              bouwproces  dat  ook  dpkg-shlibdeps  inriep.  Ze  wordt  enkel  gebruikt  als   de
              bibliotheek aangetroffen wordt in de bouwboom van het pakket. Het shlibs-bestand in
              die bouwboom heeft voorrang op shlibs-bestanden van andere binaire pakketten.

       Uitvoer van “dpkg-query --control-path pakket shlibs”
              Door een pakket verstrekte informatie over  afhankelijkheidsrelaties  tot  gedeelde
              bibliotheken.  Tenzij anders bepaald door --admindir, zijn deze bestanden te vinden
              in /var/lib/dpkg.

       /etc/dpkg/shlibs.default
              Systeemspecifieke standaardinformatie over  afhankelijkheidsrelaties  tot  gedeelde
              bibliotheken.

       De   uitgelichte  afhankelijkheden  worden  dan  rechtstreeks  gebruikt  (behalve  als  ze
       uitgefilterd werden omdat ze als duplicaten onderkend werden of als zwakker dan een andere
       afhankelijkheid).

OPTIES

       Argumenten  die geen opties zijn, worden door dpkg-shlibdeps geïnterpreteerd als namen van
       programma's, net alsof ze opgegeven werden als -eprogramma.

       -eprogramma
              Voeg de gepaste afhankelijkheidsrelaties tot gedeelde bibliotheken  toe  die  nodig
              zijn voor programma. Deze optie kan meermaals gebruikt worden.

       -lmap  Voeg  map  vooraan  toe  aan  de lijst van mappen waarin naar particuliere gedeelde
              bibliotheken gezocht moet worden (sinds dpkg  1.17.0).  Deze  optie  kan  meermaals
              gebruikt worden.

              Opmerking:  gebruik  deze  optie  in  plaats  van  LD_LIBRARY_PATH  in  te stellen,
              aangezien  die  omgevingsvariabele  gebruikt  wordt  om  de   linker   tijdens   de
              programma-uitvoering aan te sturen. Daarvan misbruik maken om de paden van gedeelde
              bibliotheken in te stellen tijdens het bouwen van het programma, kan  problematisch
              zijn, bijvoorbeeld bij het cross-compileren.

       -dafhankelijkheidsveld
              Geef   afhankelijkheidsinformatie   op   die   toegevoegd   moet   worden  aan  het
              afhankelijkheidsveld   afhankelijkheidsveld   van   het   bestand   control.    (De
              afhankelijkheidsinformatie    voor    dit    veld    wordt    in    de    variabele
              shlibs:dependency-field geplaatst.)

              De optie -dafhankelijkheidsveld heeft uitwerking voor alle programma's na de  optie
              tot  aan het volgende -dafhankelijkheidsveld. Het standaard afhankelijkheidsveld is
              Depends.

              Indien hetzelfde afhankelijkheidsitem (of set van alternatieven) te  vinden  is  in
              meer  dan  een  van  de  herkende  namen  voor  afhankelijkheidsvelden Pre-Depends,
              Depends, Recommends, Enhances of Suggests, zal  dpkg-shlibdeps  de  afhankelijkheid
              automatisch  uit alle velden verwijderen, behalve uit het veld dat de belangrijkste
              afhankelijkheid vertegenwoordigt.

       -pvariabelenaamprefix
              Begin substitutievariabelen met variabelenaamprefix: in plaats van met shlibs:.  Op
              dezelfde   wijze   worden   eventuele   substitutievariabelen   die   beginnen  met
              variabelenaamprefix: (in plaats van met shlibs:), verwijderd uit  het  bestand  met
              substitutievariabelen.

       -O[bestandsnaam]
              Geef   de   instellingen   in   verband   met   substitutievariabelen  weer  op  de
              standaarduitvoer (of in bestandsnaam als die opgegeven werd;  sinds  dpkg  1.17.2),
              eerder dan ze toe te voegen aan het bestand met substitutievariabelen (standaard is
              dat debian/substvars).

       -ttype Geef  de  voorrang  aan  informatie  over  afhankelijkheidsrelaties  tot   gedeelde
              bibliotheken  die gemarkeerd werd als geldend voor het opgegeven pakkettype. Indien
              er  geen  gemarkeerde   informatie   te   vinden   is,   wordt   teruggevallen   op
              niet-gemarkeerde  informatie.  Het  standaardpakkettype  is  deb.  Informatie  over
              afhankelijkheidsrelaties tot gedeelde bibliotheken  wordt  gemarkeerd  als  geldend
              voor  een  bepaald  type door ze te laten voorafgaan door de naam van dat type, een
              dubbele punt en witruimte.

       -Llokaal-shlibs-bestand
              Lees vervangende informatie over afhankelijkheidsrelaties tot gedeelde bibliotheken
              uit lokaal-shlibs-bestand in plaats van uit debian/shlibs.local.

       -Tsubstvars-bestand
              Schrijf   substitutievariabelen   neer   in  substvars-bestand.  Standaard  is  dat
              debian/substvars.

       -v     Schakel de breedsprakige modus in (sinds dpkg 1.14.8).  Talrijke  berichten  worden
              weergegeven om uit te leggen wat dpkg-shlibdeps doet.

       -xpakket
              Sluit  het pakket uit van de gegenereerde afhankelijkheden (sinds dpkg 1.14.8). Dit
              is nuttig om een afhankelijkheid van  zichzelf  te  vermijden  voor  pakketten  die
              binaire    bestanden    van    het    type    ELF    aanleveren   (programma's   of
              bibliotheekuitbreidingen), waarbij die binaire  bestanden  gebruik  maken  van  een
              bibliotheek die in hetzelfde pakket te vinden is. Deze optie kan meermaals gebruikt
              worden om meerdere pakketten uit te sluiten.

       -Spakket-bouwmap
              Zoek eerst in pakket-bouwmap bij  het  zoeken  naar  een  bibliotheek  (sinds  dpkg
              1.14.15).  Dit  is  nuttig  als  het broncodepakket meerdere varianten van dezelfde
              bibliotheek bouwt en u zeker wilt zijn dat u de  afhankelijkheden  krijgt  van  een
              specifiek binair pakket. U kunt deze optie meermaals gebruiken: mappen zullen in de
              opgegeven volgorde doorzocht worden vooraleer gezocht wordt in de mappen van andere
              binaire pakketten.

       -Ipakketbouwmap
              Sla  pakketbouwmap  over  bij  het  zoeken  naar  shlibs-,  symbolen-  en  gedeelde
              bibliotheek-bestanden (sinds dpkg 1.18.5). U kunt deze optie meermaals gebruiken.

       --ignore-missing-info
              Beschouw het niet als  een  mislukking  als  voor  een  gedeelde  bibliotheek  geen
              afhankelijkheidsinformatie  gevonden  kan  worden  (sinds  dpkg  1.14.8). Het wordt
              afgeraden   om   deze   optie    te    gebruiken.    Alle    bibliotheken    zouden
              afhankelijkheidsinformatie  moeten  verschaffen  (ofwel via shlibs-bestanden of via
              symbolenbestanden), zelfs als die nog niet door andere pakketten gebruikt wordt.

       --warnings=waarde
              waarde is een bit-veld dat aangeeft welke  set  waarschuwingen  dpkg-shlibdeps  kan
              geven (sinds dpkg 1.14.17). Bit 0 (waarde=1) activeert de waarschuwing “symbool sym
              dat  door  binair-bestand  gebruikt  wordt,  werd  in   geen   enkele   bibliotheek
              aangetroffen”, bit 1 (waarde=2) activeert de waarschuwing “pakket zou een nutteloze
              afhankelijkheid kunnen vermijden” en bit 2  (waarde=4)  activeert  de  waarschuwing
              “binair-bestand   zou   niet   gelinkt   moeten   worden   met   bibliotheek”.   De
              standaard-waarde is 3: standaard zijn de eerste twee waarschuwingen geactiveerd, de
              laatste  niet.  Stel  de  waarde  in  op  7  indien  u wilt dat alle waarschuwingen
              geactiveerd worden.

       --admindir=map
              Geef een andere locatie op voor de  database  van  dpkg  (sinds  dpkg  1.14.0).  De
              standaardlocatie is /var/lib/dpkg.

       -?, --help
              Toon info over het gebruik en sluit af.

       --version
              Toon de versie en sluit af.

DIAGNOSTIEK

   Waarschuwingen
       Aangezien  dpkg-shlibdeps  de  set  symbolen analyseert die gebruikt wordt door elk binair
       bestand uit  het  gegeneerde  pakket,  is  het  in  staat  om  in  verschillende  gevallen
       waarschuwingen  te  geven.  Zij  geven u informatie over zaken die in het pakket verbeterd
       kunnen worden. In de meeste gevallen hebben die verbeteringen rechtstreeks  betrekking  op
       de broncode van de toeleveraar (upstream). In aflopende volgorde van belangrijkheid volgen
       hierna de waarschuwingen die u kunt krijgen:

       symbool sym gebruikt door binair-bestand in geen enkele bibliotheek gevonden.
              Het aangegeven symbool werd niet aangetroffen in de bibliotheken die met het binair
              bestand  gelinkt werden. Hoogstwaarschijnlijk is binair-bestand een bibliotheek die
              gelinkt moet worden met  een  andere  bibliotheek  tijdens  het  bouwproces  (optie
              -lbibliotheek van de linker).

       Binair  bestand  bevat  een  onoplosbare  verwijzing naar symbool sym: wellicht is het een
       uitbreiding
              Het aangegeven symbool werd niet aangetroffen in de bibliotheken die  gelinkt  zijn
              met  het binair bestand. Hoogstwaarschijnlijk is het binair-bestand een uitbreiding
              (plug-in) en wordt het symbool ter beschikking gesteld door het programma dat  deze
              uitbreiding  laadt.  In  theorie heeft een uitbreiding geen SONAME, maar dit binair
              bestand heeft er wel een  en  in  die  hoedanigheid  kon  het  niet  met  zekerheid
              geïdentificeerd  worden  als  een  uitbreiding.  Het  feit  evenwel dat het binaire
              bestand opgeslagen wordt in een niet-publieke map is een sterke aanwijzing dat  het
              niet  om een gewone gedeelde bibliotheek gaat. Indien het binaire bestand effectief
              een uitbreiding is, mag u deze waarschuwing negeren. Maar  er  bestaat  altijd  een
              kans  dat  het  om  een  echte bibliotheek gaat en dat programma's die ermee linken
              gebruik manken van een RPATH waardoor de dynamische lader ze  kan  vinden.  In  dat
              geval gaat het om een defecte bibliotheek en moet het defect gerepareerd worden.

       Het  pakket  zou een nutteloze afhankelijkheid kunnen vermijden indien binair-bestand niet
       gelinkt was met bibliotheek (het gebruikt geen enkel symbool van de bibliotheek)
              Geen enkel van de binaire-bestanden die gelinkt werden met bibliotheek gebruikt een
              symbool  dat door de bibliotheek aangeleverd wordt. Door al de binaire bestanden te
              repareren zou u de afhankelijkheidsrelatie die verband houdt met deze  bibliotheek,
              kunnen  vermijden  (tenzij  dezelfde afhankelijkheid ook gegenereerd wordt door een
              andere bibliotheek die echt gebruikt wordt).

       Het pakket zou een nutteloze vereiste kunnen vermijden  indien  programma's  niet  gelinkt
       waren met bibliotheek (ze gebruiken geen enkel symbool van de bibliotheek)
              Identiek dezelfde waarschuwing als hierboven, maar dan voor meerdere programma's.

       Binair-bestand  zou  niet  gelinkt  moeten worden met bibliotheek (het gebruikt geen enkel
       symbool van de bibliotheek)
              Het binair-bestand is gelinkt met een bibliotheek die het niet nodig heeft. Dit  is
              geen probleem, maar er kan een kleine prestatiewinst bekomen worden wat de laadtijd
              van het binair bestand betreft, door deze bibliotheek niet met dit  binair  bestand
              te  koppelen.  Deze waarschuwing controleert dezelfde informatie als de voorgaande,
              maar doet dit voor elk binair bestand in plaats van de toets globaal uit te  voeren
              voor alle geanalyseerde binaire bestanden.

   Fouten
       dpkg-shlibdeps  zal mislukken als het een publieke bibliotheek die door een binair bestand
       gebruikt wordt, niet kan vinden of indien er geen  afhankelijkheidsinformatie  (ofwel  een
       shlibs-bestand  of  een  symbolenbestand)  aan  die bibliotheek gekoppeld is. Een publieke
       bibliotheek heeft een SONAME  en  heeft  een  versienummer  (lib-iets.so.X).  Een  private
       bibliotheek  (zoals  een uitbreiding - plug-in) zou geen SONAME mogen hebben en heeft geen
       versienummer nodig.

       Kon bibliotheek SONAME-van-bibliotheek die binair-bestand nodig heeft,  niet  vinden  (het
       RPATH ervan is 'rpath')
              Het  binair-bestand  gebruikt  een  bibliotheek met de naam soname-van-bibliotheek,
              maar dpkg-shlibdeps heeft de bibliotheek niet kunnen  vinden.  dpkg-shlibdeps  legt
              als volgt een lijst van te controleren mappen aan: mappen die vermeld worden in het
              RPATH van het binair bestand, mappen die toegevoegd werden via de optie -l,  mappen
              die  vermeld worden in de omgevingsvariabele LD_LIBRARY_PATH, kruismultiarch-mappen
              (bijv. /lib/arm64-linux-gnu, /usr/lib/arm64-linux-gnu), standaard  publieke  mappen
              (/lib,    /usr/lib),    mappen    vermeld    in   /etc/ld.so.conf   en   verouderde
              multibibliotheekmappen (/lib32, /usr/lib32, /lib64, /usr/lib64). Daarna controleert
              het  die mappen binnenin de bouwboom van het binaire pakket dat geanalyseerd wordt,
              binnenin de pakketbouwbomen die met  de  commandoregeloptie  -S  opgegeven  werden,
              binnenin  de  bouwbomen  van  andere  pakketten  die  een  bestand DEBIAN/shlibs of
              DEBIAN/symbols hebben en tenslotte in de  basismap.  Als  de  bibliotheek  in  geen
              enkele van die mappen aangetroffen wordt, krijgt u deze foutmelding.

              Indien  de  niet-gevonden  bibliotheek zich in een private map van hetzelfde pakket
              bevindt, dan moet u die map toevoegen met de optie -l. Als ze zich bevindt  in  een
              ander  binair  pakket  dat  gebouwd  wordt,  moet  u  erop  letten  dat het bestand
              shlibs/symbols van dat pakket reeds gemaakt is en dat -l de gepaste map  bevat  als
              ze zich ook in een private map bevindt.

       Geen  afhankelijkheidsinformatie gevonden voor bibliotheekbestand (dat gebruikt wordt door
       binair-bestand).
              De  bibliotheek  die  binair-bestand  nodig  heeft,  werd  door  dpkg-shlibdeps  in
              bibliotheekbestand    gevonden,    maar    dpkg-shlibdeps   was   niet   in   staat
              vereisteninformatie voor die bibliotheek te vinden. Om vereistengegevens te  vinden
              heeft  het  geprobeerd  de bibliotheek op te zoeken in een Debian pakket met behulp
              van dpkg -S bibliotheekbestand. Daarna heeft  het  de  overeenkomstige  shlibs-  en
              symbols-bestanden nagekeken in /var/lib/dpkg/info/ en in de verschillende bouwbomen
              van het pakket (debian/*/DEBIAN/).

              Deze mislukking kan veroorzaakt worden door een slecht  of  ontbrekend  shlibs-  of
              symbols-bestand  in  het pakket van de bibliotheek. Ze kan zich ook voordoen als de
              bibliotheek gebouwd wordt binnen hetzelfde broncodepakket  en  de  shlibs-bestanden
              nog  niet  aangemaakt  zijn  (in  dat  geval moet u debian/rules repareren zodat de
              shlibs gemaakt worden voordat dpkg-shlibdeps ingeroepen wordt).  Een  slecht  RPATH
              kan  er  ook  toe  leiden dat de bibliotheek te vinden is onder een ongebruikelijke
              naam (bijvoorbeeld  /usr/lib/openoffice.org/../lib/libssl.so.0.9.8  in  plaats  van
              /usr/lib/libssl.so.0.9.8),  die  aan geen enkel pakket gekoppeld is. dpkg-shlibdeps
              tracht dit te omzeilen door terug te vallen op een gebruikelijke naam  (met  behulp
              van  realpath(3)),  maar dit lukt niet altijd. Het is altijd het beste om het RPATH
              van het binair bestand uit te zuiveren om problemen te voorkomen.

              Het inroepen van dpkg-shlibdeps in  de  breedsprakige  modus  (-v)  zal  veel  meer
              informatie  geven  over  waar het programma de afhankelijkheidsinformatie tracht te
              vinden. Dit kan nuttig zijn indien  u  niet  begrijpt  waarom  u  deze  foutmelding
              krijgt.

ZIE OOK

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