grep-dctrl(1) grep

Other Alias

grep-status, grep-available, grep-aptavail, grep-debtags

ÜBERSICHT

Befehl --copying|-C | --help|-h | --version|-V

Befehl [Optionen] Filter [ Datei …]

wobei Befehl entweder grep-dctrl, grep-status, grep-available, grep-aptavail oder grep-debtags ist.

BESCHREIBUNG

Das Programm grep-dctrl kann Fragen beantworten wie Was ist das Debian-Paket Foo?, Welche Version des Pakets Bar ist nun aktuell?, Welche Pakete betreut Max Mustermann?, Welche Pakete gehören irgendwie zur Programmiersprache Scheme? und mit etwas Hilfe Wer betreut die erforderlichen Pakete eines Debian-Systems?, wenn eine nützliche Eingabedatei gegeben ist.

Die Programme grep-available, grep-status, grep-aptavail und grep-debtags sind Aliase für (tatsächlich symbolische Verweise auf) grep-dctrl. Diese Aliase benutzen als ihre Standardeingabe die Dateien available und status von dpkg(1) beziehungsweise die Ausgabe von apt-cache dumpavail und debtags dumpavail.

grep-dctrl ist ein spezialisiertes grep-Programm, das für die Verarbeitung jeder Datei gedacht ist, die das Format einer Steuerdatei von Debian-Paketen hat, wie es von der Debian-Richtlinie beschrieben wird. Dies beinhaltet die status-Datei von dpkg und die Packages-Dateien auf einem Weitergabe-Medium (wie einer Debian-CD-ROM oder einer FTP-Site, die Debian bereitstellt).

Sie müssen auf der Befehlszeile einen Filter angeben. Der Filter definiert, welche Art von Absätzen (auch bekannt als Paket-Datensätze) ausgegeben werden. Ein einfacher Filter ist ein Suchmuster zusammen mit einigen Optionen, die es ändern. Mögliche Bestimmungswörter sind --eregex, --field, --ignore-case, --regex und --exact-match beziehungsweise ihre Gegenstücke aus einem einzelnen Buchstaben. Die Suche ist standardmäßig ein Vergleich fester Teilzeichenketten unter Berücksichtigung der Groß-/Kleinschreibung mit jedem Absatz (in anderen Worten, Paket-Datensatz) in der Eingabe. Mit geeigneten Bestimmungswörtern kann dies geändert werden: Die Suche kann unabhängig von der Groß-/Kleinschreibung sein und das Muster kann als erweiterter regulärer POSIX-Ausdruck betrachtet werden.

Filter können mit den Bindewörtern --and, --or und --not zu komplexeren Filtern kombiniert werden. Klammern (die normalerweise für die Shell maskiert werden müssen) können zur Gruppierung benutzt werden.

Standardmäßig werden die vollständig passenden Absätze auf der Standardausgabe ausgegeben; spezielle Felder können mit der Option -s für die Ausgabe ausgewählt werden.

Nach dem Filterausdruck kommen keine oder mehr Dateinamen. Der Dateiname - wird als Synonym für den Standardeingabe-Datenstrom benutzt. Die Dateien werden nacheinander, aber einzeln durchsucht; sie werden nicht zusammengehängt. In anderen Worten, impliziert das Ende einer Datei immer das Ende des aktuellen Absatzes.

Falls keine Dateinamen angegeben wurden, wird der Programmname benutzt, um eine Standardeingabedatei zu identifizieren. Die Programmnamen werden mit der Basisform des Namens des aktuellen Programms verglichen (das nullte Befehlszeilenargument, wenn Sie so wollen).

OPTIONEN

Angabe des Suchmusters

--pattern=Muster
gibt das Muster an, nach dem gesucht wird. Dieser Schalter wird im Allgemeinen nicht benötigt, da das Muster selbst angegeben werden kann. Muster, die mit einem Bindestrich (-) beginnen, müssen diesen Schalter jedoch benutzen, da sie sonst irrtümlich für Schalter gehalten würden.

Bestimmungswörter von einfachen Filtern

