Provided by: dpkg-dev_1.22.18ubuntu3_all bug

NAAM

       dpkg-shlibdeps - substitutievariabelen genereren 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.

   Symboolbestanden
       Symboolbestanden bevatten fijnmazige afhankelijkheidsinformatie door voor ieder symbool dat de
       bibliotheek exporteert, de minimumvereiste op te geven. Het script tracht een symboolbestand 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 symboolbestanden 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-
       Package  of  Build-Depends-Packages  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
           De  gepaste  afhankelijkheidsrelaties  tot  gedeelde  bibliotheken  die  nodig  zijn  voor programma,
           toevoegen. Deze optie kan meermaals gebruikt worden.

       -lmap
           map vooraan toevoegen 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
           Afhankelijkheidsinformatie   opgeven   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.

       --package=pakket
           De pakketnaam definiëren.

           Indie  gespecificeerd,  zal de pakketnaam worden gebruikt voor het wijzigen van standaardinstellingen
           op basis van de metadata van het binaire pakket in debian/control.

           Als het pakket Essential: yes is, dan is het standaard vereistenveld Pre-Depends, anders Depends. Het
           standaard pakkettype wordt ingesteld vanuit het veld Package-Type. Het pakket wordt toegevoegd aan de
           set pakketten die zijn uitgesloten door -x.

           Optie ondersteund sinds dpkg 1.22.7.

       -pvariabelenaamprefix
           Substitutievariabelen beginnen 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]
           De instellingen in  verband  met  substitutievariabelen  weergeven  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
           De voorrang  geven  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
           Vervangende  informatie  over  afhankelijkheidsrelaties  tot  gedeelde bibliotheken lezen uit lokaal-
           shlibs-bestand in plaats van uit debian/shlibs.local.

       -Tsubstvars-bestand
           Substitutievariabelen opschrijven in substvars-bestand. Standaard is dat debian/substvars.

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

       -xpakket
           Het  pakket uitsluiten 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
           Eerst zoeken 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
           pakketbouwmap overslaan bij het zoeken naar  shlibs-,  symbolen-  en  gedeelde  bibliotheek-bestanden
           (sinds dpkg 1.18.5). U kunt deze optie meermaals gebruiken.

       --ignore-missing-info
           Het    niet    als   een   mislukking   beschouwen   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  symboolbestanden),  zelfs  als die nog niet door andere pakketten gebruikt
           wordt.

       --warnings=[waarde|tekenreeks[,...]]
           De set waarschuwingen selecteren die  door  dpkg-shlibdeps  kunnen  worden  uitgezonden  (sinds  dpkg
           1.14.17).

           De  waarschuwingen  kunnen  worden geselecteerd uit een door komma's gescheiden lijst met symbolische
           namen (sinds dpkg 1.22.12) of uit een waarde die een bitveld voor deze waarschuwingen aangeeft.

           symbol-not-found (bit 0, waarde 1)
               Selecteert de waarschuwing “symbool sym, gebruikt door binair-bestand, niet gevonden in  een  van
               de bibliotheken”.

               Standaard ingeschakeld.

           avoidable-dependency (bit 1, waarde 2)
               Selecteert de waarschuwing “pakket kan een nutteloze vereiste vermijden”.

               Standaard ingeschakeld.

           useless-linkage (bit 2, waarde 4)
               Selecteer de waarschuwing “binair-bestand mag niet worden gelinkt met bibliotheek”.

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

       -?, --help
           Info tonen over het gebruik en afsluiten.

       --version
           De versie tonen en afsluiten.

OMGEVING

       DEB_HOST_ARCH
           Stelt de computerarchitectuur in. Dit heeft invloed op het gezochte objecten- en  symbolenbestand  en
           hun standaard zoekpadnaam.

       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
       symboolbestand) 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  niet-conforme  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 conforme 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-substvars(5), deb-shlibs(5), deb-symbols(5), dpkg-gensymbols(1).

1.22.18                                            2025-04-28                                  dpkg-shlibdeps(1)