Hoofdstuk 8. De gereedschappen voor het pakketbeheer in Debian

Inhoudsopgave

8.1. Welke programma's stelt Debian ter beschikking voor het beheren van zijn pakketten?
8.1.1. dpkg
8.1.2. APT
8.1.3. aptitude
8.1.4. synaptic
8.1.5. tasksel
8.1.6. Andere gereedschappen voor pakketbeheer
8.2. Debian beweert in staat te zijn een actief programma te kunnen opwaarderen. Hoe wordt dit gerealiseerd?
8.3. Hoe kan ik weten welke pakketten reeds geïnstalleerd zijn op deen Debian-systeem?
8.4. Hoe geef ik de bestanden weer van een geïnstalleerd pakket?
8.5. Hoe kan ik te weten komen welk pakket een gegeven bestand produceerde?
8.6. Waarom wordt 'foo-data' niet verwijderd als ik 'foo' de-installeer? Hoe zorg ik ervoor dat oude niet-gebruikte bibliotheekpakketten gewist worden?

8.1. Welke programma's stelt Debian ter beschikking voor het beheren van zijn pakketten?

Er bestaan verschillende gereedschappen die gebruikt worden voor het beheer van Debian-pakketten, gaande van grafische of tekstgebaseerde interfaces tot eenvoudig basisgereedschap voor het installeren van pakketten. Alle beschikbaar gereedschappen steunen op de basisgereedschappen om correct te functioneren en worden hier voorgesteld volgens aflopend complexiteitsniveau.

Het is belangrijk te weten dat de hogere gereedschappen voor pakketbeheer, zoals aptitude en synaptic, voor het beheren van de pakketten op het systeem steunen op apt dat zelf steunt op dpkg.

Zie Hoofdstuk 2. Pakketbeheer in Debian van het Referentiehandboek van Debian voor meer informatie over de hulpprogramma's voor pakketbeheer van Debian. Dit document is beschikbaar in verschillende talen en formaten, ziehet item over het Referentiehandboek van Debian in de overzichtspagina van gebruikershandleidingen van het Documentatieproject van Debian.

8.1.1. dpkg

Dit is het belangrijkste programma voor pakketbeheer. dpkg kan met verschillende opties uitgevoerd worden. Enkele vaak voorkomende toepassingen zijn:

  • Een overzicht vragen van alle opties: dpkg --help.

  • Het control-bestand (en andere informatie) afdrukken van een opgegeven pakket: dpkg --info foo_VVV-RRR.deb.

  • Een pakket installeren (met inbegrip van uitpakken en configureren) op het bestandssysteem van de harde schijf: dpkg --install foo_VVV-RRR.deb.

  • Een Debian-archief uitpakken (maar niet configureren) op het bestandssysteem van de harde schijf: dpkg --unpack foo_VVV-RRR.deb. Merk op dat deze bewerking het pakket niet noodzakelijk in een bruikbare toestand achterlaat. Mogelijk moeten sommige bestanden verder aangepast worden om behoorlijk te functioneren. Dit commando verwijdert een eventueel reeds geïnstalleerde versie van het programma en voert het preinst-script (zie Paragraaf 7.6, “Wat is een Debian preinst, postinst, prerm, en postrm script?”) uit dat bij het pakket hoort.

  • Een pakket dat reeds uitgepakt werd, configureren: dpkg --configure foo. Naast andere bewerkingen voert deze actie het postinst-script (zie Paragraaf 7.6, “Wat is een Debian preinst, postinst, prerm, en postrm script?”) uit dat bij het pakket hoort. Ze werkt ook de bestanden bij die vermeld worden in het bestand conffiles dat bij het pakket hoort. Merk op dat de bewerking 'configure' als argument de naam van een pakket (bijv. foo) nodig heeft en niet de naam van een archiefbestand van Debian (bijv. foo_VVV-RRR.deb).

  • Een enkel bestand met de naam "blurf" (of een groep bestanden met de naam "blurf*") extraheren uit een Debian-archief: dpkg --fsys-tarfile foo_VVV-RRR.deb | tar -xf - 'blurf*'.

  • Een pakket verwijderen (maar niet zijn configuratiebestanden): dpkg --remove foo.

  • Een pakket verwijderen (met inbegrip van zijn configuratiebestanden): dpkg --purge foo.

  • De installatietoestand weergeven van pakketten die de tekenreeks (of de reguliere expressie) "foo*" bevatten: dpkg --list 'foo*'.

