Wat is er allemaal geïnstalleerd?

Met package managers kun je makkelijk software installeren en weer verwijderen. Maar dat laatste gebeurt volgens ons steevast te weinig. Wanneer heb jij voor het laatst nagekeken wat er precies allemaal op jouw systemen geïnstalleerd is? En of je die software écht allemaal nodig hebt? [Filip Vervloesem]

De meeste distributies bevatten na installatie al een behoorlijk aantal pakketten. De ontwikkelaars proberen een mooi geheel samen te stellen van programma’s die voor de meeste mensen nuttig zijn én drivers die je op de meeste hardware nodig hebt. Heb je specifieke eisen, dan installeer je nadien gewoon extra software. Maar vergeet niet dat je een groot deel van de standaardsoftware ook gewoon mag verwijderen! Uiteraard moet wel afblijven van de systeemcomponenten, maar meestal wordt het vrij snel duidelijk welke pakketten je beter niet verwijdert. Probeer je een pakket te verwijderen waarop erg veel andere pakketten steunen, dan toont de package manager een duidelijke waarschuwing dat je dat beter niet doet. Probeer maar eens een het pakket “libc6” te verwijderen om te zien wat we bedoelen (maar annuleer die opdracht dan ook meteen)!

Servers

Op een desktop of laptop maakt het meestal niet zoveel uit dat er overbodige software geïnstalleerd is. Opslagruimte is toch goedkoop en je systeem wordt er zelden trager door. Voor servers is het daarentegen wél nuttig om alle overbodige rommel van het systeem te verwijderen. Vanuit beveiligingsoogpunt is het immers beter om zo weinig mogelijk software te installeren. Elk pakket vormt namelijk een extra risico op beveiligingslekken. Je zult niet de eerste beheerder zijn die verbaasd ontdekt dat een systeem kwetsbaar is door een programma dat je niet gebruikt en waarvan je niet eens wist dat het überhaupt geïnstalleerd was! Een bijkomend voordeel is dat je minder opslagruimte nodig hebt én dat je minder vaak beveilingsupdates moet installeren. Maar ook op een Raspberry Pi thuis kan het zeker geen kwaad om eens te controleren of je alle geïnstalleerde pakketten wel nodig hebt.

Welke pakketten?

Voor de volgende commando’s gaan we ervan uit dat je op Debian/Ubuntu/Linux Mint werkt. Met “dpkg -l” of “apt list –installed” krijg je een lijst van alle geïnstalleerde pakketten te zien. Dpkg toont meteen ook een korte beschrijving van het pakket. Wil je vooral wat schijfruimte vrijmaken, dan kun je voor elk pakket de gebruikte opslagruimte (in kilobytes) opvragen én de resultaten sorteren volgens oplopende grootte met:

$ dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n

Automatisch of niet?

De uitvoer van “apt list” is dan weer handig om uit te zoeken waarom een bepaald pakket geïnstalleerd is. Bij sommige pakketten staat namelijk “[installed]” en bij andere pakketten “[installed,automatic]”. Die laatste zijn de pakketten die automatisch zijn geïnstalleerd omdat andere pakketten ervan afhangen. Pakketen zónder “automatic” zijn expliciet geïnstalleerd: ofwel tijdens de installatie van de distributie ofwel door jouw via een apt-commando. Het is vooral in die lijst dat je moet zoeken naar kandidaten om te verwijderen: je zult meteen begrijpen waarom.

Stel dat je ooit de Go programmeertaal geïnstalleerd hebt, maar ze nu niet meer gebruikt. Op je systeem vind je dan 1 pakket dat expliciet geïnstalleerd is (golang) en 7 pakketten die automatisch geïnstalleerd zijn. Verwijder je het golang-pakket, dan krijgen die 7 pakketten de status “auto-removable”. Aangezien je ze niet expliciet geïnstalleerd had, gaat apt ervan uit dat je ze kunt missen zodra je golang verwijderd hebt. Het commando “apt autoremove” stelt dan ook voor om die 7 pakketten te verwijderen. Het loont dus niet echt om de lijst van “automatic” pakketten te doorzoeken, omdat apt zelf al slim genoeg is om te weten wanneer die pakketten overbodig geworden zijn.