Provided by: dpkg-dev_1.22.18ubuntu3_all bug

NAAM

       dpkg-gensymbols - symboolbestanden genereren (informatie over afhankelijkheidsrelaties met gedeelde
       bibliotheken)

OVERZICHT

       dpkg-gensymbols [optie...]

BESCHRIJVING

       dpkg-gensymbols doorzoekt een tijdelijke bouwboom (standaard is dat debian/tmp) op zoek naar bibliotheken
       en genereert een symbols-bestand dat ze beschrijft. Dit bestand wordt dan als het niet leeg is,
       geïnstalleerd in een onderliggende map van de bouwboom met de naam DEBIAN, zodat het uiteindelijk
       opgenomen geraakt in de controle-informatie van het pakket.

       Bij het genereren van deze bestanden gebruikt het als invoer bepaalde symboolbestanden die door de
       beheerder aangeleverd worden. Het zoekt naar de volgende bestanden (en gebruikt het eerste dat gevonden
       wordt):

       •   debian/pakket.symbols.arch

       •   debian/symbols.arch

       •   debian/pakket.symbols

       •   debian/symbols

       Het  hoofddoel  van deze bestanden is aan te geven welke de minimale versie is die behoort bij elk van de
       symbolen die door de bibliotheken aangeleverd worden. Gewoonlijk komt dit overeen met  de  eerste  versie
       van  het pakket dat in dat symbool voorzag, maar dit kan door de beheerder manueel verhoogd worden indien
       de ABI van het symbool uitgebreid werd zonder  dat  daardoor  de  neerwaartse  compatibiliteit  verbroken
       wordt.  Het  is  de  verantwoordelijkheid  van  de  beheerder om deze bestanden up-to-date en accuraat te
       houden, maar dpkg-gensymbols helpt hierbij.

       Indien het gegenereerde symboolbestand verschilt van  datgene  wat  de  beheerder  aanlevert,  zal  dpkg-
       gensymbols  de  verschillen tussen de twee versies tonen in diff-formaat. Bovendien kan dit zelfs tot een
       mislukking leiden als de verschillen te significant zijn  (u  kunt  aanpassen  hoeveel  verschil  u  kunt
       tolereren; zie de optie -c).

       Dit programma werd geïntroduceerd in dpkg 1.14.8.