8.1.2. APT

APT is het Advanced Package Tool (geavanceerd pakketgereedschap), een geavanceerde interface met het pakketsysteem van Debian, die voorziet in het programma apt-get. Het biedt hulpmiddelen voor de commandoregel die dienen voor het opzoeken en beheren van pakketten en voor het opzoeken van informatie over hen, evenals basistoegang tot alle functionaliteit van de bibliotheek libapt-pkg. Raadpleeg voor bijkomende informatie de gebruikershandleiding in /usr/share/doc/apt-doc/guide.html/index.html (daarvoor moet u het pakket apt-doc installeren).

Sinds Debian Jessie kregen sommige vaak gebruikte apt-get- en apt-cache-commando's een equivalent via het nieuwe programma apt. Dit houdt in dat sommige populaire commando's zoals apt-get update, apt-get install, apt-get remove, apt-cache search en apt-cache show nu ook gewoon via apt gebruikt kunnen worden, zoals apt update, apt install, apt remove, apt search, en apt show. Hierna volgt een overzicht van de oude en de nieuwe commando's:

 apt-get update             ->  apt update
 apt-get upgrade            ->  apt upgrade
 apt-get dist-upgrade       ->  apt full-upgrade
 apt-get install pakket     ->  apt install pakket
 apt-get remove pakket      ->  apt remove pakket
 apt-get autoremove         ->  apt autoremove
 apt-cache search tekst     ->  apt search tekst
 apt-cache policy pakket    ->  apt list -a pakket
 apt-cache show pakket      ->  apt show pakket
 apt-cache showpkg pakket   ->  apt show -a pakket

Het hulpprogramma apt voegt functionaliteit van apt-get en apt-cache samen en heeft standaard een leukere en gekleurde uitvoer, wat het voor mensen aangenamer maakt. Voor het gebruik in scripts en voor meer gevorderde toepassingen is apt-get nog steeds te verkiezen of vereist.

apt-get biedt een eenvoudige manier om aan de commandoregel pakketten uit verschillende pakketbronnen op te halen en te installeren. Anders dan dpkg heeft apt-get geen kennis over .deb-bestanden. Het werkt met de echte namen van de pakketten en kan enkel .deb-archieven installeren uit een pakketbron die in /etc/apt/sources.list vermeld staat. apt-get zal dpkg aanroepen onmiddellijk na het downloaden van de .deb-archieven uit de geconfigureerde pakketbronnen.

Enkele veel voorkomende toepassingen van apt-get zijn:

  • Om de lijst van de door uw systeem gekende pakketten bij te werken, gebruikt u het commando:

    apt update
    

    (u moet dit regelmatig gebruiken om uw pakketlijsten bij te werken)

  • Om het pakket foo en al zijn vereisten te installeren, gebruikt u het commando:

    apt install foo
    
  • Om het pakket foo van uw systeem te verwijderen, gebruikt u het commando:

    apt remove foo
    
  • Om het pakket foor en de configuratiebestanden ervan van uw systeem te verwijderen, gebruikt u het commando:

    apt purge foo
    
  • Om alle pakketten te toen waarvoor een nieuwere versie beschikbaar is, gebruikt u het comando:

    apt list --upgradable
    
  • Om alle pakketten op uw systeem op te waarderen (zonder extra pakketten te installeren of pakketten te verwijderen), gebruikt u het commando:

    apt upgrade
    
  • Om alle pakketten op uw systeem op te waarderen en, als dat nodig is voor het opwaarderen van een pakket, extra pakketten te installeren of pakketten te verwijderen, gebruikt u het commando:

    apt full-upgrade
    

    (Het commando upgrade behoudt een pakket op zijn geïnstalleerde verouderde versie als voor de opwaardering ervan de installatie van een bijkomend pakket nodig is om op die manier te voldoen aan een nieuwe vereiste. Het commando full-upgrade is minder conservatief.)

