Provided by: dpkg-dev_1.21.9ubuntu1_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-substvars(5), deb-shlibs(5), deb-symbols(5), dpkg-gensymbols(1).