HET ONDERHOUD VAN SYMBOOLBESTANDEN

       De basisuitwisselingsindeling van het symboolbestand wordt beschreven in deb-symbols(5), hetgeen gebruikt
       wordt   door   de   symboolbestanden   uit   de   binaire   pakketten.   Deze   worden   gegenereerd  uit
       sjabloonsymboolbestanden met een indeling gebaseerd op het eerste, beschreven  in  deb-src-symbols(5)  en
       opgenomen in broncodepakketten.

       De  symboolbestanden  zijn  pas  echt  nuttig  als  ze  de  evolutie  van het pakket reflecteren doorheen
       verschillende releases. De beheerder moet  ze  dus  iedere  keer  bijwerken  wanneer  een  nieuw  symbool
       toegevoegd wordt, zodat de minimale versie die eraan gekoppeld wordt, overeenkomt met de realiteit.

       De  diffs  (weergave  van de verschillen) die in de bouwlogs te vinden zijn, kunnen als startpunt genomen
       worden, maar daarbovenop moet de beheerder erop letten dat het gedrag  van  deze  symbolen  niet  zodanig
       veranderd  werd,  dat  iets dat van deze symbolen gebruik maakt en linkt met de nieuwe versie, niet stopt
       met werken met de oude versie.

       In de meeste gevallen kan de diff rechtstreeks toegepast worden op het bestand debian/pakket.symbols. Dit
       gezegd zijnde, zijn verdere aanpassingen meestal wel nodig: het  wordt  bijvoorbeeld  aanbevolen  om  het
       Debian  revisienummer weg te laten uit de minimale versie, zodat backports (nieuwere programmaversies die
       geschikt  gemaakt  worden  voor  een  vroegere  release)  met  een  lager  versienummer  maar   eenzelfde
       bovenstroomse  versie  nog steeds voldoen aan de gegenereerde afhankelijkheidsrelaties. Indien het Debian
       revisienummer niet weggelaten kan worden omdat het symbool  echt  via  een  Debian-specifieke  aanpassing
       toegevoegd werd, moet men aan het versienummer het achtervoegsel ‘~’ toevoegen.

       Vooraleer een patch toe te passen op een symboolbestand, moet de beheerder grondig controleren of dat wel
       correct  is. Publieke symbolen worden verondersteld niet te verdwijnen. Een patch zou dus idealiter enkel
       nieuwe regels mogen toevoegen.

       Merk op dat u in symboolbestanden commentaar kunt invoegen.

       Vergeet niet na te gaan of oudere symboolversies niet verhoogd moeten worden. Er bestaat geen manier voor
       dpkg-gensymbols om in dit verband waarschuwingen  te  geven.  Een  diff  (weergave  van  de  verschillen)
       blindweg toepassen of ervan uitgaan dat er niets aangepast moet worden als er geen diff is zonder zelf op
       eventuele wijzigingen te controleren, kan leiden tot pakketten met verslapte afhankelijkheidsrelaties die
       onterecht   laten   veronderstellen  dat  ze  met  oudere  pakketten  kunnen  samenwerken.  Dit  kan  bij
       (gedeeltelijke) opwaarderingen leiden tot moeilijk te vinden bugs.

   Goed beheer van bibliotheken
       Een goed onderhouden bibliotheek heeft de volgende functionaliteit:

       •   haar API is stabiel (publieke symbolen worden nooit verwijderd, enkel worden nieuwe publieke symbolen
           toegevoegd) en zij ondergaat enkel op een incompatibele manier veranderingen als de SONAME verandert;

       •   idealiter gebruikt zij symboolversienummering om ondanks  interne  wijzigingen  en  API-uitbreidingen
           ABI-stabiliteit te bekomen;

       •   zij  exporteert  geen  private symbolen (dergelijke symbolen kunnen de tag optional krijgen om dat te
           omzeilen).

       Bij het onderhoud van een symboolbestand is het gemakkelijk om het verschijnen en verdwijnen van symbolen
       op te merken. Maar het is moeilijker om incompatibele API- en ABI-wijzigingen op te merken.  Daarom  moet
       de beheerder het changelog-bestand van de toeleveraar grondig nakijken op situaties waarbij de regels van
       goed  bibliotheekbeheer geschonden worden. Indien mogelijke problemen ontdekt worden, zou de toeleverende
       auteur erover ingelicht moeten worden, aangezien een reparatie op het niveau van de toeleveraar altijd te
       verkiezen valt boven een Debian-specifieke tijdelijke oplossing.

