Debian

Debian-Paketsuche

Debian-Paketsuche

Debian 9, mit dem Codenamen 'Stretch', hat ein riesiges Repository von über 68.000 Paketen. Ob Spiele, Schriftarten, Editoren, Datenbanken oder Entwicklungstools, dort werden Sie wahrscheinlich fündig. Der Schlüssel ist jedoch, finden es. Wenn Sie nicht den genauen Paketnamen kennen, ist das Auffinden eines bestimmten Pakets in einem so großen Repository wie die Suche nach der Nadel im Heuhaufen. Manchmal unterscheidet sich der Paketname vom Namen des Programms. So wird beispielsweise iostat, ein nützliches Programm zum Berichten von CPU- und Festplatten-E/A-Statistiken, unter dem Namen sysstat verpackt. In anderen Fällen kennen Sie weder den Paketnamen noch den Befehlsnamen. Stattdessen kennt man nur seine Funktion, was es tun soll.

Um nach Paketen zu suchen, gibt es mehrere Methoden mit unterschiedlicher Leistungsfähigkeit und Benutzerfreundlichkeit. Die Debian-Website enthält eine Liste aller Debian-Pakete. Sie können also die Suchfunktion Ihres Browsers verwenden oder die Liste als komprimierte Textdatei herunterladen und grep verwenden. In jedem Fall ist viel manuelle Arbeit erforderlich, um die Liste zu filtern. Die gute Nachricht ist, dass leistungsstarke automatisierte Tools verfügbar sind, um die Filterung zu beschleunigen.

Debian bietet sowohl grafische als auch Befehlszeilen-Paketmanager zum Suchen und Filtern von Paketen. GUI-basierte Tools wie Synaptic zeichnen sich im Allgemeinen durch ihre Benutzerfreundlichkeit aus. Allerdings ist nicht auf allen Maschinen, insbesondere auf Produktionsservern, der grafische Desktop installiert. Für diese Maschinen ist Synaptic einfach keine Option. In diesem Beitrag konzentrieren wir uns auf Befehlszeilentools zur Suche nach Debian-Paketen.


Hintergrundinformation

Debian-Systemadministratoren definieren die Quellen von Paketen in der Datei /etc/apt/sources.aufführen. Unter anderem legt die Datei fest, dass nur Pakete einer bestimmten Debian-Version (z.G., Stretch vs Buster) und aus bestimmten Komponentenkategorien (z.G., main, contrib und non-free) können heruntergeladen werden. Metadaten aller berechtigten Pakete werden über den Befehl apt-get update in den lokalen Paket-Cache heruntergeladen.

Vorgelagerte Paketbetreuer können jederzeit Pakete hinzufügen und entfernen. Um sicherzustellen, dass Ihr lokaler Paketcache über die neuesten Metadateninformationen verfügt, sollten Sie den Cache aktualisieren ('apt-get update'), bevor Sie eine Suche durchführen.

Nun, da Sie bereit sind zu suchen, können Sie dies als normaler Benutzer tun. Es ist nicht erforderlich, root zu werden, um eine Suche auszuführen. Dies liegt daran, dass eine Suche lediglich Abfragen, keine Änderungen am Paketcache durchführt. Darüber hinaus muss die Maschine nicht einmal online sein, da die Suchbefehle nur auf den lokalen Cache zugreifen, nicht auf Remote-Repositorys.

Der Umfang einer Suche beschränkt sich auf das, was in den Quellen angegeben ist.Listendatei. Wenn die Datei beispielsweise nur Haupt- und Beitragskomponentenpakete zulässt, werden Ihre Suchen keine unfreien Pakete zurückgeben.

Zusammenfassen:

  1. Bevor Sie eine Suche ausführen, führen Sie 'apt-get update' aus, um den Paketcache zu aktualisieren refresh.
  2. Sie können einen Suchbefehl als normaler Benutzer ausführen (keine Root-Berechtigung erforderlich).
  3. Es ist keine Internetverbindung erforderlich, um einen Suchbefehl auszuführen.
  4. Suchergebnisse sind auf den durch die Quellen definierten Umfang beschränkt.Listendatei.