Merk op dat u als root (systeembeheerder) aangemeld dient te zijn om elk commando uit te voeren dat pakketten wijzigt.

Merk op dat apt-get nu ook standaard aanbevolen pakketten installeert. Omwille van zijn robuustheid is het ook het aanbevolen programma voor pakketbeheer aan de console bij het uitvoeren van de installatie van een systeem en van belangrijke opwaarderingen van het systeem.

De gereedschapssuite apt bevat ook het hulpprogramma apt-cache voor het doorzoeken van de pakketlijsten. U kunt het gebruiken om pakketten te zoeken die een specifieke functionaliteit bieden via een eenvoudige zoekopdracht met tekst of een reguliere expressie en via het doorzoeken van vereisten in het pakketbeheersysteem. Enkele gebruikelijke toepassingen van apt-cache zijn:

  • Alle pakketten vinden waarvan de beschrijving woord bevat:

    apt search woord
    
  • Gedetailleerde informatie over een pakket weergeven:

    apt show pakket
    
  • Weergeven welke pakketten een bepaald pakket vereist:

    apt-cache depends pakket
    
  • Gedetailleerde informatie weergeven over de beschikbare versies van een pakket en over de pakketten die het als vereiste hebben (reverse-dependency)

    apt-cache showpkg pakket
    

Installeer het pakket apt voor bijkomende informatie en lees apt(8), apt-get(8), sources.list(5) en installeer ook het pakket apt-doc en lees /usr/share/doc/apt-doc/guide.html/index.html.

8.1.3. aptitude

aptitude is een pakketbeheerprogramma voor Debian GNU/Linux-systemen dat een frontend biedt voor de pakketbeheerinfrastructuur van apt. aptitude is een op tekst gebaseerde interface die gebruik maakt van de curses-bibliotheek. Acties kunnen uitgevoerd worden in de visuele interface of aan de commandoregel.

aptitude kan gebruikt worden om beheertaken op een snelle en gemakkelijke manier uit te voeren. Het laat de gebruiker toe de pakketlijst te bekijken en pakketbeheertaken, zoals het installeren, opwaarderen en verwijderen van pakketten, uit te voeren.

aptitude biedt de functionaliteit van apt-get en heeft veel bijkomende functies:

  • aptitude biedt een gemakkelijke toegang tot alle versies van een pakket.

  • aptitude maakt het gemakkelijk om bij te houden welke software verouderd is door deze te vermelden onder "Verouderde en lokaal aangemaakte pakketten".

  • aptitude bevat een behoorlijk krachtig systeem voor het zoeken van een specifiek pakket en voor het instellen van beperkingen voor de weergave van pakketten. Gebruikers die met mutt vertrouwd zijn, zullen dit snel oppikken, vermits mutt de inspiratiebron vormde voor de gebruikte expressie-syntaxis.

  • aptitude kan gebruikt worden voor het installeren van de beschikbare voorgedefinieerde taken. Zie voor meer informatie Paragraaf 8.1.5, “tasksel”.

  • In de modus 'volledig scherm' beschikt aptitude over ingebouwde su-functionaliteit en kan het uitgevoerd worden door een gewone gebruiker. Het zal su aanroepen (en desgevallend om het wachtwoord van root vragen) indien u echt systeembeheerrechten nodig heeft.

U kunt aptitude via een visuele interface gebruiken (geef gewoon de opdtacht aptitude) of rechtstreeks aan de commandoregel. De gebruikte syntaxis aan de commandoregel is erg gelijkaardig aan die voor apt-get. Bijvoorbeeld, om het pakket foo te installeren kunt u de opdracht aptitude install foo gebruiken.

Meer op dat aptitude het programma is dat u bij voorkeur gebruikt voor het dagelijkse pakketbeheer aan de console.

Voor bijkomende informatie kunt u de man-pagina aptitude(8) lezen en het pakket aptitude-doc installeren.

8.1.4. synaptic

synaptic is een grafische pakketbeheerder. Het laat u toe softwarepakketten te installeren, op te waarderen en te verwijderen op een gebruikersvriendelijke manier. Naast de meeste functies die ook door aptitude geboden worden, biedt het ook een functie voor het bewerken van de lijst van gebruikte pakketbronnen en ondersteunt het het doorbladeren van alle beschikbare informatie over een pakket. Zie de Website van Synaptic voor bijkomende informatie.

