Kapitel 6. Debian-Pakete im Detail
Zurück | 6.10 Debian Package Tags (debtags) | Weiter

## 6.10 Debian Package Tags (debtags)

Mit dem Start der Entwicklung für die Debian Version „Etch“ wurden schon sehr frühzeitig die sogenannten „Package Tags“ eingeführt. Die Package-Tags erlauben es Meta-Daten jedem Debian Paket hinzuzufügen. Diese Daten sollen die Suche nach Paketen oder Paketgruppen erleichtern.

Ursprünglich waren Debian Pakete in verschiedenen Sektionen (Abschnitten) sortiert. Jedes Paket konnte dabei genau einer Sektion zugeordnet werden. Dies erwies sich leider als wenig zweckmässig, da beispielsweise ein Paket wie ein Mailprogramm mit GNOME oder KDE Oberfläche in die Sektion Mail oder GNOME bzw. KDE passen würde. Auch erlaubt diese Einteilung keine feinere Abstuffung, welche oft wünschenswert ist. So ist es nicht nur sinnvoll Informationen darüber zu bekommen für welchen Einsatzzweck ein Paket brauchbar ist (Mail), sondern auch in welcher Umgebung es lauffähig ist (X11).

Das Ergebniss dieser Einteilung nach Sektionen war, dass viele Leute einfach neue Sektionen eingeführt haben um Pakete differenzierter zu organisieren. Verschiedentlich wurde bereits vorgeschlagen mit „Package Tags“ einen universellen und flexiblen Weg einzuschlagen um Pakete zu klassifizieren. Dies wurde mit der Entwicklung von „Etch“ umgesetzt.

Die Erweiterung für „Package Tags“ wurde direkt in die Paketbeschreibungen (Package-Files) der Distribution eingefügt. Tags sind nach der ausführlichen Beschreibung eines Paketes zu finden, hier am Beispiel des Paketes `tidy`:

    fr@surimi:~$ apt-cache show tidy
    Package: tidy
    Priority: optional
    Section: web
    Installed-Size: 40
    Maintainer: Jason Thomas
    Architecture: i386
    Version: 20050415-1
    Depends: libc6 (>= 2.3.2.ds1-21), libtidy0
    Suggests: tidy-doc
    Filename: pool/main/t/tidy/tidy_20050415-1_i386.deb
    Size: 17020
    MD5sum: 983571c271b64f93b01903f56479a70d
    Description: HTML syntax checker and reformatter
     Corrects markup in a way compliant with the latest standards, and
     optimal for the popular browsers.  It has a comprehensive knowledge
     of the attributes defined in the HTML 4.0 recommendation from W3C,
     and understands the US ASCII, ISO Latin-1, UTF-8 and the ISO 2022
     family of 7-bit encodings.  In the output:
     .
      * HTML entity names for characters are used when appropriate.
      * Missing attribute quotes are added, and mismatched quotes found.
      * Tags lacking a terminating '>' are spotted.
      * Proprietary elements are recognized and reported as such.
      * The page is reformatted, from a choice of indentation styles.
     .
     Tidy is a product of the World Wide Web Consortium.
    Tag: interface::commandline, use::checking, role::sw-utility, format::html, devel

Wie an diesem Beispiel zu sehen ist, enthält die „Tag“-Zeile Informationen über das Benutzerinterface (Kommandozeile), den Zweck (Überprüfung), die Role (Hilfsprogramm) sowie das Dateiformat (HTML). Mit Hilfe dieser Informationen ist es möglich sehr detailiert nach Paketen für verschiedene Einsatzzwecke oder Benutzerschnittstellen zu suchen.

Da die Package-Tags in den Package-Dateien (und nicht in den eigentlichen Debian Paketen) enthalten sind, stehen die Informationen bereits vor dem Download und der Installation eines Paketes zur Verfügung.

Um in den Package-Tag Informationen zu suchen, ist es notwendig das Program `debtags` zu installieren. Eine direkte Suche über `apt-get` oder `aptitude` ist zur Zeit noch nicht implementiert. Als weiteres Programm sollte `debtags-edit` installiert werden. Mit diesem Program kann ebenfalls in den Package-Tags gesucht werden, zusätzlich ist es möglich Packages-Tags zu verändern.

