Provided by: dpkg-dev_1.21.1ubuntu2.3_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-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
           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.

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

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

1.21.1                                             2024-02-23                                  dpkg-shlibdeps(1)