8.1.5. tasksel

Indien u een specifieke taak wenst uit te voeren, kan het moeilijk zijn om het passende geheel van pakketten te vinden dat aan uw behoeften beantwoordt. De ontwikkelaars van Debian hebben daarom tasks (taken) gedefinieerd. Een 'task' is een verzameling van verschillende individuele Debian-pakketten die alle verband houden met een specifieke activiteit. Het installeren van 'tasks' kan uitgevoerd worden met het programma tasksel of met aptitude.

Gewoonlijk zal het installatiesysteem van Debian automatisch de taak installeren voor een standaardsysteem en een desktopomgeving. Welke specifieke desktopomgeving geïnstalleerd wordt, hangt af van de gebruikte CD/DVD-media. Het meest gebruikelijk is de desktop van GNOME (taak gnome-desktop). Ook kunnen er op basis van uw keuzes tijdens het installatieproces nog andere taken automatisch geïnstalleerd worden op uw systeem. Bijvoorbeeld, indien u een andere taal dan het Engels selecteerde, zal ook de ermee verband houdende taak automatisch geïnstalleerd worden.

8.1.6. Andere gereedschappen voor pakketbeheer

8.1.6.1. dpkg-deb

Dit programma voert bewerkingen uit op Debian-archiefbestanden (.deb). Enkele courante toepassingen zijn:

  • Alle mogelijke opties opvragen: dpkg-deb --help.

  • Vaststellen welke bestanden een Debian-archiefbestand bevat: dpkg-deb --contents foo_VVV-RRR.deb)

  • De bestanden uit een opgegeven Debian-archief uitpakken naar een door de gebruiker opgegeven map: dpkg-deb --extract foo_VVV-RRR.deb tmp. Dit commando extraheert alle bestanden uit foo_VVV-RRR.deb en plaatst ze in de map tmp/. Dit is een handige manier om de inhoud van een pakket te onderzoeken in een welbepaalde map, zonder het pakket te installeren op het basisbestandssysteem.

  • De bestanden met controle-informatie extraheren uit een pakket: dpkg-deb --control foo_VVV-RRR.deb tmp.

Merk op dat pakketten die louter met dpkg-deb --extract uitgepakt werden, niet correct geïnstalleerd zullen zijn. U moet in de plaats daarvan dpkg --install gebruiken.

Meer informatie wordt verstrekt in de man-pagina dpkg-deb(1).

8.2. Debian beweert in staat te zijn een actief programma te kunnen opwaarderen. Hoe wordt dit gerealiseerd?

De kernel (het bestandssysteem) van Debian GNU/Linux-systemen ondersteunt het vervangen van bestanden, zelfs als ze in gebruik zijn.

We voorzien ook in een programma dat start-stop-daemon heet en dat gebruikt wordt om 'daemons' op te starten bij het opstarten van de computer of ze te stoppen als het 'runlevel' verandert (als bijvoorbeeld overgeschakeld wordt van meerdere-gebruikersmodus naar één-gebruikersmodus of naar halt). Hetzelfde programma wordt gebruikt door installatiescripts wanneer een nieuw pakket met een daemon geïnstalleerd wordt en dit om actieve daemons te stoppen en ze nadien, indien nodig, te herstarten.

8.3. Hoe kan ik weten welke pakketten reeds geïnstalleerd zijn op deen Debian-systeem?

Om de toestand te kennen van alle pakketten die op een Debian-systeem geïnstalleerd zijn, moet u het volgende commando uitvoeren:

dpkg --list

Dit produceert een samenvatting van één regel per pakket met een uit twee letters bestaand symbool dat de toestand weergeeft (toegelicht in de kopregel), de naam van het pakket, de geïnstalleerde versie en een korte beschrijving.

Om de toestand te kennen van pakketten waarvan het begin van de naam bestaat uit "foor", gebruikt u het commando:

dpkg --list 'foo*'

Om over een specifiek pakket een meer uitgebreid rapport op te vragen, geeft u de opdracht:

dpkg --status pakketnaam