Die Suche mittels `debtags` kann nun beispielsweise dazu genutzt werden Pakete zu suchen die eine Relation zu `bash` haben

    fr@wasabi:~$ debtags related bash
    bash3 - The GNU Bourne Again SHell (Version 3)

Ein interessanteres Ergebnis bringt die Suche nach Relationen zu IMAP Mail hervor

    fr@wasabi:~$ debtags grep mail::imap
    mutt: application, interface::text-mode, made-of::lang-c, mail::imap, mail::pop
    , protocol::imap, protocol::ipv6, protocol::pop, role::sw-client, uitoolkit::nc
    urses, works-with::mail
    nail: interface::commandline, interface::shell, mail::imap, mail::list, mail::p
    op, mail::smtp, protocol::imap, protocol::pop, protocol::smtp, role::sw-client,
     special::completely-tagged, use::transmission, works-with::mail
    cyrus21-imapd: interface::daemon, mail::filters, mail::imap, network::service,
    protocol::imap, protocol::ipv6, role::sw-server, works-with::mail
    imapproxy: interface::daemon, mail::imap, protocol::imap, use::proxying
    squirrelmail: interface::web, made-of::lang-php, mail::imap, protocol::imap, wo
    rks-with::mail
    getmail4: mail::imap, mail::pop, protocol::imap, protocol::pop, protocol::ssl

### Webbasierte Tag Suche

Unter http://debian.vitavonni.de/packagebrowser/index.cgi steht ein Frontend für die Suche nach Paketen und deren Tags zur Verfügung.

Eine Übersicht aller Package-Tags die sich mit dem Thema Mail befassen liefert folgendes Kommando

    fr@wasabi:~$ debtags tagsearch mail
    mail::TODO - Need an extra tag
    mail::filters - Filters
    mail::imap - Mail access via IMAP
    mail::list - Mailing Lists
    mail::notification - Notification
    mail::pop - Mail access via POP3
    mail::smtp - Mail transfer via SMTP
    media::mail - Email
    protocol::pop - Mail access via POP3
    protocol::smtp - SMTP Simple Mail Transport Protocol
    works-with::mail - Email

### 6.10.1 `debtags`

Das Program `debtags` verwaltet auf der Kommandozeile die Informationen zu Package-Tags und kann einfache Suchoperationen auf Basis dieser Daten durchführen. Die Syntax von `debtags` lautet

    debtags [options] [command] [args...]

Package Tags Informationen werden aus verschiedenen Quellen in das System eingebunden. Ähnlich wie bei Informationen zu den Debian Paketen, verwaltet die Datei `/etc/debtags/sources.list` die Quellen mit den Informationen zu den Tags eines Paketes, Grundlegende Informationen sind aber auch bereits in den Paketdateien (Packages.gz) der Distribution (ab der Version „Etch“) enthalten. Damit sind diese Informationen zu Package Tags auch in der APT Datenbank verfügbar. Die Informationen zu Tags in den offiziellen Package Dateien können nicht verändert werden, es sind auch nicht vorgesehen lokale Anpassungen vorzunehmen. Die Aktualisierung wird mit den Kommando `debtags update` durchgeführt, dieses muss mit Administratorrechten ausgeführt werden. Das Programm `debtags`kann auch für einfache Abfragen der APT Datenbank genutzt werden, die notwendigen Optionen hierfür lauten `tagshow` und `tagsearch`.

Eine Package Tag Datenbank kann mit der Option `check` überprüft werden, vergleichbare Pakete oder Gruppen lassen sich mit der Option `related` ermitteln und die kompletten Informationen können mit der Option `tagcoll` auf der Standard-Ausgabe ausgegeben werden.

`debtags` benötigt bei jedem Aufruf eine Option die die durchzuführende Aktion beschreibt, möglich sind dabei die im folgenden beschriebenen Aktionen.

Optionen

`update`

  Lädt die aktuelle Tag-Datenbank aus dem Netz und aktualisiert die lokale System-Datenbank. Diese Aktion benötigt Administrator Rechte.

`check [filename]`

  Prüft ob zu allen Tags in der Datenbank eine passende Beschreibung vorahnden ist. Wird keine optionale Datei angegeben, so wird die zentrale Datenbank überprüft.

