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«.