Hoofdstuk 8. De gereedschappen voor het pakketbeheer in Debian

# Hoofdstuk 8. De gereedschappen voor het pakketbeheer in Debian

## 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/trixie`). 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.

Hoofdstuk 7. Grondbeginselen van het pakketbeheersysteem van Debian |  | Hoofdstuk 9. Uw Debian-systeem up-to-date houden