8.4. Hoe geef ik de bestanden weer van een geïnstalleerd pakket?

Om alle bestanden weer te geven waarin door het geïnstalleerde pakket foo, gebruikt u het commando

dpkg --listfiles foo

Merk op dat de bestanden die aangemaakt worden door de installatiescripts niet weergegeven worden.

8.5. Hoe kan ik te weten komen welk pakket een gegeven bestand produceerde?

Om het pakket dat het bestand met de naam foo produceerde, te kennen, geeft u ofwel de volgende opdracht:

  • dpkg --search foo

    Dit zoekt foo op in geïnstalleerde pakketten. (Dit komt (momenteel) overeen met het doorzoeken van alle bestanden met de extensie .list in de map /var/lib/dpkg/info/, waarna de namen weergegeven worden van alle pakketten die het bestand en afgeleiden bevat.)

    Een sneller alternatief hiervoor is het gereedschap dlocate.

    dlocate -S foo
    
  • zgrep foo Contents-ARCH.gz

    Dit zoekt naar bestanden die de tekenreeks foo hebben in de naam van hun volledig pad. De bestanden Contents-ARCH.gz (waarbij ARCH staat voor de gewenste architectuur) staan in de hoofdpakketmappen (main, non-free, contrib) op een Debian archievensite (dit is onder /debian/dists/bullseye). Een Contents-bestand bevat enkel verwijzingen naar de pakketten die zich bevinden in zijn onderliggende mappenboom. Daardoor kan het zijn dat een gebruiker meer dan een Contents-bestand moet doorzoeken om het pakket te vinden dat het bestand foo bevat.

    Tegenover dpkg --search heeft deze werkwijze het voordeel dat het bestanden kan vinden in pakketten die momenteel niet geïnstalleerd zijn op uw systeem.

  • apt-file search foo

    Indien u het pakket apt-file geïnstalleerd heeft, zoekt dit commando net zoals in het voorgaande voorbeeld naar bestanden die de tekenreeks of de reguliere expressie foo hebben in de naam van hun volledig pad. Het voordeel tegenover het voorgaande voorbeeld is dat de Contents-ARCH.gz-bestanden niet moeten opgehaald worden, vermits het dit automatisch doet voor alle pakketbronnen die in /etc/apt/sources.list staan als u (als gebruiker root) de opdracht apt-file update geeft.

8.6. Waarom wordt 'foo-data' niet verwijderd als ik 'foo' de-installeer? Hoe zorg ik ervoor dat oude niet-gebruikte bibliotheekpakketten gewist worden?

Sommige pakketten werden opgesplitst in een programma-pakket ('foo') en een data-pakket (foo-data') (of in 'foo' en 'foo-doc'). Dit is het geval voor veel spellen, multimediatoepassingen en woordenboeken in Debian, omdat sommige gebruikers de ruwe data willen gebruiken zonder het programma te installeren, of omdat het programma gebruikt kan worden zonder de data zelf, hetgeen maakt dat 'foo-data' optioneel is.

Gelijkaardige situaties doen zich met bibliotheken voor: over het algemeen worden ze geïnstalleerd omdat pakketten van toepassingen ze vereisen. Als het pakket met de toepassing gewist wordt, blijft het bibliotheek-pakket mogelijk op het systeem. Welnu, als het pakket met de toepassing niet langer bijvoorbeeld libdb4.2 vereist, maar libdb4.3, kan het pakket libdb4.2 achterblijven op het systeem als hete pakket met de toepassing opgewaardeerd wordt.

In deze gevallen is 'foo-data' niet afhankelijk van 'foo' en als u dus het pakket 'foo' verwijdert, zal het door de meeste pakketbeheergereedschappen niet automatisch verwijderd worden. Hetzelfde is het geval voor de bibliotheekpakketten. Dit is nodig om circulaire vereisten te vermijden. Indien u echter apt-get (zie Paragraaf 8.1.2, “APT”) of aptitude (zie Paragraaf 8.1.3, “aptitude”) gebruikt als pakketbeheergereedschap, zullen deze automatisch geïnstalleerde pakketten opvolgen en de mogelijkheid bieden om ze te verwijderen als er op uw systeem geen pakketten meer overblijven die er gebruik van maken.