Wer unter Ubuntu versucht eine Anwendung über das Terminal aufzurufen, die aktuell nicht auf dem Rechner installiert ist, der bekommt seit geraumer Zeit über command-not-found den Hinweis, welches Paket zu installieren wäre. So erspart man sich die Suchererei über apt-cache search suchbegriff und kann direkt das entsprechende Paket einspielen. Unter Arch-Linux gibt es diese Funktion nicht out of the box, sie lässt sich für die Bash- und Zsh-Shell allerdings ohne allzu großen Aufwand nachrüsten.

Pkgfile zeigt auf Wunsch wie bei Ubuntu welche Pakete installiert gehören.
Pkgfile zeigt auf Wunsch wie bei Ubuntu welche Pakete installiert gehören.

Wer command-not-found nicht kennt oder nur sehr selten zu einem Terminal greift, der versteht eventuell nicht, von was ich rede. Daher ein kurzes Beispiel: ruft ihr unter Arch eine Anwendung auf, die es theoretisch gibt, die aber noch nicht installiert ist. Dann bekommt ihr lediglich die Information, dass das Kommando nicht gefunden werden konnte. Ubuntu hingegen gibt die klare Ansage aus, welches Paket fehlt und liefert gleich das entsprechende Kommando mit, es aus den Paketquellen zu installieren.

user@arch:~$ htop
bash: htop: Kommando nicht gefunden.
user@ubuntu:~$ htop
Die Anwendung »htop« ist momentan nicht installiert. Sie können sie durch folgende Eingabe installieren:
sudo apt-get install htop

Die Funktion lässt sich nun aber auch unter Arch Linux nachrüsten (der Tipp sollte natürlich auch auf Arch-Derivaten wie Antergos oder Manjaro funktionieren). Dazu müsst ihr das Werkzeug Pkgfile auf eurem System installieren und die von euch eingesetzte Shell über ~/.bashrc oder~/.zshrc mit dem Aufruf des command-not-found-Handle von Pkgfile verbinden. Damit die Funktion ohne den Neustart des Terminal-Fensters aktiv wird, lasst ihr die Shell am Ende ihre Konfigurationsdatei neu einlesen.

### Pkgfile installieren und aktualisieren
$ sudo pacman -S pkgfile
$ sudo pkgfile --update
### Für automatischen Abgleich der Daten
$ sudo systemctl enable pkgfile-update.timer
### Für Bash-User
$ echo "source /usr/share/doc/pkgfile/command-not-found.bash" >> ~/.bashrc
$ source ~/.bashrc
### Für User mit der Zsh
$ echo "source /usr/share/doc/pkgfile/command-not-found.zsh" >> ~/.zshrc
$ source ~/.zshrc

Anschließend ist command-not-found umgehend aktiv und erscheint sobald ihr eine Anwendung aufruft, die noch nicht installiert wurde. Alternativ könnt ihr Pkgfile auch von Hand anschmeißen und so herausfinden über welches Paket eine Datei installiert werden könnte (pkgfile suchbegriff) oder welche Dateien ein Paket mitbringt, ohne es installieren zu müssen (pkgfile -l suchbegriff). Pkgfile sucht in allen Paketquellen, das Angebot des Arch Linux Repository AUR bleibt allerdings außen vor.

user@arch:~$ htop
htop may be found in the following packages:
extra/htop 1.0.3-2 /usr/bin/htop
user@arch:~$ pkgfile htop
extra/bash-completion
extra/htop
user@arch:~$ pkgfile -l htop
extra/htop /usr/
extra/htop /usr/bin/
extra/htop /usr/bin/htop
[...]
extra/htop /usr/share/pixmaps/
extra/htop /usr/share/pixmaps/htop.png

5 Kommentare

  1. Hi,

    leider funktioniert die Anleitung nicht mit Manjaro. Der Grund:

    pkgfile sucht auf den Spiegelservern nach Dateien mit der Endung .files, welche es auf den Manjaro-Servern aber gar nicht gibt.

    (Zitat aus dem Manjaro-Forum)

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein