Provided by: dpkg-dev_1.19.7ubuntu2_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 de plaats van het instellen van LD_LIBRARY_PATH,
              aangezien die omgevingsvariabele gebruikt wordt om de runtime linker 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.

OMGEVING

       DPKG_COLORS
              Stelt  de  kleurmodus  in (sinds dpkg 1.18.5). Waarden die momenteel gebruikt mogen
              worden zijn: auto (standaard), always en never.

       DPKG_NLS
              Indien dit ingesteld is, zal het gebruikt worden om te beslissen over het activeren
              van  moedertaalondersteuning, ook gekend als internationaliseringsondersteuning (of
              i18n) (sinds dpkg 1.19.0). Geldige waarden zijn: 0 and 1 (standaard).

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