in howto

Welk package levert dit commando?

Zoeken naar de juiste informatie

terminal

Het gebeurt iedereen: je ziet in een tutorial, een script van een collega of gewoon in je shellhistory een commando staan dat je niet kent. Je probeert het uit te voeren en krijgt command not found. Logisch antwoord: even installeren. Maar... welk package moet je dan installeren? De naam van het commando en de naam van het package komen namelijk lang niet altijd overeen.

Andersom kom je dat probleem ook tegen. Je hebt ooit iets geïnstalleerd om een commando als sar te kunnen gebruiken, en nu je het wilt opruimen weet je niet meer uit welk package het kwam. Gelukkig hoef je daar niet naar te gokken — elke pakketbeheerder kan je dat gewoon vertellen.

Scenario 1: het commando is er nog niet

Je wilt een commando installeren, maar weet niet welk package het levert. Hier verschilt de aanpak een beetje per distributie.

Debian/Ubuntu: command-not-found

Op de meeste Debian- en Ubuntu-systemen krijg je automatisch een hint als je een onbekend commando intikt:

$ sar
Command 'sar' not found, but can be installed with:
sudo apt install sysstat

Werkt dit niet (bijvoorbeeld in een minimale installatie of een container), dan kun je zelf zoeken met apt-file:

sudo apt install apt-file
sudo apt-file update
apt-file search bin/sar

Fedora/RHEL: dnf provides

Op Fedora en RHEL-achtige systemen gebruik je dnf provides (of het oudere repoquery):

dnf provides '*/sar'

Dit doorzoekt de metadata van alle repositories en vertelt je precies welk package het bestand sar ergens onder /usr/bin of /usr/sbin plaatst.

Arch: pkgfile of pacman -F

Op Arch Linux zoek je met pacman -F (nadat je eenmalig de bestandsdatabase hebt gedownload):

sudo pacman -Fy
pacman -F sar

In alle drie de gevallen krijg je dezelfde conclusie: sar zit in het package sysstat. Dat pakket levert trouwens ook iostat en mpstat, en de achtergronddienst die historische data verzamelt voor latere analyse.

Scenario 2: het commando staat er al, maar je weet niet van wie

Dit is net zo'n veelvoorkomend moment: het commando werkt prima, maar je twijfelt of je het zelf hebt geïnstalleerd, of dat het als afhankelijkheid van iets anders is meegekomen. In dat geval vraag je niet de repository, maar je eigen systeem wie de eigenaar is van dat bestand.

Debian/Ubuntu

dpkg -S $(which sar)
# sysstat: /usr/bin/sar

Fedora/RHEL

rpm -qf $(which sar)
# sysstat-12.6.1-1.fc40.x86_64

Arch

pacman -Qo $(which sar)
# /usr/bin/sar is owned by sysstat 12.7.6-1

which sar zoekt het volledige pad van het commando op (bijvoorbeeld /usr/bin/sar), en de pakketbeheerder vertelt je vervolgens welk geïnstalleerd package dat bestand daar heeft neergezet. Geen giswerk, geen Google nodig.

En dan opruimen

Zodra je de packagenaam hebt, is verwijderen weer gewoon je vertrouwde commando:

sudo apt remove sysstat        # Debian/Ubuntu
sudo dnf remove sysstat        # Fedora/RHEL
sudo pacman -R sysstat         # Arch

Let er wel op dat je niet per ongeluk iets verwijdert waar andere software van afhankelijk is. apt remove en dnf remove waarschuwen je daar netjes voor; bij pacman -R kun je dat vooraf checken met:

pacman -Qi sysstat | grep "Required By"

Staat daar iets anders dan "None", dan trek je waarschijnlijk een ander programma mee onderuit als je toch doorzet.

Kort samengevat

VraagDebian/UbuntuFedora/RHELArch
Welk package levert commando X (nog niet geïnstalleerd)?apt-file searchdnf provides '*/X'pacman -F X
Welk package heeft dit bestand geïnstalleerd?dpkg -S $(which X)rpm -qf $(which X)pacman -Qo $(which X)
Package verwijderenapt remove pkgdnf remove pkgpacman -R pkg

Het mooie is: dit zijn geen trucjes, dit is gewoon ingebouwde functionaliteit van elke pakketbeheerder. Je hoeft het alleen één keer te weten — en dan blijft "welke package was dat ook alweer?" voorgoed verleden tijd.

Heb jij ooit een commando ontdekt en achteraf verbaasd gestaan over welk package het meebracht?

pakketbeheeraptdnfpacmantip

Nog geen reacties

Reactie plaatsen

Reacties worden na moderatie gepubliceerd.