apt-cache

Wenn Sie den Paketnamen kennen, wenn auch teilweise, können Sie den teilweisen Namen als Argument für einen regulären Ausdruck an apt-cache übergeben. Zum Beispiel wissen Sie, dass der Paketname eine Variation des Themas dos to Unix ist, wie z. B. dostounix, dos2unix, dos-to-unix usw. Der Suchbefehl und seine Ausgabe lauten wie folgt:

$ apt-cache search --names-only dos.+unix
dos2unix - Zeilenenden von Textdateien zwischen CRLF und LF konvertieren

Anmerkungen:

  1. -name-only (oder kurz -n) gibt an, dass nur Paketnamen, keine Beschreibungen, abgeglichen werden. (Der Standardwert ist sowohl Name als auch Beschreibung.)
  2. DOS.+unix ist ein regulärer Ausdruck, der dem Paketnamen dos2unix entspricht matches. Syntaxhilfe finden Sie unter regex(7).

Was tun, wenn Sie nur wissen, was das Paket tut, d. h.e., seine Funktion, aber nicht sein Name? In diesem Fall suchen Sie ein Programm zum Konvertieren von Textdateien aus dem DOS-Format nach UNIX. Der zu verwendende Suchbefehl und seine Ausgabe sind die folgenden:

$  apt-Cache-Suche konvertieren dos Unix
dos2unix - Zeilenenden von Textdateien zwischen CRLF und LF konvertieren
flip - Zeilenenden von Textdateien zwischen Unix- und DOS-Formaten konvertieren
Fondu - zwischen Mac- und UNIX-Schriftformaten konvertieren
tofrodos - Konvertiert DOS <-> Unix-Textdateien, Alias ​​tofromdos

Standardmäßig versucht apt-cache, die Suchschlüsselwörter sowohl mit dem Paketnamen als auch mit der langen Beschreibung des Pakets abzugleichen. Die Hoffnung hier ist, dass die funktionalen Schlüsselwörter mit den Wörtern übereinstimmen, die der Paketbetreuer in seiner langen Beschreibung verwendet uses. Beachten Sie, dass mehrere Schlüsselwörter (convert, dos, unix) UND-verknüpft werden.

geeignet

Der Befehl apt ist ein neueres Paketverwaltungstool, das die grundlegenden Funktionen von apt-get und apt-cache zusammenführt. Es ist so konzipiert, dass es interaktiv und nicht in einem Skript verwendet wird. Zum Beispiel wird die apt-Ausgabe eingefärbt, um die Lesbarkeit zu verbessern. Abgesehen von der Ästhetik teilen die Befehle apt und apt-cache eine ähnliche Syntax, einschließlich Befehlsoptionen.

Im folgenden Beispiel wird nach einem Paket gesucht, indem der reguläre Ausdruck dos abgeglichen wird.+Unix, nur gegen Paketnamen (standardmäßig gegen Name und Beschreibung).

$  apt search --names-only dos.+unix
Sortieren… Fertig
Volltextsuche… Fertig
dos2unix/stable, jetzt 7.3.4-3 AMD64 [installiert]
Konvertieren Sie die Zeilenenden der Textdatei zwischen CRLF und LF

apt-Datei

Obwohl apt-cache (und apt) Ihnen bei der Suche nach einem Paket helfen kann, indem es funktionale Schlüsselwörter abgleicht, ist die Suche oft ein Hit und Miss. Der Erfolg hängt zu sehr davon ab, wie der Paketbetreuer die lange Beschreibung des Pakets schreibt. In Wirklichkeit kennen Sie jedoch möglicherweise zusätzliche Informationen über das Paket, z. B. den Namen des Befehls oder eine im Paket enthaltene Datei. Das zu verwendende Tool ist dann apt-file.

Der Befehl apt-file ist auf einem Debian-System standardmäßig nicht installiert. Führen Sie zum Installieren als Root aus:

$ apt-get apt-Datei installieren

Bevor Sie apt-file zum ersten Mal ausführen, aktualisieren Sie den Paketcache, indem Sie den lokalen Paketcache aktualisieren ('apt-get update').

Angenommen, Sie möchten das Paket finden, das den Befehl iostat enthält. Der zu verwendende Befehl und die abgekürzte Ausgabe lauten wie folgt:

$ apt-Dateisuche iostat
…   <12 lines snipped>…
Linux-Handbuch-4.9: /usr/share/man/man9/rpc_count_iostats_metrics.9.gz
Linux-Handbuch-4.9: /usr/share/man/man9/rpc_free_iostats.9.gz
manpages-fr-extra: /usr/share/man/fr/man8/nfsiostat.8.gz
munin-plugins-extra: /usr/share/munin/plugins/iostat
munin-plugins-extra: /usr/share/munin/plugins/iostat_ios
nagios-plugin-check-multi: /usr/share/doc/nagios-plugin-check-multi/examples/nagiostats.cmd
nfs-gemeinsam: /usr/sbin/nfsiostat
nfs-common: /usr/share/man/man8/nfsiostat.8.gz
nixstatsagent: /usr/lib/python2.7/dist-packages/nixstatsagent/plugins/iostat.py
sysstat: /usr/bin/cifsiostat
sysstat: /usr/bin/iostat
sysstat: /usr/share/man/man1/cifsiostat.1.gz
sysstat: /usr/share/man/man1/iostat.1.gz
zsh-common: /usr/share/zsh/functions/Completion/Unix/_iostat

apt-file funktioniert, indem es das Argument iostat als Teilzeichenfolge mit den Pfadnamen aller Dateien in einem Paket abgleicht. Die obige Suche liefert 46 Treffer, d.h.e., Insgesamt 46 Dateien im lokalen Cache enthalten iostat in ihren Pfadnamen, was viel manuell zu untersuchen ist.

Um die Suche einzugrenzen, wandeln Sie das Argument in einen regulären Ausdruck um, indem Sie das Flag -x verwenden.

$  apt-file -x  search   '/iostat$'
munin-plugins-extra: /usr/share/munin/plugins/iostat
sysstat: /usr/bin/iostat

Der reguläre Ausdruck /iostat$ stimmt nur mit Pfadnamen überein, die genau auf iostat . enden. Informationen zur Syntax für reguläre Ausdrücke finden Sie unter perlreref(1).

Die neue Ausgabe hat nur 2 Treffer, und Sie können schnell den Namen des Pakets (sysstat) ablesen, das den Befehl iostat enthält contains.


Fazit

Linux-Distributionen im Allgemeinen und Debian im Besonderen sind für ihre riesigen offiziellen Paket-Repositorys bekannt. Aber unter Zehntausenden von Paketen das gewünschte zu finden, kann eine ziemliche Herausforderung sein. Seien Sie versichert, dass Sie den genauen Paketnamen nicht kennen müssen. Die Befehle apt-cache und apt können Pakete basierend auf Schlüsselwörtern in der Paketbeschreibung filtern. Wenn Sie den Namen der Binärdatei des Programms kennen, kann der Befehl apt-file alternativ dazu verwendet werden, um Pakete zu identifizieren, die eine Datei mit demselben Namen enthalten.

Shadow of the Tomb Raider für Linux Tutorial
Shadow of the Tomb Raider ist die zwölfte Erweiterung der Tomb Raider-Reihe – ein Action-Adventure-Franchise von Eidos Montrealdos. Das Spiel wurde vo...
So steigern Sie die FPS unter Linux?
FPS steht für Bilder pro Sekunde. Die Aufgabe von FPS besteht darin, die Bildrate bei Videowiedergaben oder Spielleistungen zu messen. In einfachen Wo...
Top Oculus App Lab-Spiele
Wenn Sie Besitzer eines Oculus-Headsets sind, müssen Sie über Sideloading informiert sein. Sideloading ist der Prozess der Installation von Inhalten, ...