-F Feld,Feld, … | --field=Feld,Feld, …
beschränkt den Mustervergleich auf die angegebenen Felder. Mehrere Feldnamen in einer -F-Option oder mehrere -F-Optionen in einem einfachen Filter sind erlaubt. Die durch den Filter benannte Suche wird inmitten all der genannten Felder durchgeführt und sobald eines von ihnen passt, wird der ganze einfache Filter als passend angesehen.
Eine Feldangabe kann einen Doppelpunkt (:) enthalten. In einem solchen Fall wird der Teil bis zum Doppelpunkt als Name des Feldes genommen, das angezeigt wird, und der Teil nach dem Doppelpunkt als Name des Feldes, dessen Inhalt benutzt wird, falls das Feld leer ist, das angezeigt werden soll.
-P
Kürzel für -FPackage
-S
Kürzel für -FSource:Package
-e, --eregex
betrachtet das Muster des aktuellen einfachen Filters als einen erweiterten regulären POSIX-Ausdruck.
-r, --regex
betrachtet das Muster des aktuellen einfachen Filters als einen regulären Standard-POSIX-Ausdruck.
-i, --ignore-case
ignoriert bei der Suche nach einer Entsprechung zum aktuellen einfachen Filter die Groß-/Kleinschreibung.
-X, --exact-match
sucht eine exakte Entsprechung (im Gegensatz zur Entsprechung einer Teilzeichenkette) zum aktuellen einfachen Filter.
-w, --whole-pkg
sucht eine Entsprechung eines erweiterten regulären Ausdrucks zum vollständigen Paketnamen und schätzt die Syntax für Beziehungsfelder zwischen Paketen, wie Depends, Recommends, … Wenn dieser Schalter angegeben ist, sollten Sie sich keine Gedanken darüber machen, ob Unterpaketnamen wie »libpcre3« ebenfalls auf »libpcre3-dev« passen. Dieser Schalter impliziert (und ist inkompatibel mit) -e.
--eq
vergleicht, ob unter dem Debian-Versionsnummernsystem Gleichheit besteht. Falls das Muster oder das zu durchsuchende Feld keine gültige Debian-Versionsnummer ist, wird der Absatz als nicht passend angesehen. Als Sonderfall ist dies imstande, einzelne, nicht negative Ganzzahlen auf Gleichheit zu prüfen.
--lt
führt einen »strikt-weniger-als«-Vergleich unter dem Debian-Versionsnummernsystem durch. Falls das Muster oder das zu durchsuchende Feld keine gültige Debian-Versionsnummer ist, wird der Absatz als nicht passend angesehen. Als Sonderfall ist dies imstande, einzelne nicht negative Ganzzahlen auf Gleichheit zu prüfen.
--le
führt einen »weniger-oder-gleich«-Vergleich unter dem Debian-Versionsnummernsystem durch. Falls das Muster oder das zu durchsuchende Feld keine gültige Debian-Versionsnummer ist, wird der Absatz als nicht passend angesehen. Als Sonderfall ist dies imstande, einzelne nicht negative Ganzzahlen auf Gleichheit zu prüfen.
--gt
führt einen »strikt-größer-als«-Vergleich unter dem Debian-Versionsnummernsystem durch. Falls das Muster oder das zu durchsuchende Feld keine gültige Debian-Versionsnummer ist, wird der Absatz als nicht passend angesehen. Als Sonderfall ist dies imstande, einzelne nicht negative Ganzzahlen auf Gleichheit zu prüfen.
--ge
führt einen »größer-oder-gleich«-Vergleich unter dem Debian-Versionsnummernsystem durch. Falls das Muster oder das zu durchsuchende Feld keine gültige Debian-Versionsnummer ist, wird der Absatz als nicht passend angesehen. Als Sonderfall ist dies imstande, einzelne nicht negative Ganzzahlen auf Gleichheit zu prüfen.

Filter kombinieren

-!, --not, !
passt, falls der folgende Filter nicht passt.
-o, --or
passt, wenn entweder der vorhergehende, der folgende oder beide Filter passen.
-a, --and
passt, wenn sowohl der vorhergehende als auch der folgende Filter passt.
()
Klammern können zum Gruppieren benutzt werden. Beachten Sie, dass sie für die meisten Shells maskiert werden müssen. Filterbestimmungswörter können vor der öffnenden Klammern angegeben werden; sie werden so behandelt, als wären sie für jeden einfachen Filter innerhalb der Klammern wiederholt worden.

Ausgabeformat-Bestimmungswörter

