Effektive Paketsuche mit APT

Pakete

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.

Kommentare

9 Antworten zu „Effektive Paketsuche mit APT“

  1. Avatar von Detlef S
    Detlef S

    Interessanter Artikel, werde ich bei meiner nächsten Paketsuche mal anwenden, wenn ich mal auf anhieb nicht das finde, was ich suche. Geht auf jeden fall schneller, als über das Softwarecenter Gedöns.

    1. Avatar von MaximilianMustermann
      MaximilianMustermann

      Ich benutze synaptic. Lädt ganz fix.

      1. Avatar von detlef s
        detlef s

        Das nutze ich ich meist, wenn ich den genauen Paket-Name nicht Parat habe, ist ja quasi das Standart-Tool bei Debian, und deb-basierten Distros

  2. Avatar von Leser
    Leser

    Danke für den interessanten Artikel.
    Wo kann ich nachlesen, was Sonderzeichen wie ^ und $ aus dem Beispiel ‚apt search ^git$‚ bewirken?

  3. Avatar von kamome
    kamome

    aptitude (ohne parameter) finde ich besser, wenn ich interaktiv arbeiten will – mich durch Paketesuche und Beschreibungen hangeln oder mehrere Lösungsvorschläge für Abhängigkeiten durchblättern.
    Für direkte Arbeit mit einem Befehl im Terminal auch eher apt (insbesondere für die hier beschriebene einfache Suche).
    Aber auch für komplexere Suchen direkt im Terminal ist aptitude (meines Wissens) mächtiger (wenn die Kurzsyntax für mich auch weniger geläufig als die Regex bei apt):
    Alle Pakete aus gnome, die nicht installiert sind:

    aptitude search \!~i~sgnome
    

    Alle Pakete, die installiert sind, aber nicht aus stable:

    aptitude search "?narrow(?installed,?not(?archive(stable)))"
    
  4. Avatar von elk
    elk

    es muss 'apt-cache search' heissen, nicht 'apt cache search'. thx

    1. Avatar von Ferdinand

      Du hast recht, hab’s korrigiert.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert