dpkg(1) | dpkg-suite | dpkg(1) |
dpkg - pakketbeheerder voor Debian
dpkg [optie...] actie
Deze handleiding is bedoeld voor gebruikers die de commandoregelopties van dpkg en de pakkettoestanden meer in detail willen begrijpen dan met de info van dpkg --help mogelijk is.
Zij zou niet gebruikt moeten worden door pakketonderhouders die willen begrijpen hoe dpkg hun pakketten installeert. De beschrijving van wat dpkg doet bij het installeren en verwijderen van pakketten is bijzonder inadequaat.
dpkg is gereedschap voor het installeren, bouwen, verwijderen en beheren van Debian pakketten. Het belangrijkste en meer gebruikersvriendelijke frontend voor dpkg is aptitude(1). dpkg zelf wordt volledig gestuurd via commandoregelparameters, die bestaan uit exact één actie en nul of meer opties. De actieparameter zegt dpkg wat het moet doen en de opties sturen in zekere zin het gedrag van de actie.
dpkg kan ook gebruikt worden als een frontend voor dpkg-deb(1) en dpkg-query(1). De lijst van ondersteunde acties kunt u verderop in het onderdeel ACTIES vinden. Indien dpkg een dergelijke actie tegenkomt, voert het gewoon dpkg-deb of dpkg-query uit met de parameters die het meekreeg. Maar momenteel worden aan hen geen specifieke opties doorgegeven. Indien u een dergelijke optie wenst te gebruiken moet u deze programma's rechtstreeks gebruiken.
dpkg houdt bruikbare informatie bij over beschikbare pakketten. De informatie wordt ingedeeld in drie klassen: states (toestand) , selection states (selectietoestand) en flags (vlaggen). Het is de bedoeling deze waarden hoofdzakelijk met behulp van dselect aan te passen.
Een installatie bestaat uit de volgende stappen:
1. Het extraheren van de controle-bestanden van het nieuwe pakket.
2. Indien voorafgaand aan de nieuwe installatie een andere versie van hetzelfde pakket geïnstalleerd was, het prerm-script van het oude pakket uitvoeren.
3. Indien het pakket een preinst-script meelevert, dat uitvoeren.
4. Het uitpakken van de nieuwe bestanden en tegelijk een reservekopie van de oude bestanden maken, zodat ze hersteld kunnen worden mocht er iets fout lopen.
5. Indien voorafgaand aan de nieuwe installatie een andere versie van hetzelfde pakket geïnstalleerd was, het postrm-script van het oude pakket uitvoeren. Merk op dat dit script uitgevoerd wordt na het preinst-script van het nieuwe pakket, omdat nieuwe bestanden neergeschreven worden tegelijk met het verwijderen van oude bestanden.
6. Het configureren van het pakket. Zie --configure voor gedetailleerde informatie over hoe dit gebeurt.
Om een pakket dat reeds geconfigureerd werd opnieuw te configureren, moet u echter het commando dpkg-reconfigure(8) gebruiken.
Het configureren bestaat uit de volgende stappen:
1. Het uitpakken van de conffiles (configuratiebestanden) en tegelijk een reservekopie maken van de oude conffiles, zodat ze hersteld kunnen worden mocht er iets fout lopen.
2. Indien het pakket een postinst-script meelevert, dat uitvoeren.
Het verwijderen van een pakket bestaat uit de volgende stappen:
1. Het uitvoeren van het prerm-script
2. Het verwijderen van de geïnstalleerde bestanden
3. Het uitvoeren van het postrm-script
Merk op: sommige configuratiebestanden kunnen niet gekend zijn door dpkg omdat ze via de configuratiescripts gecreëerd en afzonderlijk afgehandeld worden. In dat geval zal dpkg ze niet zelf verwijderen, maar het postrm-script van het pakket (dat door dpkg geactiveerd wordt) moet tijdens een wis-operatie voor hun verwijdering zorgen. Dit is uiteraard enkel van toepassing op bestanden in systeemmappen, niet op configuratiebestanden die neergeschreven werden in de persoonlijke map van gebruikers.
Het wissen van een pakket bestaat uit de volgende stappen:
1. Het verwijderen van het pakket als het nog niet verwijderd was. Zie --remove voor gedetailleerde informatie over hoe dit gebeurt.
2. Het uitvoeren van het postrm-script
Momenteel is de enige functionele toets die uitgevoerd wordt, een verificatie van de md5-controlesom van de inhoud van het bestand tegenover de opgeslagen waarde in de bestandsdatabase. De toets wordt enkel uitgevoerd als de database de md5-controlesom van het bestand bevat. Om na te gaan of er eventueel metadata ontbreken in de database, kan het commando --audit gebruikt worden.
De indeling van de uitvoer kan met de optie --verify-format gekozen worden. Standaard wordt de indeling rpm gebruikt, maar dit kan in de toekomst veranderen en om die reden zouden programma's die de uitvoer van dit commando ontleden, expliciet moeten aangeven welke indeling zij verwachten.
Een eenvoudiger commando om in één keer het bestand available op te halen en bij te werken is dselect update. Merk op dat dit bestand grotendeels nutteloos is als u niet dselect gebruikt, maar een op APT gebaseerd frontend: APT heeft zijn eigen systeem om zicht te houden op de beschikbare pakketten.
Het bestand available moet up-to-date zijn opdat dit commando dienstig zou zijn, anders zullen niet-gekende pakketten genegeerd worden en zal er in dat verband een waarschuwing gegeven worden. Zie de commando's --update-avail en --merge-avail voor meer informatie.
-b, --build map [archief|map]
Bouw een deb-pakket. -c, --contents archief
Geef de inhoud van een deb-pakket weer. -e, --control archief [map]
Extraheer de controle-informatie uit een pakket. -x, --extract archief map
Extraheer de bestanden die een pakket bevat. -X, --vextract archief map
Extraheer de bestandsnamen die een pakket bevat
en geef ze weer. -f, --field archief [controleveld...]
Geef controleveld(en) van een pakket weer. --ctrl-tarfile archief
Schrijf het controle-tar-bestand dat een Debian pakket
bevat, weg. --fsys-tarfile archief
Schrijf het bestandssysteem-tar-bestand dat een Debian
pakket bevat, weg. -I, --info archief [controlebestand...]
Toon informatie over een pakket.
-l, --list pakketnaampatroon...
Som de pakketten op die aan het opgegeven
patroon beantwoorden. -s, --status pakketnaam...
Rapporteer de status van het opgegeven pakket. -L, --listfiles pakketnaam...
Som de bestanden op die uit pakketnaam
op uw systeem geïnstalleerd worden. -S, --search bestandsnaamzoekpatroon...
Zoek naar een bestandsnaam uit een geïnstalleerd
pakket. -p, --print-avail pakketnaam...
Geef over pakketnaam de details weer
die te vinden zijn in /var/lib/dpkg/available.
Gebruikers van op APT gebaseerde frontends
moeten in plaats hiervan
apt-cache show pakketnaam gebruiken.
Alle opties kunnen zowel aan de commandoregel opgegeven worden als
in het dpkg configuratiebestand /etc/dpkg/dpkg.cfg of in
fragmentbestanden (met namen die overeenkomen met het shellpatroon
'[0-9a-zA-Z_-]*') in de configuratiemap /etc/dpkg/dpkg.cfg.d/. Elke
regel in het configuratiebestand is ofwel een optie (exact hetzelfde als de
commandoregeloptie maar zonder de verbindingstekens aan het begin) of een
commentaar (als hij begint met een ‘#’).
Getal Beschrijving
1 Algemene informatieve voortgangsinformatie
2 Activering en status van beheerdersscripts
10 Uitvoer voor elk verwerkt bestand
100 Veel uitvoer voor elk verwerkt bestand
20 Uitvoer voor elk configuratiebestand
200 Veel uitvoer voor elk configuratiebestand
40 Vereisten en tegenstrijdigheden
400 Veel uitvoer i.v.m. vereisten/tegenstrijdigheden
10000 Activatie en verwerking van triggers
20000 Veel uitvoer i.v.m. triggers
40000 Belachelijk veel uitvoer i.v.m. triggers
1000 Veel geleuter over bijv. de map dpkg/info
2000 Belachelijk veel geleuter
Waarschuwing: Deze opties zijn vooral bedoeld om enkel door experts gebruikt te worden. Er gebruik van maken zonder een volkomen begrip van hun effecten kan uw volledig systeem defect maken.
all: Schakelt alle forceer-opties aan (of uit).
downgrade(*): Een pakket installeren, zelfs als reeds een nieuwere versie ervan geïnstalleerd is.
Waarschuwing: Momenteel voert dpkg geen enkele vereistencontrole uit bij degradaties en zal dan ook niet waarschuwen indien een degradatie een vereiste van een ander pakket defect maakt. Dit kan ernstige neveneffecten hebben. Degraderen van essentiële componenten van het systeem kan zelfs uw hele systeem onbruikbaar maken. Te gebruiken met voorzichtigheid.
configure-any: Ook elk uitgepakt maar niet-geconfigureerd pakket waarvan het huidige pakket afhankelijk is, configureren.
hold: Ook pakketten verwerken die met “hold” (te handhaven) gemarkeerd zijn.
remove-reinstreq: Een pakket verwijderen, zelfs als het defect is en er aangegeven staat dat een herinstallatie nodig is. Dit kan bijvoorbeeld tot gevolg hebben dat delen van het pakket op het systeem achterblijven, maar dpkg zal er dan niet meer van op de hoogte zijn.
remove-essential: Het pakket verwijderen, zelfs al wordt het als essentieel beschouwd. Essentiële pakketten bevatten meestal hele basale Unix commando's. Ze verwijderen kan tot gevolg hebben dat het hele systeem stopt met werken. Gebruik dit dus met voorzichtigheid.
depends: Alle vereistenproblemen omzetten in waarschuwingen. Dit heeft invloed op de velden Pre-Depends en Depends.
depends-version: Zich niet om versies bekommeren bij het toetsen van vereisten. Dit heeft invloed op de velden Pre-Depends en Depends.
breaks: Installeren, zelfs als dit een ander pakket defect zou maken (sinds dpkg 1.14.6). Dit heeft invloed op het veld Breaks.
conflicts: Installeren, zelfs als er een tegenstelling is met een ander pakket. Dit is gevaarlijk, want gewoonlijk zal dit het overschrijven van bepaalde bestanden tot gevolg hebben. Dit heeft invloed op het veld Conflicts.
confmiss: Zonder vragen steeds het ontbrekende conffile (configuratiebestand) installeren. Dit is gevaarlijk, aangezien het betekent dat een verandering die aan een bestand aangebracht werd (het verwijderen ervan), niet behouden wordt.
confnew: Als een conffile (configuratiebestand) aangepast werd en de versie uit het pakket gewijzigd werd, dan steeds zonder vragen de nieuwe versie installeren, tenzij ook --force-confdef opgegeven werd. In dat geval wordt de voorkeur gegeven aan de standaardactie.
confold: Als een conffile (configuratiebestand) aangepast werd en de versie uit het pakket gewijzigd werd, dan steeds zonder vragen de oude versie behouden, tenzij ook --force-confdef opgegeven werd. In dat geval wordt de voorkeur gegeven aan de standaardactie.
confdef: Als een conffile (configuratiebestand) aangepast werd en de versie uit het pakket gewijzigd werd, dan steeds zonder vragen voor de standaardactie kiezen. Indien er geen standaardactie is, zal het programma stoppen en de gebruiker een vraag stellen, tenzij ook --force-confnew of --force-confold opgegeven werd. In dat geval zal het dit gebruiken om over de uiteindelijke actie te beslissen.
confask: Als een conffile (configuratiebestand) aangepast werd, altijd aanbieden om het te vervangen door de versie uit het pakket, ook al werd de versie uit het pakket niet gewijzigd (sinds dpkg 1.15.8). Indien ook een van de opties --force-confnew, --force-confold of --force-confdef opgegeven werd, zal het die gebruiken om over de uiteindelijke actie te beslissen.
overwrite: Een bestand van een pakket overschrijven met het bestand van een ander pakket.
overwrite-dir: Een map van een pakket overschrijven met het bestand van een ander pakket.
overwrite-diverted: Een omgeleid bestand overschrijven met een niet-omgeleide versie.
statoverride-add: Bij het toevoegen ervan een bestaande statusmodificatie overschrijven (sinds dpkg 1.19.5).
statoverride-remove: Bij het verwijderen ervan een ontbrekende statusmodificatie negeren (sinds dpkg 1.19.5).
security-mac(*): Bij het installeren van bestanden op het bestandssysteem gebruik maken van platformspecifieke beveiliging, gebaseerd op Mandatory Access Controls (MAC) (since dpkg 1.19.5). Op Linux-systemen gebruikt de implementatie SELinux.
unsafe-io: Bij het uitpakken geen veilige I/O-operaties uitvoeren (sinds dpkg 1.15.8.6). Momenteel houdt dit in dat geen bestandssysteemsynchronisatie gebeurt vooraleer bestanden hernoemd worden. Daarvan is geweten dat dit op sommige bestandssystemen tot aanzienlijk slechtere prestaties leidt, en dit jammer genoeg vooral op die bestandssystemen die veilige I/O het meest nodig hebben omwille van hun onbetrouwbaar gedrag, hetgeen bij abrupte systeemcrashes aanleiding kan geven tot bestanden met lengte zero.
Opmerking: Overweeg liever om voor ext4, de belangrijkste betrokkene, gebruik te maken van de aankoppeloptie nodelalloc, waardoor zowel het prestatieverlies als de problemen inzake de betrouwbaarheid van gegevens opgevangen worden. Dit laatste door er voor te zorgen dat het bestandssysteem geen bestanden aanmaakt met lengte zero als er zich een abrupte crash voordoet en software actief is die geen synchronisatie uitvoert voorafgaand aan een atomische hernoeming.
Waarschuwing: Het gebruik van deze optie kan de prestaties verbeteren ten koste van het verlies van gegevens. Gebruik ze behoedzaam.
script-chrootless: De scripts van de pakketonderhouder uitvoeren zonder te chroot(2)en naar instdir, zelfs als het pakket deze werkwijze niet ondersteunt (sinds dpkg 1.18.5).
Waarschuwing: Dit kan uw computersysteem vernietigen, gebruik dit uiterst behoedzaam.
architecture: Pakketten verwerken, zelfs als ze de verkeerde of geen architectuur hebben.
bad-version: Pakketten verwerken, zelfs als ze een verkeerde versie hebben (sinds dpkg 1.16.1).
bad-path: In PATH ontbreken belangrijke programma's, waardoor het waarschijnlijk is dat er zich problemen zullen voordoen.
not-root: Proberen om zaken te (de-)installeren, zelfs in opdracht van een niet-systeembeheerder.
bad-verify: Een pakket installeren, zelfs als de authenticiteitscontrole mislukt.
Zorg ervoor om --no-act voor de actie-parameter op te geven, anders zou u ongewenste resultaten kunnen bekomen. (bijvoorbeeld zal dpkg --purge foo --no-act eerst pakket foo wissen en dan proberen pakket --no-act te wissen, ook al verwachtte u wellicht dat er niets gedaan zou worden)
Waarschuwing: houd er rekening mee dat u, afhankelijk van de paden die uitgesloten worden, uw systeem volledig defect kunt maken. Gebruik dit behoedzaam.
In de glob-patronen kunnen dezelfde jokertekens gebruikt worden als in de shell, waarbij ‘*’ overeenkomt met om het even welke reeks tekens, met inbegrip van de lege tekenreeks evenals van ‘/’. Bijvoorbeeld, «/usr/*/READ*» komt overeen met «/usr/share/doc/package/README». Zoals gebruikelijk komt ‘?’ overeen met één willekeurig teken (opnieuw met inbegrip van ‘/’). En ‘[’ geeft het begin aan van een klasse van tekens, die een lijst van tekens, bereiken of complementaties kan bevatten. Zie glob(7) voor gedetailleerde informatie over het gebruik van glob-patronen. Merk op dat het mogelijk is dat de huidige implementatie meer mappen en symbolische koppelingen terug toevoegt dan nodig is. Dit is om op veilig te spelen en mogelijke mislukkingen bij het uitpakken te vermijden. In de toekomst kan eraan gewerkt worden om dit te verbeteren.
Dit kan gebruikt worden om alle paden te verwijderen op enkele specifieke paden na. Een typische casus is:
--path-exclude=/usr/share/doc/* --path-include=/usr/share/doc/*/copyright
om alle documentatiebestanden op de copyrightbestanden na te verwijderen.
Deze twee opties kunnen meermaals opgegeven en afwisselend ingevoegd worden. Ze worden allebei in de opgegeven volgorde verwerkt, waarbij de laatste regel die een overeenkomst met een bestandsnaam oplevert, de uiteindelijke beslissing geeft.
De filters worden toegepast bij het uitpakken van de binaire pakketten en hebben als zodanig enkel weet van het type object dat op dat ogenblik gefilterd wordt (bijv. een gewoon bestand of een map) en hebben geen zicht op welke objecten nadien zullen komen. Omdat deze filters neveneffecten hebben (in tegenstelling tot find(1)-filters), zal het uitsluiten van een exacte padnaam, die toevallig een map-object, zoals /usr/share/doc, blijkt te zijn, niet het gewenste effect hebben en zal enkel die padnaam uitgesloten worden (die automatisch terug toegevoegd kan worden als de code dit noodzakelijk acht). Van alle erop volgende bestanden die zich in die mappen bevinden, zal het uitpakken mislukken.
Suggestie: zorg ervoor dat de glob-patronen niet weggewerkt worden door uw shell.
Momenteel is rpm de enige ondersteunde indeling van de uitvoer. Ze bestaat uit een regel voor elk pad waarvoor een toets mislukte. De regels beginnen met 9 tekens om van iedere specifieke toets het resultaat te rapporteren, waarbij een ‘?’ betekent dat de toets niet uitgevoerd kon worden (ontbrekende ondersteuning, bestandspermissies, enz.), een ‘.’ betekent dat de toets slaagde en een alfanumeriek teken betekent dat een specifieke toets mislukte. Een mislukte toets van de md5-controlesom (de inhoud van het bestand werd gewijzigd) wordt aangegeven met een ‘5’ op de plaats van het derde teken. De regel wordt gevolgd door een spatie en een attribuutteken (momenteel ‘c’ voor conffiles (configuratiebestanden)), nog een spatie en de padnaam.
De andere bestanden worden hieronder weergegeven in hun standaardmap. Zie de optie --admindir om te weten hoe u de locatie van deze bestanden kunt wijzigen.
Dagelijks wordt een reservekopie van het statusbestand gemaakt in /var/backups. Die kan nuttig zijn mocht het bestand verloren gegaan zijn of beschadigd ten gevolge van problemen met het bestandssysteem.
De indeling en de inhoud van een binair pakket worden beschreven in deb(5).
--no-act geeft gewoonlijk minder informatie dan nuttig kan zijn.
Om de geïnstalleerde pakketten op te sommen die verband
houden met de editor vi(1) (merk op dat dpkg-query standaard
niet langer het bestand available laadt en dat in de plaats daarvan
daarvoor de optie dpkg-query --load-avail gebruikt moet
worden):
dpkg -l '*vi*'
Om de items uit /var/lib/dpkg/available over twee pakketten
te zien:
dpkg --print-avail elvis vim | less
Om zelf in de lijst van pakketten te zoeken:
less /var/lib/dpkg/available
Om een geïnstalleerde pakket elvis te verwijderen:
dpkg -r elvis
Om een pakket te installeren moet u het eerst zoeken in een
archief of op een CD. Het bestand available laat zien dat het pakket
vim zich in de sectie editors bevindt:
cd /media/cdrom/pool/main/v/vim
dpkg -i vim_4.5-3.deb
Om een lokale kopie te maken van de pakketselectietoestand:
dpkg --get-selections >myselections
U zou dit bestand kunnen overbrengen naar een andere computer en
nadat u daar het bestand available bijgewerkt hebt met het frontend
voor pakketbeheer van uw voorkeur (zie
https://wiki.debian.org/Teams/Dpkg/FAQ voor meer details), bijvoorbeeld:
apt-cache dumpavail | dpkg --merge-avail
of met dpkg 1.17.6 of vroegere versies:
avail=`mktemp`
apt-cache dumpavail >"$avail"
dpkg --merge-avail "$avail"
rm "$avail"
kunt u het installeren met:
dpkg --clear-selections
dpkg --set-selections <myselections
Merk op dat dit eigenlijk niet echt iets installeert of verwijdert, maar enkel de selectiestatus voor de gevraagde pakketten instelt. U heeft een andere toepassing nodig om de gevraagde pakketten echt te downloaden en te installeren. Voer bijvoorbeeld apt-get dselect-upgrade uit.
U zult ondervinden dat dselect(1) gewoonlijk een meer comfortabele manier biedt om de selectiestatus van pakketten te wijzigen.
U kunt bijkomende functionaliteit verkrijgen door het installeren van elk van de volgende pakketten: apt, aptitude en debsums.
aptitude(1), apt(1), dselect(1), dpkg-deb(1), dpkg-query(1), deb(5), deb-control(5), dpkg.cfg(5), en dpkg-reconfigure(8).
Zie /usr/share/doc/dpkg/THANKS voor een lijst van mensen die bijgedragen hebben aan dpkg.
2022-05-24 | 1.19.8 |