-s Feld,Feld, … | --show-field=Feld,Feld, …
zeigt nur den Rumpf dieser Felder von passenden Absätzen. Die Feldnamen dürfen keine Doppelpunkte oder Kommas enthalten. Kommas werden zum Begrenzen von Feldnamen im Argument dieser Option benutzt. Die Felder werden in der hier angegebenen Reihenfolge angezeigt. Siehe auch die Option -I. Beachten Sie, dass beim Fehlen der Option --ensure--dctrl, falls nur ein Feld ausgewählt wurde, kein Absatztrenner ausgegeben wird.
-I, --invert-show
kehrt die Bedeutung der Option -s um: zeigt nur die Felder, die nicht unter Benutzung der Option -s benannt wurden. Als ein Artefakt der Implementierung wird die Reihenfolge der Felder in den Originalabsätzen nicht aufbewahrt.

Eine Feldangabe kann einen Doppelpunkt enthalten. In einem solchen Fall wird der Teil bis zum Doppelpunkt als Name des Feldes genommen, das angezeigt wird, und der Teil nach dem Doppelpunkt als Name des Feldes, dessen Inhalt benutzt wird, falls das Feld, das angezeigt werden soll, leer ist.

-d
zeigt nur die erste Zeile des Feldes Beschreibung der passenden Absätze. Falls keine -s-Option angegeben ist, bewirkt diese Option außerdem -s Beschreibung; falls es dort eine -s-Option gibt, sie aber nicht den Feldnamen der Beschreibung enthält, wird der Option einer angehängt. Daher wird die Lage des Feldes Beschreibung in der Ausgabe durch die Option -s bestimmt, falls eine angegeben ist. Vorgabe ist das letzte Feld.
-n, --no-field-names
unterdrückt Feldnamen, wenn die angegebenen Felder angezeigt werden, nur ihr Inhalt wird angezeigt. Jedes Feld wird in seiner Originalform ohne den Feldnamen, den Doppelpunkt dahinter und ohne irgendwelche Leerräume vor dem Anfang des Inhalts ausgegeben.
-v, --invert-match
zeigt anstelle aller passende Absätze nur jene, die nicht passen.
-c, --count
zeigt anstelle aller passenden (oder mit -v nicht passenden) Absätze nur ihre Anzahl.
-q, --quiet, --silent
gibt nichts auf dem Standardausgabe-Datenstrom aus; wird stattdessen sofort nach den ersten Treffer beendet

Verschiedenes

--ensure-dctrl
stellt sicher, dass die Ausgabe im Dctrl-Format vorliegt und insbesondere, dass immer eine leere Zeile dort ist, um die Absätze zu trennen. Diese Option wird nicht berücksichtigt, falls die Option -n ausgewählt wurde, da diese Option absichtlich für die Ausgabe kein Dctrl-Format verlangt. In zukünftigen Versionen könnte die Verwendung dieser Option zum Standardverhalten werden.
--compat
setzt jede vorher auf der Befehlszeile angegebene --ensure-dctrl-Option außer Kraft.
--ignore-parse-errors
ignoriert Fehler beim Auswerten der Eingabe. Ein Absatz, der nicht ausgewertet werden kann, wird im Ganzen ignoriert und vom nächsten Absatz wird angenommen, dass er nach dem ersten Zeilenumbruch nach der fehlerhaften Stelle beginnt.
--debug-optparse
zeigt, wie die aktuelle Befehlszeile ausgewertet wurde.
-l Stufe, --errorlevel=Stufe
setzt die Protokollierungsstufe auf Stufe. Stufe ist entweder fatal, important, informational oder debug, aber Letzteres ist, abhängig von den Optionen zur Kompilierzeit, möglicherweise nicht verfügbar. Diese Kategorien sind hier in ihrer Reihenfolge angegeben; jede Nachricht, die ausgegeben wird, während fatal in Kraft ist, wird in der Fehlerstufe important ausgegeben und so weiter. Vorgabe ist important.
-V, --version
gibt Versionsinformationen aus.
-C, --copying
gibt die Copyright-Lizenz aus. Dies produziert eine große Ausgabe; stellen Sie sicher, dass Sie sie irgendwohin um- oder weiterleiten (wie etwa Ihren bevorzugten Dateibetrachter).
-h, --help
gibt eine Zusammenfassung von Hilfetexten aus.

BEISPIELE

Die nahezu einfachste Benutzung dieses Programms ist die Ausgabe des Status oder der verfügbaren Datensätze eines Pakets. In dieser Hinsicht ist grep-dctrl wie dpkg -s oder dpkg --print-avail. Um den Status-Datensatz des Pakets »mixal« anzuzeigen, geben Sie
% grep-status -PX mixal
ein und um seinen Verfügbarkeitsdatensatz zu erhalten, benutzen Sie
% grep-available -PX mixal
Eigentlich können Sie den Datensatz des Pakets »mixal« von jeder Debian-Steuerdatei abfragen. Angenommen, Sie haben die Datei Packages von der Debian-6.0-CD-ROM im aktuellen Verzeichnis; nun können Sie Folgendes ausführen:
% grep-dctrl -PX mixal Packages

