Pakete

Effektive Paketsuche mit APT

Wer unter Debian lieber auf der Kommandozeile zu Hause ist als in der bunten Welt der GUIs, der wird seine Aufgaben der Paketverwaltung vermutlich mittels APT, Aptitude und DPKG erledigen. Was macht ihr, wenn ihr unter Debian ein Paket installieren wollt, aber den genauen Paketnamen nicht (mehr) wisst? Ich nutze dann apt search. Alternativ kann man auch apt-cache search nutzen, dass sich lediglich in der Formatierung der Ausgabe unterscheidet und eine sicherere Verwendung in Scripten gewährleistet als apt search.

Um effektiv nach Paketen suchen zu können, sind die vorhandenen Befehle ohne zusätzliche Parameter aber meist nicht besonders zielführend.

Ohne Eingrenzung untauglich

Wer schon einmal eine Suche nach

apt search git

gestartet hat, wird sich gewundert haben, dass er viele Treffer erhält, die vermeintlich nichts mit dem Suchbegriff zu tun haben. Das liegt daran, dass der Suchbegriff nicht weiter eingegrenzt wurde. Es werden Pakete gefunden, die den String git im Namen haben (also z. B. auch digital) oder bei denen git in der Paketbeschreibung vorkommt. Sucht man etwa mit diesem Befehl, so erhält man fast 10.000 Treffer

ft@blue:~$ apt search git | wc -l
9608

Zur Eingrenzung können reguläre Ausdrücke (Regex) zum Einsatz kommen. So sorgt

apt search ^git$

dafür, dass ein Paket gesucht wird, das mit g beginnt, mit einem i fortfährt und mit einem t endet. Das begrenzt die Suche auf genau diesen Suchbegriff. Möchte man aber auch zusammengesetzte Paketnamen wie etwa qgit oder libnoggit-java finden, so empfiehlt sich

apt search --names-only git | less

oder verkürzt

apt search -n git | less

um alle Vorkommen zu finden, die git im Namen haben. Damit reduziert sich die Zahl der Treffer immerhin um die Hälfte im Vergleich zur Suche ohne -n auf ~ 5.000. Zur besseren Übersicht wurde hier der Pager less genutzt.

Wenn wir uns nicht genau an den Paketnamen erinnern, können auch zwei Suchbegriffe kombiniert werden. Schauen wir einmal, was das mit und ohne -n bewirkt:

ft@blue:~$ apt search lint rpm
Sortierung… Fertig
Volltextsuche… Fertig
cmake-fedora/unstable,testing 2.7.2-1 all
  Set of scripts and cmake modules that simplify the release process

debaux/unstable,testing 0.1.12-1.1 all
  Debian-Hilfsprogramme

rpmlint/unstable 1.11-0.2 all
  RPM package checker

Und nun mit -n:

ft@blue:~$ apt search -n lint rpm
Sortierung… Fertig
Volltextsuche… Fertig
rpmlint/unstable 1.11-0.2 all
  RPM package checker

Ist der Name gänzlich entfallen, aber eine Kategorie bekannt, so können wir auch danach suchen:

apt search metasearch engine
Sortierung… Fertig
Volltextsuche… Fertig
python3-searx/unstable,testing 0.18.0+dfsg1-1 all
  Privacy-respecting metasearch engine - library package

searx/unstable,testing 0.18.0+dfsg1-1 all
  Privacy-respecting metasearch engine

Wenn ihr wissen wollt, ob die Fundstelle auch dem gesuchten Paket entspricht, so hilft euch die Ausgabe der Paketbeschreibung mit apt show [Paketname] weiter.

Nur am Rande

Ein Dauerbrenner in Debian-Foren und Chats ist die Diskussion, ob apt oder aptitude das bessere Werkzeug als Frontend für DPKG ist, denn aptitude bietet sogar eine mächtigere Suche. Die Frage stellt sich für mich so allerdings nicht, da ich über die Jahre festgestellt habe, dass aptitude bei Upgrades in Debian Stable gut funktioniert, während es bei schnell wechselnden Paketbeständen oft klüger ist als es sein sollte und apt oft besser mit der Auflösung komplizierter Upgrade-Situationen klarkommt als aptitude. Letzteres nutze ich nur, wenn ich komplexe Abfragen tätigen muss. So listet etwa der Befehl

aptitude search '?narrow(?installed, !?archive(stable))'

nur Pakete auf, die aus einem anderen Zweig als Stable installiert wurden.

Teilt den Beitrag, falls ihr mögt

9 Kommentare
Newest
Oldest Most Voted
Inline Feedbacks
View all comments