`tagshow tag`

  Zeigt dir gespeicherten Informationen zu einem Tag.

`tagsearch pattern [pattern [pattern [...]]]`

  Zeigt eine Zusammenfassung aller angegebenen Tags.

`show package`

  Nutzt die Ausgabe von `apt-cache show package` und ergänzt diese um die Tag Informationen.

`related pkg1[,pkg2[,pkg3,[...]]]`

  Zeigt Pakete die mit den angegebenen in Verbindung stehen.

`cat`

  Gibt die kompletten Informationen der Tag-Datenbank aus.

search [-v] [-q] tag expression

  Gibt die Paketnamen und Beschreibungen aus auf die der angegebene Reguläre Ausdruck zutrifft.

grep [-v] [-q] tag expression

  Gibt alle Zeile der Tag-Datenbank aus auf die der Suchbegriff zutrifft.

install [-v] [-q] tag expression

  Führt `apt-get install` mit den Namen der Pakete aus, auf die der reguläre Ausdruck zutrifft.

mkpatch [filename]

  Gibt die Unterschiede zwischen der aktuellen Tag-Datenbank und der angegebenen Datenbank auf der Standard-Ausgabe aus.

`maintainers`

  Erstellt eine Liste aller Maintainer und der Pakete zu denen diese Personen Tags beigesteuert haben.

`tag add package tags`

  Fügt einen oder mehrere Tags dem angegebenen Paket hinzu.

`tag rm package tags`

  Löscht einen oder mehrere Tags zu dem angegebenen Paket.

`tag ls package`

  Zeigt die Tags zum angegebenen Paket an.

`submit [patch]`

  Verschickt den angegebenen Patch an die zentrale Tag-Datebank. Wird keine Patch Datei angegeben, so werden die Änderungen zur lokalen Datenbank ermittelt und verschickt.

`todo`

  Zeigt alle lokal installierten Pakete an, zu denen noch keine Package-Tags definiert wurden.

`score`

  Bewertet alle nicht installierten Pakete daraufhin wie oft deren Tags in Paketen erwähnt werden die bereits installiert sind.

`facetcoll`

  Zeigt die Sammlung von Tags bei der jeder Paket nur mit den „Facetten“ ausgegeben wird. Dies ist sinnvoll um die Ausgabe mittels `tagcoll` weiter zu bearbeiten.

`stats`

  Zeigt einige statistische Informationen zu Debtags an.

`todoreport`

  Zeigt eine Zusammenfassung zu den Paketen an die noch einer Überarbeitung bedürfen.

Optionen

`-d`, `--distance`

  Bestimmt die maximale Abweichung zu einer „related“ Option.

`-v`, `--invert-match`

  Invertiert die Suche, im Zusammenhang mit grep, so dass ausschliesslich nicht auf das Suchkriterium passende Begriffe gefunden werden so dass ausschliesslich nicht auf das Suchkriterium passende Begriffe gefunden werden.

`-q`, `--quiet`

  Gibt keinerlei Informationen auf der Standard Ausgabe aus, der Rückgabewert `0` zeigt jedoch an das ein passender Eintrag gefunden wurde.

`-g`, `--groups-items`

  Gruppiert, im Zusammenhang mit dem „cat“ Kommando, die Tags die einen identischen Inhalt haben.

`--verbose`

  Eine Option für Entwickler zur Fehlersuche, gibt mehr Informationen über den Programmablauf aus.

`-V`, `--version`

  Zeigt die aktuelle Version des Programmes `debtags` an und beendet dann das Programm.

`-?`, `--help`

  Zeigt Informationen zu den Kommandozeilenoptionen von `debtags` an.

### TIPP

Um selbst erstellte Pakete mit eigenen, noch nicht definierten, Tags zu versehen, können der Datei `/etc/debtags/sources.list` weitere Einträge hinzugefügt werden. Diese Einträge verweisen dann auf die selbst erstellten Tags. Hierzu sind die folgenden Schritte notwendig.

1. Es muss die Datei `/etc/debtags/personaltags/vocabulary` erzeugt werden. Eventuell ist auch das entsprechende Verzeichnis noch anzulegen. Die Datei enthält die neuen Tags mit Beschreibung, beispielsweise

       Facet: personal
       Description: Personal preference

       Tag: personal::essential
       Description: I cannot live without it

       Tag: personal::useful
       Description: Tried it and found it useful

       Tag: personal::bad
       Description: Tried it and did not like it

       Tag: personal::interesting
       Description: It looks interesting, but I have not tried it yet

2. Die Datei `/etc/debtags/personaltags/tags-current` enthält die Namen der Tags und die Zuordnung zu den Paketen, beispielsweise

       mmv: personal::essential
       mc: personal::essential
       xdiskusage: personal::essential
       buffy: personal::useful
       debtags: personal::interesting

3. Beide Dateien müssen mit `gzip` komprimiert werden (`gzip -9 dateiname`).

4. Die neue Quelle muss der Datei `/etc/debtags/sources.list` hinzugefügt werden. Der Eintrag sieht wie folgt aus

       tags file:/etc/debtags/personaltags/

5. Abschliessend wir das Kommando `debtags update` aufgerufen.

Hier einige Beispiele für den Einsatz von `debtags`

`debtags update`

  Aktualisiert die `debtags` Datenbank.

`debtags show mutt`

  Zeigt Paket- und Tag-Informationen zum Paket `mutt`.

`debtags -d 7 related mutt`

  Zeigt mit `mutt` in einer Beziehung stehenden Pakete, mit einer maximalen Entfernung von 7, an.

`debtags -d 5 related galeon,mozilla-browser`

  Zeigt Pakete mit einer Beziehung zu `galeon` und `mozilla-browser`, mit einer Tiefe von maximal 5 an.

`debtags tagsearch mail`

  Durchsucht die Tag Datenbank nach Paketen die mit dem Schlagwort „mail“ zu tun haben.

`debtags search "use::editing && media::rasterimage && \! (role::aux-shlib || role::aux-dummy)"`

  Listet alle Pakete auf, die Bilddateien („rasterimage“) bearbeiten können, ausgenommen werden Dummy-Pakete und Shared-Libraries.

`debtags search 'works-with::mail && role::sw:client'`

  Zeigt alle Mail-Clients an.

`debtags install 'protocol::irc && role::sw:client'`

  Installiert alle Pakete die IRC-Clients zur Verfügung stellen.

### 6.10.2 `debtags-edit`

`debtags-edit` ist ein Programm mit grafischer Benutzeroberfläche, welches sich zum Suchen und Verändern von Informationen in der APT- und Debtags-Datenbank eignet. Ziel dieses Programmes ist es, möglichst vielen Leuten zu ermöglichen an Debian-Tags mitzuarbeiten, ohne komplizierte Kommandozeilenprogramme einsetzen zu müssen. Die Syntax von `debtags-edit` lautet

    debtags-edit [options]

Abbildung 6.1. Debtags Editor

Wird `debtags-edit` aufgerufen, so werden zunächst die APT- und Debtags-Datenbanken gelesen. Ist die Umgebungsvariable `DEBEMAIL` gesetzt, so geht das Programm davon aus, dass nach Paketen passend zu dieser Mailadresse gesucht werden soll, dies ist für Debian Entwickler sinnvoll. Ist diese Variable nicht gesetzt, so wird eine Liste aller installierten Pakete angezeigt. Das anklicken eines Paketes erlaubt es, zu diesem Paket Tag-Informationen hinzuzufügen oder auch zu löschen.

Das Programm kann die Änderungen in einer Patchdatei im aktuellen Verzeichnis ablegen. Alle Änderungen werden auch beim beenden des Programmes automatisch gespeichert.

`debtags-edit` kennt die drei Kommandozeilenoptionen `--help`, `--version` und `--verbose`.

Zurück | Nach oben | Weiter
6.9 Upload von Paketen | Zum Anfang | 6.11 Debian-Spiegel

© 1999-2006 Frank Ronneburg - Dieser Inhalt ist unter einem Creative Commons Namensnennung - Nicht-kommerziell - Keine Bearbeitung Lizenzvertrag lizenziert (creativecommons.org/licenses/by-nc-nd/2.0/de/legalcode).