Aber grep-dctrl kann mehr als nur dpkg nachzuahmen. Es kann mehr oder weniger apt-cache nachbilden! Dieses Programm hat eine Suchfunktion, die Paketbeschreibungen durchsucht. Aber Sie können auch dies tun:

% grep-available -F Description foo
sucht die Zeichenkette »foo« unter Berücksichtigung der Groß-/Kleinschreibung in allen verfügbaren Paketen. Falls Sie die Groß-/Kleinschreibung nicht berücksichtigen möchten, führen Sie Folgendes aus:
% grep-available -F Description -i foo
Ehrlich gesagt, sucht apt-cache auch Paketnamen. Es kann separat in den Namen suchen. Führen Sie Folgendes aus, um dies zu tun:
% grep-available -F Paket foo
oder
% grep-available -P foo
was so ungefähr das Gleiche ist. Es kann außerdem sowohl in Beschreibungen als auch in Namen gesucht werden; falls in einem von beiden etwas gefunden wird, wird der Paketdatendatz ausgegeben:
% grep-available -P -F Description foo
oder
% grep-available -F Package -F Description foo
Diese Art der Suche entspricht exakt dem, was apt-cache tut.

Hier nun etwas, was weder dpkg noch apt-cache kann: Suche nach einer Zeichenkette in der ganzen status- oder available-Datei (oder auch irgendeiner Debian-Steuerdatei) und Ausgabe aller Paketdatensätze, bei denen es einen Treffer gibt. Versuchen Sie

% grep-available dpkg
und beobachten Sie, wie gründlich dpkg Debian unterwandert hat.

Alle vorhergehenden Abfragen basieren auf der einfachen Suche nach Teilzeichenketten. Aber grep-dctrl kann reguläre Ausdrücke in Suchmustern handhaben. Um zum Beispiel die Statusdatensätze alle Pakete zu sehen, die entweder »apt« oder »dpkg« in ihrem Namen haben, benutzen Sie

% grep-status -P -e 'apt|dpkg'

Nun, nachdem all diese feinen und tollen Anfragen betrachtet wurden, sind Sie vielleicht gespannt, warum es nötig ist, immer den ganzen Absatz zu sehen. Sie interessieren sich möglicherweise nur für die Abhängigkeitsinformationen der beteiligten Pakete. Gut. Um die Abhängigkeitszeilen aller vom Verfasser betreuten Pakete anzuzeigen, geben Sie Folgendes ein:

% grep-available -F Maintainer -s Depends '[email protected]'
Falls Sie auch die Paketnamen sehen möchten, benutzen Sie
% grep-available -F Maintainer -s Package,Depends \
  '[email protected]'
Beachten Sie, dass im Argument für den Schalter -s keine Leerzeichen sein dürfen.

Es sind auch komplexere Abfragen möglich. Um zum Beispiel die Liste der Pakete zu sehen, die vom Verfasser betreut werden und von libc6 abhängen, geben Sie Folgendes ein:

% grep-available -F Maintainer '[email protected]' \
   -a -F Depends libc6 -s Package,Depends
Vergessen Sie nicht, dass Sie auch andere UNIX-Filter benutzen können. Haben Sie sich schon einmal gefragt, wer der aktivste Debian-Entwickler auf Basis der betreuten Pakete ist? Das ist einfach. Sie benötigen nur eine Kopie der aktuellsten Sources-Datei von irgendeinem Debian-Spiegelserver.
% grep-dctrl -n -s Maintainer '' Sources | sort | \
  uniq -c | sort -nr
Dieses Beispiel zeigt einen eleganten Trick: Falls Sie nur einige ausgewählte Felder von allen Paketen anzeigen möchten, geben Sie nur ein leeres Muster an.

Der Begriff »bogopackage« bedeutet die Anzahl der Pakete, die ein Debian-Entwickler betreut. Um die Anzahl der Bogopackages für den Betreuer von dctrl-tools erhalten, geben Sie Folgendes ein:

% grep-available -c -FMaintainer \
  "`grep-available -sMaintainer -n -PX dctrl-tools`"

Manchmal ist es nützlich, die Daten mehrerer Felder in der gleichen Zeile auszugeben. Der folgende Befehl gibt zum Beispiel die Liste der installierten Pakete sortiert nach ihrer installierten Größe (Installed-Size) aus.

% grep-status -FStatus -sInstalled-Size,Package -n \
  "install ok installed" -a -FInstalled-Size --gt 0 \
  | paste -sd "  \n" | sort -n
Beachten Sie, dass in der Zeichenkette » \n« genau zwei Leerzeichen sein sollten.

Ein anderer häufiger Anwendungsfall ist die Suche nach Paketen, die noch eine andere Bauabhängigkeit haben:

% grep-dctrl -s Package -F Build-Depends,Build-Depends-Indep \
  quilt /var/lib/apt/lists/*Sources

Diese Beispiele decken viele typische Verwendungsmöglichkeiten dieses Hilfswerkzeugs ab, aber nicht alle möglichen Anwendungen. Benutzen Sie Ihre Fantasie! Die Teile des Puzzles sind da und wenn sie etwas vermissen, melden Sie es.

DIAGNOSE

Wenn es keine Fehler gibt, wird der Rückgabewert 0 verwandt, falls mindestens eine Entsprechung gefunden wurde. Falls nichts gefunden wurde, wird der Rückgabewert 1 benutzt. Falls es Fehler gab, wird der Rückgabewert 1 genommen, mit einer Ausnahme. Falls die Optionen -q, --quiet oder --silent eingesetzt werden, wird der Rückgabewert 0 verwandt, wenn es einen Treffer gab, unabhängig davon, ob es schwerwiegende Fehler gab.

Diese Nachrichten werden in den Protokollierungsstufen fatal und important ausgegeben. Zusätzliche Nachrichten werden von den Systembibliotheken bereitgestellt. Diese Liste ist unvollständig.

Ein Muster ist zwingend notwendig.
Sie müssen ein Muster angeben, nach dem gesucht wird.
missgestalteter Filter
Es wurde kein Filter angegeben, es ist aber einer erforderlich.
Speicher reicht nicht aus
Es wird mehr Speicher benötigt, als vorhanden ist. Dieser Fehler ist vorübergehend, das heißt, falls Sie es erneut versuchen, könnte alles klappen.
Bei der Anzeige ganzer Absätze können Feldnamen nicht unterdrückt werden
Wenn Sie nicht den Schalter -s nutzen, reicht grep-dctrl nur die passenden Absätze durch, ohne sie auf irgendeine Art anzufassen. Dies heißt zum Beispiel, dass Sie nur -n verwenden können, wenn Sie Gebrauch von -s machen.
unstimmige Bestimmungswörter von einfachen Filtern
Widersprüchliche Bestimmungswörter von einfachen Filtern wurden benutzt; vielleicht wurden beispielsweise -X und -e für den gleichen einfachen Filter angegeben.
fehlende »)« in der Befehlszeile
Im angegebenen Filter waren mehr öffnende als schließende Klammern.
keine derartige Protokollierungsstufe
Das Argument für -l war ungültig.
zu viele Dateinamen
Die Anzahl der auf der Befehlszeile angegebenen Dateinamen überschritt eine Beschränkung zur Kompilierzeit.
zu viele Ausgabefelder
Das Argument -s enthielt zu viele Dateinamen. Diese Anzahl ist auf 256 begrenzt.
unerwartete »)« in der Befehlszeile
Es gab keine öffnenden Klammern, die zu den schließenden Klammern in der Befehlszeile passten.

DATEIEN

/var/lib/dpkg/available
die vorgegebene Eingabedatei von grep-available
/var/lib/dpkg/status
die vorgegebene Eingabedatei von grep-status

AUTOR

Das Programm und diese Handbuchseite wurden von Antti-Juhani Kaijanaho <[email protected]> geschrieben. Bill Allombert <[email protected]> stellte eines der Beispiele in der Handbuchseite bereit.

TRADUCTION

Diese Übersetzung wurde mit dem Werkzeug po4a <URL:http://po4a.alioth.debian.org/> durch Chris Leick [email protected] und das deutsche Debian-Übersetzer-Team im Dezember 2011 erstellt.

Bitte melden Sie alle Fehler in der Übersetzung an [email protected] oder als Fehlerbericht an das Paket dctrl-tools.

Sie können mit dem folgenden Befehl das englische Original anzeigen »man -L C Abschnitt deutsche_Handbuchseite«.