BEZEICHNUNG¶
grep-dctrl, grep-status, grep-available, grep-aptavail, grep-debtags - grep
Debian-Steuerdateien
Ü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.
- -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 'ajk@debian.org'
Falls Sie auch die Paketnamen sehen möchten, benutzen Sie
% grep-available -F Maintainer -s Package,Depends \
'ajk@debian.org'
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 'ajk@debian.org' \
-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 <
gaia@iki.fi> geschrieben. Bill Allombert <
ballombe@debian.org> stellte eines der Beispiele in der
Handbuchseite bereit.
SIEHE AUCH¶
Debian-Richtlinien-Handbuch (Debian Policy Manual) – herausgegeben als
Debian-Paket
debian-policy – außerdem auf der
Debian-Website verfügbar
apt-cache(1),
ara(1),
dpkg-awk(1),
sgrep(1),
dpkg(8)
TRADUCTION¶
Diese Übersetzung wurde mit dem Werkzeug
po4a
<
URL:http://po4a.alioth.debian.org/> durch Chris Leick
c.leick@vollbio.de und das deutsche Debian-Übersetzer-Team im
Dezember 2011 erstellt.
Bitte melden Sie alle Fehler in der Übersetzung an
debian-l10n-german@lists.debian.org 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«.