Grafische packages managers zijn niet meer dan een frontend voor verschillende commandline tools. Onder Debian (en afgeleide distributies) zijn dat de apt-tools, met apt-get en apt-cache (of het modernere aptitude) als bekendste voorbeelden. Maar Apt heeft veel meer in petto dan de grafische frontends ons doen geloven!

1. Cache opschonen

Apt bewaart van elk pakket dat je installeert het .deb-bestand in /var/cache/apt. Zo hoeft dat niet opnieuw gedownload te worden als je het pakket verwijdert en later opnieuw installeert. Maar na verloop van tijd wordt de Apt cache enkele gigabytes groot en dat geeft problemen op een VPS of embedded systeem met beperkte schijfruimte! Maar geen paniek: apt-get clean verwijdert alle pakketten uit de cache, terwijl apt-get autoclean enkel de nieuwste versie van elk pakket bewaart. Zo kun je die nog altijd snel herinstalleren. Maak een wekelijkse cronjob aan voor apt-get clean om te voorkomen dat de apt-cache nadien weer groeit.

2. Servers updaten

Op je desktop verschijnt er een notificatie in de taakbalk, zodra er updates beschikbaar zijn. Op een headless server is dat natuurlijk onmogelijk. Voor een beperkt aantal servers kun je apticron gebruiken om updates op te volgen. Apticron is een eenvoudig bash-script, dat via cron gestart wordt en je via e-mail op de hoogte brengt als er updates beschikbaar zijn. Standaard draait het script éénmaal per dag. Wil je vaker controleren op updates? Maak dan je eigen cronjob aan, die pakweg elk uur draait en vergeet niet om volgende optie aan te passen in /etc/apticron/apticron.conf:

*** LISTING 1 ***

DIFF_ONLY=”1″

*** EINDE LISTING 1 ***

Apticron stuurt dan enkel een e-mail als er nieuwe updates zijn sinds de laatste controle. Zonder die optie krijg je elk uur opnieuw een mail met alle updates, die nog niet geïnstalleerd zijn. Controleer ook of er een mailserver voor uitgaande e-mail geconfigureerd is of dat mails naar de root-gebruiker correct worden doorgestuurd naar jouw adres (in /etc/aliases).

3. Priorities

Hoewel de officiële package repository van Debian erg veel software bevat, wil je vroeg of laat misschien een pakket installeren uit een andere bron. Omdat verschillende repositories mogelijk dezelfde pakketten bevatten, moet Apt op één of andere manier uitvissen welke repository jij verkiest voor dat pakket. Daarvoor werkt Apt met zogenaamde prioriteiten. Indien er meerdere kandidaten zijn, selecteert Apt het pakket met de hoogste prioriteit. Zijn er twee of meerdere pakketten met dezelfde prioriteit, dan kiest Apt het pakket met het hoogste versienummer. Geïnstalleerde pakketten krijgen standaard prioriteit 100 en pakketten uit de repositories 500. Het commando apt-cache policy <pakketnaam> toont een kort overzicht van de geïnstalleerde en beschikbare versies van een bepaald pakket met de bijbehorende prioriteiten.

4. Third-party repositories

Gebruik je third-party repositories? Dan moet je in bepaalde omstandigheden de priority daarvan aanpassen. Stel dat je de repository van www.dotdeb.org wilt gebruiken voor packages, die niet in de repository van Debian zitten. DotDeb bevat echter ook recentere versies van LAMP-packages, zoals PHP. Voor je het weet wordt bij de volgende update de PHP-versie van Debian vervangen door die van DotDeb. Om dat te vermijden, moet je een prioriteit tussen 100 en 500 instellen voor DotDeb (zie Listing 2). Het resultaat? Voor pakketten in beide repositories verkiest Apt de versie van Debian zelf. Extra pakketten van Dotdeb weet Apt probleemloos te vinden in die repository. Aangezien DotDeb’s prioriteit hoger is dan 100, worden nadien ook alle updates van die pakketten netjes geïnstalleerd! Je kunt trouwens ook de prioriteit van individuele pakketten uit bepaalde repositories aanpassen (zie man apt_preferences voor enkele voorbeelden).

########## LISTING 2 ##########

cat /etc/apt/preferences

Package: *

Pin: release o=packages.dotdeb.org, n=wheezy

Pin-Priority: 200

########## EIND LISTING 2 ##########

5. Remove of purge?

Apt bevat twee methodes om software te verwijderen: remove en purge. Met apt-get (of aptitude) remove <pakketnaam> verwijder je een bepaald pakket van je systeem, maar de configuratiebestanden ervan blijven bewaard. Dat is handig als je het pakket later opnieuw zou installeren, want je kunt dan meteen verder met je oude configuratie. Maar let op: mocht je in de tussentijd die configuratiebestanden handmatig verwijderen, dan werkt het pakket niet correct na herinstallatie! Apt gaat er immers van uit dat de configuratiebestanden al aanwezig zijn en installeert die niet opnieuw. In dat geval moet je het pakket eerst volledig verwijderen met het purge-commando, zodat Apt bij herinstallatie óók de configuratiebestanden installeert. Met het volgend commando zie je welke verwijderde pakketten configuratiebestanden hebben achtergelaten op je systeem:

*** LISTING 3 ***

dpkg -l | grep ‘^rc’

*** EINDE LISTING 3 ***