.\" dpkg manual page - dpkg-deb(1) .\" .\" Copyright © 1995-1996 Ian Jackson .\" Copyright © 2000 Wichert Akkerman .\" Copyright © 2006 Frank Lichtenheld .\" Copyright © 2007-2011 Rapha\(:el Hertzog .\" Copyright © 2011-2013, 2015 Guillem Jover .\" .\" This is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by .\" the Free Software Foundation; either version 2 of the License, or .\" (at your option) any later version. .\" .\" This is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public License .\" along with this program. If not, see . . .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH dpkg\-shlibdeps 1 2018-06-26 1.18.25 dpkg\-suite .nh .SH NAAM dpkg\-shlibdeps \- genereert substitutievariabelen over afhankelijkheidsrelaties tot gedeelde bibliotheken . .SH OVERZICHT \fBdpkg\-shlibdeps\fP [\fIoptie\fP...] [\fB\-e\fP]\fIprogramma\fP [\fIoptie\fP...] . .SH BESCHRIJVING \fBdpkg\-shlibdeps\fP berekent de afhankelijkheidsrelaties tot gedeelde bibliotheken voor de programma's die genoemd worden in zijn argumenten. De afhankelijkheden worden in het bestand met substitutievariabelen \fBdebian/substvars\fP toegevoegd als variabelenaam \fBshlibs:\fP\fIafhankelijkheidsveld\fP, waarbij \fIafhankelijkheidsveld\fP de naam van een afhankelijkheidsveld is. Eventuele andere variabelen die met \fBshlibs:\fP beginnen worden uit het bestand verwijderd. .P \fBdpkg\-shlibdeps\fP heeft twee mogelijke informatiebronnen om afhankelijkheidsinformatie te genereren, ofwel \fIsymbols\fP\-bestanden ofwel \fIshlibs\fP\-bestanden. Voor elke binair pakket dat \fBdpkg\-shlibdeps\fP analyseert, zoekt het de lijst van bibliotheken op waarmee het gelinkt is. Vervolgens zoekt het voor iedere bibliotheek ofwel het \fIsymbols\fP\-bestand of het \fIshlibs\fP\-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/\fIpakket\fP.\fIsymbols\fP of /var/lib/dpkg/info/\fIpakket\fP.\fIshlibs\fP. 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 \fBld.so\fP zou gebruiken) en dan \fBdpkg \-S \fP\fIbibliotheekbestand\fP gebruiken om het pakket op te zoeken dat de bibliotheek levert. .SS 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): .IP debian/*/DEBIAN/symbols Informatie over gedeelde bibliotheken die gegenereerd werd door het huidige bouwproces dat ook \fBdpkg\-shlibdeps\fP aanriep. Zij worden gegenereerd door \fBdpkg\-gensymbols\fP(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. .IP /etc/dpkg/symbols/\fIpakket\fP.symbols.\fIarch\fP .IP /etc/dpkg/symbols/\fIpakket\fP.symbols Systeemspecifieke vervangingsinformatie over afhankelijkheidsrelaties tot gedeelde bibliotheken. \fIarch\fP is de architectuur van het huidige systeem (verkregen door \fBdpkg\-architecture \-qDEB_HOST_ARCH\fP). .IP "Uitvoer van \(lq\fBdpkg\-query \-\-control\-path\fP \fIpakket\fP symbols\(rq" Door een pakket verstrekte informatie over afhankelijkheidsrelaties tot gedeelde bibliotheken. Tenzij anders bepaald door \fB\-\-admindir\fP, zijn deze bestanden te vinden in /var/lib/dpkg. .P Tijdens het doorzoeken van de door al de programma's gebruikte symbolen, onthoudt \fBdpkg\-shlibdeps\fP 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 \fIsymbols\fP\-bestanden accuraat is). .P Bij wijze van beschermende maatregel kan een symbols\-bestand een meta\-informatieveld \fBBuild\-Depends\-Pakket\fP bevatten. Dan zal \fBdpkg\-shlibdeps\fP de door het corresponderende pakket vereiste minimale versie halen uit het veld \fBBuild\-Depends\fP en deze versie gebruiken als ze hoger is dan de minimale versie die berekend werd via het doorzoeken van symbolen. .SS 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. .P De afhankelijkheidsrelaties tot een bibliotheek worden op verschillende plaatsen opgezocht. Het eerste bestand dat informatie biedt over de bibliotheek in kwestie, wordt gebruikt: .IP debian/shlibs.local Pakket\-eigen vervangende informatie over afhankelijkheidsrelaties tot gedeelde bibliotheken. .IP /etc/dpkg/shlibs.override Systeemspecifieke vervangende informatie over afhankelijkheidsrelaties tot gedeelde bibliotheken. .IP debian/*/DEBIAN/shlibs Informatie over gedeelde bibliotheken die gegenereerd werd door het huidige bouwproces dat ook \fBdpkg\-shlibdeps\fP 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. .IP "Uitvoer van \(lq\fBdpkg\-query \-\-control\-path\fP \fIpakket\fP shlibs\(rq" Door een pakket verstrekte informatie over afhankelijkheidsrelaties tot gedeelde bibliotheken. Tenzij anders bepaald door \fB\-\-admindir\fP, zijn deze bestanden te vinden in /var/lib/dpkg. .IP /etc/dpkg/shlibs.default Systeemspecifieke standaardinformatie over afhankelijkheidsrelaties tot gedeelde bibliotheken. .P 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). .SH OPTIES Argumenten die geen opties zijn, worden door \fBdpkg\-shlibdeps\fP ge\(:interpreteerd als namen van programma's, net alsof ze opgegeven werden als \fB\-e\fP\fIprogramma\fP. .TP \fB\-e\fP\fIprogramma\fP Voeg de gepaste afhankelijkheidsrelaties tot gedeelde bibliotheken toe die nodig zijn voor \fIprogramma\fP. Deze optie kan meermaals gebruikt worden. .TP \fB\-l\fP\fImap\fP Voeg \fImap\fP 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 plaats van \fBLD_LIBRARY_PATH\fP in te stellen, aangezien die omgevingsvariabele gebruikt wordt om de linker tijdens de programma\-uitvoering 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. .TP \fB\-d\fP\fIafhankelijkheidsveld\fP Geef afhankelijkheidsinformatie op die toegevoegd moet worden aan het afhankelijkheidsveld \fIafhankelijkheidsveld\fP van het bestand control. (De afhankelijkheidsinformatie voor dit veld wordt in de variabele \fBshlibs:\fP\fIdependency\-field\fP geplaatst.) De optie \fB\-d\fP\fIafhankelijkheidsveld\fP heeft uitwerking voor alle programma's na de optie tot aan het volgende \fB\-d\fP\fIafhankelijkheidsveld\fP. Het standaard \fIafhankelijkheidsveld\fP is \fBDepends\fP. Indien hetzelfde afhankelijkheidsitem (of set van alternatieven) te vinden is in meer dan een van de herkende namen voor afhankelijkheidsvelden \fBPre\-Depends\fP, \fBDepends\fP, \fBRecommends\fP, \fBEnhances\fP of \fBSuggests\fP, zal \fBdpkg\-shlibdeps\fP de afhankelijkheid automatisch uit alle velden verwijderen, behalve uit het veld dat de belangrijkste afhankelijkheid vertegenwoordigt. .TP \fB\-p\fP\fIvariabelenaamprefix\fP Begin substitutievariabelen met \fIvariabelenaamprefix\fP\fB:\fP in plaats van met \fBshlibs:\fP. Op dezelfde wijze worden eventuele substitutievariabelen die beginnen met \fIvariabelenaamprefix\fP\fB:\fP (in plaats van met \fBshlibs:\fP), verwijderd uit het bestand met substitutievariabelen. .TP \fB\-O\fP[\fIbestandsnaam\fP] Geef de instellingen in verband met substitutievariabelen weer op de standaarduitvoer (of in \fIbestandsnaam\fP als die opgegeven werd; sinds dpkg 1.17.2), eerder dan ze toe te voegen aan het bestand met substitutievariabelen (standaard is dat \fBdebian/substvars\fP). .TP \fB\-t\fP\fItype\fP 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 \fBdeb\fP. 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. .TP \fB\-L\fP\fIlokaal\-shlibs\-bestand\fP Lees vervangende informatie over afhankelijkheidsrelaties tot gedeelde bibliotheken uit \fIlokaal\-shlibs\-bestand\fP in plaats van uit \fBdebian/shlibs.local\fP. .TP \fB\-T\fP\fIsubstvars\-bestand\fP Schrijf substitutievariabelen neer in \fIsubstvars\-bestand\fP. Standaard is dat \fBdebian/substvars\fP. .TP \fB\-v\fP Schakel de breedsprakige modus in (sinds dpkg 1.14.8). Talrijke berichten worden weergegeven om uit te leggen wat \fBdpkg\-shlibdeps\fP doet. .TP \fB\-x\fP\fIpakket\fP 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. .TP \fB\-S\fP\fIpakket\-bouwmap\fP Zoek eerst in \fIpakket\-bouwmap\fP 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. .TP \fB\-I\fP\fIpakketbouwmap\fP Sla \fIpakketbouwmap\fP over bij het zoeken naar shlibs\-, symbolen\- en gedeelde bibliotheek\-bestanden (sinds dpkg 1.18.5). U kunt deze optie meermaals gebruiken. .TP \fB\-\-ignore\-missing\-info\fP 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. .TP \fB\-\-warnings=\fP\fIwaarde\fP \fIwaarde\fP is een bit\-veld dat aangeeft welke set waarschuwingen \fBdpkg\-shlibdeps\fP kan geven (sinds dpkg 1.14.17). Bit 0 (waarde=1) activeert de waarschuwing \(lqsymbool \fIsym\fP dat door \fIbinair\-bestand\fP gebruikt wordt, werd in geen enkele bibliotheek aangetroffen\(rq, bit 1 (waarde=2) activeert de waarschuwing \(lqpakket zou een nutteloze afhankelijkheid kunnen vermijden\(rq en bit 2 (waarde=4) activeert de waarschuwing \(lq\fIbinair\-bestand\fP zou niet gelinkt moeten worden met \fIbibliotheek\fP\(rq. De standaard\-\fIwaarde\fP is 3: standaard zijn de eerste twee waarschuwingen geactiveerd, de laatste niet. Stel de \fIwaarde\fP in op 7 indien u wilt dat alle waarschuwingen geactiveerd worden. .TP \fB\-\-admindir=\fP\fImap\fP Geef een andere locatie op voor de database van \fBdpkg\fP (sinds dpkg 1.14.0). De standaardlocatie is \fI/var/lib/dpkg\fP. .TP \fB\-?\fP, \fB\-\-help\fP Toon info over het gebruik en sluit af. .TP \fB\-\-version\fP Toon de versie en sluit af. . .SH DIAGNOSTIEK .SS Waarschuwingen Aangezien \fBdpkg\-shlibdeps\fP 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: .TP \fBsymbool\fP\fI sym\fP\fB gebruikt door \fP\fIbinair\-bestand\fP\fB in geen enkele bibliotheek gevonden.\fP Het aangegeven symbool werd niet aangetroffen in de bibliotheken die met het binair bestand gelinkt werden. Hoogstwaarschijnlijk is \fIbinair\-bestand\fP een bibliotheek die gelinkt moet worden met een andere bibliotheek tijdens het bouwproces (optie \fB\-l\fP\fIbibliotheek\fP van de linker). .TP \fIBinair bestand\fP\fB bevat een onoplosbare verwijzing naar symbool \fP\fIsym\fP\fB: wellicht is het een uitbreiding\fP Het aangegeven symbool werd niet aangetroffen in de bibliotheken die gelinkt zijn met het binair bestand. Hoogstwaarschijnlijk is het \fIbinair\-bestand\fP 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\(:identificeerd 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. .TP \fBHet pakket zou een nutteloze afhankelijkheid kunnen vermijden indien \fP\fIbinair\-bestand\fP\fB niet gelinkt was met \fP\fIbibliotheek\fP\fB (het gebruikt geen enkel symbool van de bibliotheek)\fP Geen enkel van de \fIbinaire\-bestanden\fP die gelinkt werden met \fIbibliotheek\fP 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). .TP \fBHet pakket zou een nutteloze vereiste kunnen vermijden indien \fP\fIprogramma's\fP\fB niet gelinkt waren met \fP\fIbibliotheek\fP\fB (ze gebruiken geen enkel symbool van de bibliotheek)\fP Identiek dezelfde waarschuwing als hierboven, maar dan voor meerdere programma's. .TP \fIBinair\-bestand\fP\fB zou niet gelinkt moeten worden met \fP\fIbibliotheek\fP\fB (het gebruikt geen enkel symbool van de bibliotheek)\fP Het \fIbinair\-bestand\fP 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. .SS Fouten \fBdpkg\-shlibdeps\fP 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.\fIX\fP). Een private bibliotheek (zoals een uitbreiding \- plug\-in) zou geen SONAME mogen hebben en heeft geen versienummer nodig. .TP \fBKon bibliotheek \fP\fISONAME\-van\-bibliotheek\fP\fB die \fP\fIbinair\-bestand\fP\fB nodig heeft, niet vinden (het RPATH ervan is '\fP\fIrpath\fP\fB')\fP Het \fIbinair\-bestand\fP gebruikt een bibliotheek met de naam \fIsoname\-van\-bibliotheek\fP, maar \fBdpkg\-shlibdeps\fP heeft de bibliotheek niet kunnen vinden. \fBdpkg\-shlibdeps\fP 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 \fB\-l\fP, mappen die vermeld worden in de omgevingsvariabele \fBLD_LIBRARY_PATH\fP, 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 \fB\-S\fP 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 \fB\-l\fP. 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 \fB\-l\fP de gepaste map bevat als ze zich ook in een private map bevindt. .TP \fBGeen afhankelijkheidsinformatie gevonden voor \fP\fIbibliotheekbestand\fP\fB (dat gebruikt wordt door \fP\fIbinair\-bestand\fP\fB).\fP De bibliotheek die \fIbinair\-bestand\fP nodig heeft, werd door \fBdpkg\-shlibdeps\fP in \fIbibliotheekbestand\fP gevonden, maar \fBdpkg\-shlibdeps\fP 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 \fBdpkg \-S \fP\fIbibliotheekbestand\fP. 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 \fBdpkg\-shlibdeps\fP 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. \fBdpkg\-shlibdeps\fP tracht dit te omzeilen door terug te vallen op een gebruikelijke naam (met behulp van \fBrealpath\fP(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 \fBdpkg\-shlibdeps\fP in de breedsprakige modus (\fB\-v\fP) 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. .SH "ZIE OOK" \fBdeb\-shlibs\fP(5), \fBdeb\-symbols\fP(5), \fBdpkg\-gensymbols\fP(1).