OPTIES

       -Ppakketbouwmap
           Zoek in pakketbouwmap in plaats van in debian/tmp.

       -ppakket
           Definieer de pakketnaam. Is vereist als meer dan één binair pakket vermeld  wordt  in  debian/control
           (of indien er geen bestand debian/control is).

       -vversie
           Definieer  de  pakketversie.  Standaard  is  dat de versie die uit debian/changelog gehaald wordt. Is
           vereist indien het aanroepen gebeurt van buiten de boom van het broncodepakket.

       -ebibliotheekbestand
           Analyseer enkel de expliciet vermelde bibliotheken  in  plaats  van  alle  publieke  bibliotheken  te
           zoeken.  U kunt in bibliotheekbestand gebruik maken van shell-patronen met het oog op padnaamexpansie
           (zie de man-pagina File::Glob voor details) om met één enkel argument meerdere  bibliotheken  aan  te
           duiden (anders heeft u meerdere malen -e nodig).

       -lmap
           Voeg  map  vooraan toe aan de lijst van mappen waarin naar private gedeelde bibliotheken gezocht moet
           worden (sinds dpkg 1.19.1). 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.

       -Ibestandsnaam
           Gebruik bestandsnaam als referentiebestand om het symboolbestand te genereren dat in het pakket  zelf
           geïntegreerd wordt.

       -O[bestandsnaam]
           Het  gegenereerde  symboolbestand weergeven op de standaarduitvoer of schrijven naar bestandsnaam als
           dat opgegeven werd, eerder dan naar debian/tmp/DEBIAN/symbols (of pakketbouwmap/DEBIAN/symbols indien
           -P gebruikt werd). Indien bestandsnaam reeds bestond, wordt de inhoud ervan gebruikt als  basis  voor
           het  gegenereerde symboolbestand. U kunt van deze functionaliteit gebruik maken om een symboolbestand
           bij te werken zodat  het  in  overeenstemming  is  met  een  nieuwere  bovenstroomse  versie  van  uw
           bibliotheek.

       -t  Het  symboolbestand  in  sjabloonmodus  opschrijven,  eerder dan in de indeling die compatibel is met
           deb-symbols(5). Het grootste verschil is dat in de  sjabloonmodus  symboolnamen  en  tags  geschreven
           worden  in  hun  originele  vorm  in  tegenstelling  tot  in de compatibele modus waarin de verwerkte
           symboolnamen ontdaan van hun tags gebruikt worden. Daarenboven  kunnen  bij  het  schrijven  van  een
           standaard  deb-symbols(5)-bestand  sommige  symbolen weggelaten worden (overeenkomstig de regels voor
           het verwerken van tags), terwijl in een symboolbestand-sjabloon steeds alle  symbolen  neergeschreven
           worden.

       -c[0-4]
           Definiëren  welke  controles  moeten gebeuren bij het vergelijken van het gegenereerde symboolbestand
           met het sjabloonbestand dat als vertrekpunt gebruikt werd. Standaard is dat  volgens  niveau  1.  Het
           verhogen  van het niveau leidt tot meer controles, terwijl alle controles van lagere niveaus behouden
           blijven.

           Niveau 0
               Leidt nooit tot een mislukking.

           Niveau 1
               Leidt tot een mislukking als sommige symbolen verdwenen zijn.

           Niveau 2
               Leidt tot een mislukking als sommige nieuwe symbolen geïntroduceerd werden.

           Niveau 3
               Leidt tot een mislukking als sommige bibliotheken verdwenen zijn.

           Niveau 4
               Leidt tot een mislukking als sommige nieuwe bibliotheken geïntroduceerd werden.

           Deze waarde kan vervangen worden door de omgevingsvariabele DPKG_GENSYMBOLS_CHECK_LEVEL.

       -q  Stil blijven en nooit een diff (een overzicht van  de  verschillen)  maken  tussen  het  gegenereerde
           symboolbestand  en  het sjabloonbestand dat als vertrekpunt gebruikt werd en geen enkele waarschuwing
           tonen in verband met nieuwe/verloren bibliotheken of nieuwe/verloren symbolen.  Deze  optie  schakelt
           enkel de informatieve uitvoer uit, maar niet de controles zelf (zie de optie -c).

       -aarch
           Uitgaan  van arch als host-architectuur bij het verwerken van symboolbestanden. Gebruik deze optie om
           een symboolbestand of een diff (overzicht van de verschillen) voor een willekeurige  architectuur  te
           genereren op voorwaarde dat de binaire bestanden ervan reeds voorhanden zijn.

       -d  Debug-modus  aanzetten.  Talrijke  berichten worden dan getoond om toe te lichten wat dpkg-gensymbols
           doet.

       -V  De breedsprakige modus inschakelen. Het gegenereerde symboolbestand bevat dan verouderde symbolen  in
           de  vorm  van commentaar. In sjabloonmodus worden daarenboven patroonsymbolen gevolgd door commentaar
           met daarin een opsomming van de echte symbolen die met het patroon overeenkwamen.

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

       --version
           De versie tonen en afsluiten.

OMGEVING

       DEB_HOST_ARCH
           Stelt de computerarchitectuur in als de optie --arch niet werd gespecificeerd.

       DPKG_GENSYMBOLS_CHECK_LEVEL
           Overschrijft het controleniveau van het commando, zelfs als het argument -c  opgegeven  werd  aan  de
           commandoregel  (merk  op  dat  dit  ingaat  tegen  de  algemeen  geldende afspraak dat commandoregel-
           argumenten voorrang hebben op omgevingsvariabelen).

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

ZIE OOK

       <https://people.redhat.com/drepper/symbol-versioning>,
       <https://people.redhat.com/drepper/goodpractice.pdf>,   <https://people.redhat.com/drepper/dsohowto.pdf>,
       deb-src-symbol(5), deb-symbols(5), dpkg-shlibdeps(1).

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