Provided by: dpkg-dev_1.19.7ubuntu3.2_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).

1.19.7                                             2022-05-25                                  dpkg-shlibdeps(1)