AA_hut-fernglas_123rf-10105270_KathleenEllis.jpg

© Kathleen Ellis, 123rf.com

Dschungelführer

Pakete zielgenau finden mit Debtags

22.05.2012
Das Debtags-Projekt erweitert die Beschreibung von Debian-Paketen um zusätzliche Begriffe zur thematischen Einordnung. Das erleichtert die Auswahl passender Software deutlich.

Distributionen, die auf dem Debian-Paketformat aufsetzen, stellen zur Paketverwaltung die Werkzeuge Dpkg, Apt, Aptitude oder Synaptic bereit. Damit lassen sich die Pakete problemlos installieren, aktualisieren und im Bedarfsfall auch wieder vollständig aus dem System entfernen. Durch die schiere Menge an Paketen geht jedoch mit der Zeit der Überblick verloren, welche Software überhaupt verfügbar ist. Die Auswahl und das Entdecken neuer oder besser geeigneter Programme gerät mehr und mehr zum zufälligen Ereignis.

Bislang verfügt jedes Debian-Paket nur über eine control-Datei, die das Paket über fest definierte Felder [1] genauer beschreibt (siehe Kasten "Das Debian-Paketformat"). Die thematische Zuordnung zu einer Software-Kategorie erfolgt dabei über das Feld section. Dieses Feld section beschreibt daneben auch den Paketbereich, zu dem das Paket gehört. Zählt es zum Bereich main (siehe Kasten "Paketbereiche"), enthält das Feld nur die Software-Kategorie. Für Pakete aus den Bereichen contrib und non-free steht vor der Software-Kategorie durch einen Schrägstrich getrennt noch der Paketbereich: area/section. Als Software-Kategorien stehen bislang beispielsweise database, editors, kernel oder science zur Verfügung. Eine komplette Liste der genutzten Kategorien finden Sie im Debian Policy Manual [2].

Für Debian stehen aktuell etwa 35 000 Pakete bereit. Die Zuordnung eines Paketes zu einer Kategorie spiegelt den hauptsächlichen Anwendungs- und Einsatzbereich der enthaltenen Software wieder. Bislang ist nur ein einziger Eintrag pro Paket zulässig. Infolgedessen fällt einerseits das Klassifikationsraster recht grob aus, und andererseits erschwert diese Einschränkung das Einordnen von Paketen, die sich nicht ausschließlich oder zweifelsfrei einer Kategorie zuordnen lassen. Der Maintainer eines Paketes muss daher abwägen, welche Kategorie überwiegt oder am besten passt.

Die Grobrasterung in der Klassifikation erschwert auch die Recherche vor einer Installation. Eine flinke Auswahl gelingt nur, wenn Sie vorab genau wissen, welche Software Sie einrichten möchten, Sie den Paketnamen in korrekter Schreibweise kennen und mit der Zuordnung zu den Paketkategorien vertraut sind. In der Praxis heißt das, dass Sie zumindest ungefähr wissen müssen, wo das betreffende Paket in der Hierarchie eingeordnet wurde. Das Gefühl dafür erlangen Sie meist erst im Lauf der Zeit.

Paketbereiche

Debian-Pakete zählen zu einem der drei Bereiche main, contrib und non-free. Für die entsprechende Zuordnung gelten die folgenden Bedingungen:

  • main enthält nur freie Software.
  • contrib umfasst Pakete, bei denen es sich zwar um freie Software handelt, die aber von nicht freien Paketen abhängt.
  • non-free nimmt alle Pakete unter nicht-freien Lizenzen auf und gilt nicht als offizieller Bestandteil von Debian.

Ubuntu verwendet die Bereiche main, restricted, universe und multiverse [15]. Die Bereiche main und restricted enthalten jeweils freie und nicht-freie Software, die das Ubuntu-Team vollständig unterstützt. Pakete aus dem Bereich universe und multiverse entsprechen den ersten beiden Kategorien, genießen jedoch keinen Support seitens des Ubuntu-Teams.

Mandriva und dessen Community-Fork Mageia orientieren sich am Vorbild von Debianund gruppieren die Pakete ebenfalls in main (Basissystem), contrib (Community-Pakete) und nonfree (proprietäre Software unter nicht-freier Lizenz).

Bei anderen Distributionen gibt es oft keine solche Unterscheidung. So besteht Fedora beispielsweise nur aus freier Software und braucht daher keine Paketbereiche. Nicht-freie Pakete müssen Sie in diesem Fall von weiteren, externen Paketquellen beziehen.

Das Debian-Paketformat

Zu jedem Debian-Paket gehört ein control-File, welches das Paket über fest definierte Felder genauer beschreibt [1]. Zu den Pflichtfelder bei Binärpaketen zählen:

  • Package für den Paketnamen,
  • Version für die Paketversion (beinhaltet Software-Versionsnummer und Paketierungs-Versionsnummer),
  • Architecture für die Rechnerarchitektur, für die das Paket übersetzt wurde (oder all wenn es architekturunabhängig ist, wie etwa Dokumentationspakete oder in Skriptsprachen wie Perl geschriebene Software),
  • Maintainer für den Namen und die E-Mail-Adresse des Paketverantwortlichen und
  • Description für die Beschreibung des Paketes.

Außerdem gilt die Empfehlung, beim Paketieren der Software zusätzlich die beiden Felder Section für die Software-Kategorie und Priority für die Wichtigkeit des Paketes auszufüllen.

Weitere Felder enthalten den Namen des Quellpaketes (Source), die Markierung des Paketes als unbedingt erforderlich (Essential) und die Beschreibung der Beziehungen zu anderen Paketen. Letzteres umfasst Depends für eine Abhängigkeit, Recommends für eine Empfehlung, Suggests für einen Vorschlag, Enhances als Erweiterung, Replaces für das Ersetzen eines bisherigen Paketes, Breaks für eine Störung, Conflicts für einen Konfliktfall, Provides für eine Bereitstellung und Pre-Depends für eine Voraussetzung. Daneben finden sich eine Angabe zum belegten Speicherplatz nach der Installation des Paketes (Installed-Size) sowie zur Webseite, von der das Quellpaket stammt und auf der man weitere Informationen zum Projektstatus nachlesen kann (Homepage).

Bei der control-Datei handelt es sich um eine Textdatei, in der jedes Feld mit einem Feldbezeichner beginnt, gefolgt von einem Doppelpunkt als Trennzeichen und anschließend dem Inhalt des Feldes. Wegen der unterschiedlichen Inhalte finden sich die Angaben sowohl in einzelnen Textzeilen als auch in mehreren aufeinanderfolgenden Absätzen.

Das Beispiel in der Tabelle "Paket-Infos (Auszug) zu Xz-utils" zeigt die Informationen zum Paket xz-utils, das Werkzeuge zum Komprimierer Xz bereitstellt. Das Paket liegt in der Software-Version 5.0.0, Paketrevision 2 für die Plattform i386 vor. Es hängt von den beiden Paketen libc6 und liblzma2 ab (Depends) und schlägt als Ergänzung das Paket xz-lzma vor (Suggests). Mit älteren Versionen des Pakets xz-lzma lässt es sich nicht gleichzeitig verwenden (Breaks) und beim Dist-Upgrade gilt es darauf zu achten, dass das Paket Dateien enthält, die früher im Paket xz-lzma lagerten (Replaces): Daher muss vorab xz-lzma aktualisiert werden, bevor xz-utils auf den neuesten Stand gebracht werden kann. Xz-utils zählt zu den Werkzeugen und rangiert daher in der Kategorie utils. Da es als wesentliches Paket für das Linux-System fungiert, ist es in der Priorität auch als erforderlich gekennzeichnet (Priority: required).

Paket-Infos (Auszug) zu Xz-utils

Feldname Inhalt
Package xz-utils
Version 5.0.0-2
Architecture i386
Maintainer Jonathan Nieder <jrnieder@gmail.com>
Installed-Size 452
Depends libc6 (>= 2.6), liblzma2 (>= 5.0.0)
Suggests xz-lzma
Breaks xz-lzma (<< 4.999.9beta+20091004-1)
Replaces xz-lzma (<< 4.999.9beta+20091004-1)
Section utils
Priority required

Installation und Recherche

Paketmanager werten die einzelnen Felder der Paketbeschreibung zum Einrichten des Pakets aus. So wissen Apt, Aptitude und Synaptic, wo es die Pakete gibt und welche anderen Pakete es aufgrund von Abhängigkeiten nachzuziehen gilt. Sie laden das Benötigen dann zur Installation von einem Paketmirror herunter. Als Ergebnis kommt oft eine ganze Liste von Paketen zusammen, die entfernt, aktualisiert oder installiert werden müssen. Dpkg agiert im Hintergrund und bekommt die Aufgabe übertragen, die ausgewählten Pakete zu entfernen oder einzurichten.

Dabei macht das automatische Auflösen der Paketabhängigkeiten in beide Richtungen durch Apt die Pflege des Software-Bestands für Sie erst handhabbar macht (siehe auch Kasten "Paketabhängigkeiten manuell auflösen"). Als Dreh- und Angelpunkt des bestehenden Systems fungieren jedoch das Wissen um die existierenden Software-Pakete sowie deren korrekte Benennung und Einordnung ("Klassifikation"). Die Suche nach ähnlichen Paketen im Sinn von Einsatzzweck, Funktionsumfang oder thematischer Einordnung funktioniert bislang nicht.

Paketabhängigkeiten manuell auflösen

Um vor der Paketinstallation zu sehen, welche Abhängigkeiten zu weiteren Paketen bestehen, nutzen Sie die Kommandos apt-cache und apt-rdepends [16]. Beide lösen die Abhängigkeiten auf.

Dabei benennt Apt-cache über die Option depends Paketname nur die direkt abhängigen Pakete. Das funktioniert auch für die umgekehrte Richtung – also die Frage, welche anderen Pakete das Paket benötigen – mithilfe der Option rdepends ("reverse depends", Listing 1).

Apt-rdepends dagegen sucht rekursiv und listet alle Pakete auf, die wiederum von den bereits gefundenen abhängen. Es greift dabei auf die zuvor in der control-Datei des Paketes hinterlegten Paketabhängigkeiten zurück. Für das Paket xz-utils sieht die Ausgabe so aus wie in Listing 2.

Listing 1

$ apt-cache rdepends xz-utils
xz-utils
Reverse Depends:
  reprepro
  lintian
  libdpkg-perl
  dpkg-dev
  devscripts
  xzdec
  ...

Listing 2

$ apt-rdepends xz-utils
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut
Statusinformationen werden eingelesen... Fertig
xz-utils
  Hängt ab von: libc6 (>= 2.6)
  Hängt ab von: liblzma2 (>= 5.0.0)
libc6
  Hängt ab von: libc-bin (= 2.11.3-2)
  Hängt ab von: libgcc1
libc-bin
libgcc1
  Hängt ab von: gcc-4.4-base (= 4.4.5-8)
  Hängt ab von: libc6 (>= 2.2.4)
gcc-4.4-base
liblzma2
  Hängt ab von: libc6 (>= 2.3.6-6~)

Pakete mit ähnlichen Namen finden Sie mit Dpkg, Apt-cache und Aptitude über eine Option und ein Muster. Apt-cache und Aptitude unterstützen hier reguläre Ausdrücke [3], während Dpkg ein eigenes Musterformat verwendet. Zudem sucht es nur in der Paketliste, wohingegen Apt-cache und Aptitude die Paketbeschreibung automatisch mit einbeziehen.

Um etwa alle Pakete zum Spiel OpenTTD zu finden, rufen Sie Dpkg über dpkg -l '*openttd*' auf (Abbildung 1). Mit der Option -l listet Dpkg alle installierten Pakete auf, das über die Option übermitteltet Muster '*openttd*' schränkt die Ausgabe entsprechend ein.

Abbildung 1: Die Ausgabe des Paketstatus mittels Dpkg.

Als entsprechendes Suchmuster für Apt-cache und Aptitude dient ein regulärer Ausdruck, der mit einem ^ beginnt. Es findet somit alle Zeichenketten, die mit der Folge openttd beginnen. Die Ausgabe von Apt-cache und Aptitude fällt ähnlich ausführlich aus wie jene von Dpkg und listet Zeile für Zeile nur Pakete mit deren Namen und Kurzbeschreibung auf (Listing 3). Die Basis bilden die Paketlisten, die Apt aufgrund der Einträge in /etc/apt/sources.list von den darin angegebenen Paketquellen bezogen und danach unter /var/lib/apt/lists/ gespeichert hat.

Listing 3

$ aptitude search '^openttd'
i   openttd         - Erweiterte Neuumsetzung von »Transport Tycoon Deluxe
i A openttd-data    - Gemeinsame Datendateien für das Spiel OpenTTD
i A openttd-opengfx - Freier Grafiksatz für das Spiel OpenTTD
i A openttd-openmsx - Freie Musiksammlung für das Spiel OpenTTD
p   openttd-opensfx - a sound set for use with the OpenTTD game

Die Ausgabe von Aptitude zeigt zusätzlich den jeweiligen Status des Paketes an (siehe auch Kasten "Paketstatus"). In Listing 4 sind vier der fünf Pakete bereits auf dem System installiert (i), drei davon automatisch (A). p bezeichnet ein in der Paketliste verfügbares, aber noch nicht installiertes Paket. In der Ausgabe von Dpkg in Wie Sie in Abbildung 1 sehen, kennzeichnet Dpkg das fragliche Paket openttd-opensfx dagegen mit u für "unbekannt" und n für "nicht installiert".

Paketstatus

Falls Sie den exakten Namen des fraglichen Pakets kennen, finden Sie dessen Status auch mithilfe von Dpkg und Grep heraus: Die Dpkg-Option -s Paketname liefert Paketinformationen aus der control-Datei des Pakets, ein nachfolgendes Grep filtert die Zeile mit dem Installationsstatus heraus:

$ dpkg -s aptitude | grep -i status
Status: install ok installed

In diesem Fall zeigt die Überprüfung für das Paket aptitude, dass es bereits vollständig installiert ist.

Das Debtags-Projekt

Auf der Debconf – der jährlich stattfindenden Debian-Entwicklerkonferenz [4] – 2005 in Helsinki veröffentlichte der italienische Entwickler Enrico Zini seine Überlegungen, wie man die Debian-Pakete übersichtlicher ordnen könnte [5]. Sein Konzept ermöglicht, zahlreiche Aspekte eines Paketes zu erfassen, was verschiedenste Sichtweisen auf die Software und die zur Suche verwendeten Begrifflichkeiten abdeckt und damit eine themen- oder aspektbasierte Klassifikation und Suche zulässt. Die Suchanfragen bestehen aus nahezu umgangssprachlichen Begriffen und ergänzen die Auswahl über die bisher verwendeten Debian-Sections und Paketnamen.

Enrico Zini betreut heute als Maintainer das zugehörige Debian-Paket debtags [6]. Debtags steht als Abkürzung für "Debian Tags" und beinhaltet eine Zusammenstellung von abgestimmten Kategorien und Begriffen. Das Vorgehen lässt sich in etwa mit der Verschlagwortung eines Buch- oder Dokumentbestands vergleichen, zu dessen Kategorisierung einheitliche Begriffe für gleiche Sachverhalte dienen.

Das dabei genutzte Schema kennt man in der Wissenschaft unter dem Begriff Facettenklassifikation ("faceted classification", [7]). Es beschreibt ein Objekt durch mehrere Begriffe, wobei jeder davon einen spezifischen Aspekt oder eine Eigenschaft des Objekts repräsentiert. Diese Begriff bezeichnet man auch als Tags und das Verfahren folglich als Tagging.

Die Menge der Tags für Debian-Pakete entwickelt sich stetig weiter, da einerseits mehr und mehr Pakete klassifiziert werden und andererseits weitere, bislang fehlende Tags durch die Mitwirkung der Debian-Anwender hinzukommen. Die derzeit gültigen Tags finden Sie in einer Liste auf der Debtags-Website [8]. Die für ein Debian-Paket vergebenen Tags zeigt folgender Befehl an:

$ debtags show Paketname

Dabei führt debtags die Paketinformationen aus der control-Datei mit den Begriffen aus der Debtags-Datenbank zusammen. Die zusätzliche Zeile in der Ausgabe von Debtags filtern Sie mit einem Grep-Aufruf über eine Pipe heraus. Listing 4 zeigt die aktuelle Klassifikation für den PDF-Betrachter Xpdf.

Listing 4

$ debtags show xpdf | grep -i tag
Tag: implemented-in::c++, interface::x11, role::program, scope::application, uitoolkit::motif, use::viewing, works-with-format::pdf, works-with::text, x11::application

Die Angaben kennzeichnen Xpdf als X11-Programm (x11::application, interface::x11), das zu den Anwendungen (role::program, scope::application) zählt, genauer gesagt zu den Dokumentbetrachtern für PDF und Text (use::viewing, works-with-format::pdf, works-with::text). Des weiteren kann man erkennen, dass Xpdf für die Bedienoberfläche das Motif-Framework (uitoolkit::motif) verwendet und in der Programmiersprache C++ (implemented-in::c++) entwickelt wurde.

Um nun beispielsweise herauszufinden, welche X11-tauglichen Spiele Sie einrichten könnten, greifen Sie zur Debtags-Option search. Sie übergeben ihr eine Tag-Liste und erhalten eine Übersicht aller Debian-Pakete, die bislang in den entsprechenden Kategorien einsortiert sind – im Beispiel aus Listing 5 in game::simulation und interface::x11.

Listing 5

$ debtags search "game::simulation && interface::x11"
billard-gl - 3D billiards game
cultivation - game about the interactions within a gardening community
flightgear - Flight Gear Flight Simulator
foobillard - a 3D billiards game using OpenGL
fretsonfire-game - game of musical skill and fast fingers - Game files
gtkpool - simple pool billiard game written with GTK+
libopenscenegraph-dev - 3D scene graph, development files
lincity-ng - City simulator game with polished graphics
oolite - space-sim game Oolite ported to GNUStep/OpenGL linux
...

Die Suche anhand der Kategoriebezeichner erscheint etwas mühsam, insbesondere dann, wenn man die einzelnen Tags noch nicht genau kennt. Hier helfen kleine Werkzeuge weiter, welche die Idee der Debian-Tags aufgreifen und passend um Schnittstellen erweitern.

Grep-dctrl

Das Debian-Paket dctrl-tools ergänzt die Möglichkeiten zur Suche in den Paketlisten erheblich. Zum diesem Paket gehören die Werkzeuge grep-dctrl, grep-status, grep-available, grep-aptavail und grep-debtags. Grep-dctrl ist das Hauptprogramm, bei allen anderen "Werkzeugen" aus dem Paket handelt es sich lediglich um symbolische Links darauf. Während Grep-available und Grep-status die Datenbanken von Dpkg durchsuchen, bedient sich Grep-aptavail der Apt-Datenbank, Grep-debtags nutzt die Debtags-Datenbank.

Das Kommando Grep-dctrl konzentriert sich nur auf die bestehenden, installierten Pakete des Systems und arbeitet daher häufig erheblich schneller. Wie Frank Ronneburg in seinem Standardwerk "Das Debian-Anwenderhandbuch" [9] explizit hervorhebt, lässt sich mit Grep-dctrl "sehr schnell bestimmen, welche Pakete von einem bestimmten Maintainer betreut werden oder welche Version eines Pakets aktuell ist."

Grep-dctrl versteht nicht nur anders als Dpkg und Apt regulären Ausdrücken, sondern kann auch gleichzeitig in mehreren Feldern der Paketbeschreibung suchen. Die einzelnen Feldinhalte verknüpfen Sie zudem bei Bedarf mit den logischen Operatoren AND, OR und NOT miteinander. Beispielsweise zeigt der folgende Aufruf die Statusinformationen zum Paket Dpkg an:

$ grep-status -F Package -X dpkg

Die Option -F wählt den Feldbezeichner aus, hier über Package den Paketnamen. Die Option -X lässt nur exakte Treffer zu. Dieser Aufruf entspricht dpkg -s dpkg.

Möchten Sie alle verfügbaren Pakete anzeigen, bei denen die Beschreibung die Zeichenfolge dpkg – unabhängig von der Schreibweise – enthält, hilft der Aufruf:

$ grep-available -F Description -i dpkg

Mit der Option -F Description wählen Sie dabei das Feld Description mit der Paketbeschreibung aus. Mit -i erfolgt die Suche unabhängig von Groß- und Kleinschreibung. Indem Sie den Aufruf um die Option -s Package zu

$ grep-available -F Description -i -s Package dpkg

ergänzen, verringern Sie die Liste auf die Namen der installierten Pakete. Die Option -s bestimmt, welches Feld aus der Paketbeschreibung der Befehl ausgibt – hier ist es der Paketname.

Möchten Sie eine Liste der installierten Pakete sehen, deren Paketnamen eine der beiden Zeichenketten apt oder dpkg enthält, führt folgender Aufruf mit Grep-status zum Ziel:

$ grep-status -F Package -s Package -e 'apt|dpkg'

Die beiden Optionen -F und -s wirken analog zum vorigen Beispiel. Die Option -e Suchstring sorgt dafür, dass Grep-status den Suchstring als regulären Ausdruck interpretiert.

Grep-status kann auch die Namen der installierten Pakete anzeigen, die ein bestimmter Maintainer betreut. Dazu weisen Sie das Tool mit der Option -F Maintainer an, das Feld mit dem Namen des Paketbetreuers auszuwerten. Der folgende Aufruf zeigt die Namen aller Pakete an, für die der Betreuer axelbeckert verantwortlich zeichnet:

$ grep-status -F Maintainer -s Package 'axelbeckert'

Das Kommando Grep-debtags kombiniert die bisher vorgestellten Optionen mit den Kategorien aus dem Debtags-Projekt. Das folgende Kommando zeigt den Namen und die Kurzbeschreibung (Option -d) aller X11-basierten, grafischen Webbrowser an, die keine KDE-Bibliotheken benötigen:

$ grep-debtags -d -s Package web::browser -a interface::x11 -a -! suite::kde

Das klappt allerdings nur dann, wenn das Paket debtags installiert ist, welches dann fleißig in den Debian-Tags stöbert. Die Angabe web::browser reduziert die Gesamtliste zunächst auf entsprechend klassifizierte Pakete. Die nachfolgenden Parameter stellen logische Verknüpfungen dar, -a als AND-Operator und -a -! als negiertes AND. In der reduzierten Gesamtliste verbleiben daher am Ende nur jene Pakete, die mit dem Tag interface::x11, aber nicht suite::kde gekennzeichnet sind. Abbildung 2 zeigt die Ausgabe im Terminal.

Abbildung 2: Ergebnisliste: Graphische Webbrowser, die nicht zu Gnome gehören.

Grafische Oberflächen

Findige Entwickler haben zu den Kommandozeilenwerkzeugen die passenden Benutzeroberflächen Packagesearch [10], Adept [11] und Xara [12] geschaffen. Die schlichte und zeitlose Eleganz der Kommandozeile ist dabei einer mitunter verwirrenden, komplexen Bedienoberfläche gewichen, die für die gewünschten Ergebnisse etwas Zeit und Experimentierfreudigkeit voraussetzt.

Alle drei genannten Programme bieten sich als Ersatz zu den Werkzeugen auf der Kommandozeile an und erlauben zudem – mit den entsprechenden Benutzerrechten gestartet – das Hinzufügen und Entfernen von Paketen sowie das Aktualisieren der Paketdatenbank.

Packagesearch stellt zur Suche im Paketbestand zwei verschiedene Einstiegspunkte bereit. Eine Kombination von Eingabefeldern links oben im Programmfenster ermöglicht die Suche mit Hilfe einer Zeichenkette, reguläre Ausdrücke im Suchstrings unterstützt das Tool dabei aber nicht. Immerhin lässt sich der Suchraum über das Auswahlfeld Installationsstatus eines Paketes weiter eingrenzen (alle Pakete, aktualisierbar, bereits installiert oder nicht installiert). Möchten Sie nur in den Paketnamen suchen, entfernen Sie das Häkchen bei Beschreibungen durchsuchen.

Abbildung 3 zeigt eine textorientierte, ähnlichkeitsbasierte Suche anhand des Kriteriums xpdf mit den Details zum Paket libpoppler-dev, der Entwicklungsvariante der PDF-Rendering-Bibliothek Poppler. Das Suchergebnis erscheint als Auswahlliste links unten. Die Liste lässt sich über die Spaltenköpfe der Tabelle sortieren – alphabetisch nach dem Paketnamen, nach dem Grad der Übereinstimmung mit dem Suchstring (Score), nach der installierten und verfügbaren Version und nach der Kurzbeschreibung des Pakets.

Abbildung 3: Packagesearch hat Pakete aufgespürt, die eine Verbindung zu zu Xpdf aufweisen.

Wählen Sie einen Eintrag aus der Listen an, so erscheinen die Details zum entsprechenden Paket im Dialog rechts unten. Über die einzelnen Reiter wählen Sie zwischen der ausführlichen Paketbeschreibung, den kompletten Paketinformationen sowie den Dateien aus, die das Paket enthält. Die Dateiliste können Sie über das Textfeld zusätzlich filtern.

Über die Eingabefeld-Kombination oben rechts gelingt die Suche mittels Debian-Tags. Dazu wählen Sie zunächst den Reiter Debtags aus, die darunter angeordnete Liste sortiert Packagesearch jeweils hierarchisch. Als Sortierkriterium für die Liste dienen hingegen die vergebenen ID-Tags für die Klassifikationsebenen. Das über der Liste angeordnete Eingabefeld fungiert als Filter für die Liste und zeigt nur jene Einträge der Liste an, bei denen es eine Übereinstimmung mit dem ID-Tag gibt. Alle anderen Einträge blendet das Programm aus.

Ein Doppelklick auf einen Listeneintrag interpretiert das ausgewählten Debian-Tag als Suchkriterium. Eine Mehrfachauswahl funktioniert ebenfalls, es erscheinen dann alle Suchkriterien in der Eingabefeld-Kombination oben links. Entsprechend der Suchkriterien zeigt Packagesearch in der Liste unten links nur die dazu passenden Pakete an. Abbildung 4 zeigt die Suche anhand der Kriterien X-Window-System und Login Manager mit den Details für das Paket kdm, und davon wiederum nur die Pakete, die nicht installiert sind.

Abbildung 4: Packagesearch beherrscht auch die Suche nach Debian-Tags.

Als recht hilfreich erweist sich der Schalter Suche löschen – er hebt die getroffene Auswahl wieder auf. Positiv fällt auch die vollständige Übersetzung der Benutzeroberfläche ins Deutsche auf.

Xara verwendet einen ähnlichen Dialogaufbau wie Packagesearch, ist jedoch komplett in englischer Sprache gehalten. Die oberen beiden Dialogboxen zeigen Detailinformationen zum ausgewählten Paket an – links die Übersicht und rechts weiterführende Details. Über das Eingabefeld Search stöbern Sie in diesem Detailfeld. Setzen Sie dabei das Häkchen bei case sensitive, hebt Xara nur exakte Treffer im Text des Detailfeldes hervor.

Die unteren beiden Dialogboxen präsentieren das Ergebnis der Paketsuche – links die Liste der Suchtreffer mit Paketname, Version und Beschreibung, rechts die Parameter zur Suche. Hinter dem Reiter Advanced verbirgt sich eine Suche auf der Basis der Debian-Tags, die auch reguläre Ausdrücke versteht. Der Reiter Simple bietet hingegen eine Unmenge textbasierter Eingabe- und Auswahlfelder zum Filtern. Alternativ gelingt eine Suche in den Paketnamen und der Beschreibung auch über den Menüpunkt Tools | Enter query.

Das Suchergebnis finden Sie links unten, die Auswahl eines Paketes füllt auch die beiden oberen Dialogboxen mit passenden Inhalten. Abbildung 5 zeigt das Suchergebnis für Programmen, die zum Windowmanager Fluxbox passen.

Abbildung 5: Eine erfolgreiche Suche in Xara nach Paketen im Fluxbox-Umfeld.

Mit dem Paketmanager Adept [13] dürfte jeder altgediente KDE-Benutzer schon einmal in Berührung gegekommen sein (Abbildung 6). Das Tool stellt Debian-Tags für das jeweils ausgewählte Paket dar, eine detailliertere Suche in den einzelnen Klassifikationsebenen analog zu Packagesearch und Xara beherrscht es aber nicht. Der empfohlene Nachfolger Apper hat die Ideen des Debtags-Projektes bislang noch gar nicht aufgegriffen und in die Benutzeroberfläche integriert.

Abbildung 6: Adept hat eine Reihe von Paketen im Xpdf-Kontext (Xubuntu) gefunden.

Auch auf der Webseite des Debian-Projekts können Sie bei der Suche nach ähnlichen Paketen auf das Debtags-Konzept zurückgreifen. Die Website listet zu jedem Paket in der rechten Spalte weiterführende Informationen auf – unter anderem Ressourcen, Paketbetreuer, Projektwebsite und ähnliche Pakete. Abbildung 7 zeigt diese Informationen für das Spiel OpenTTD.

Abbildung 7: Hier liefert Adept Zusatzinformationen zum Spiel OpenTTD.

Möchten Sie stattdessen anhand der Debian-Tags suchen, dann nutzen Sie dazu den Debtag-Service von Debian [14]. Enrico Zini stellt dort alle Informationen zum Entwicklungsstand des Debtags-Projektes online. Neben einer Programmschnittstelle (API) zur Anbindung eigener Projekte umfasst das beispielsweise auch einen Editor zur Modifikation der Tags, statistische Daten sowie eine Debtags-basierte Suche.

Fazit

Die Verschlagwortung der Debian-Pakete anhand der Debian-Tags eröffnet ein riesiges Potenzial, Software auf der Basis individueller Sichtweisen und Beschreibungen zu ordnen und wieder zu lokalisieren. Bislang ist lediglich eine Teilmenge der Pakete katalogisiert, neue Pakete werden vielfach bereits in dieses Schema eingeordnet. Die vorgestellten Text- und GUI-Werkzeuge zeigen bereits jetzt, wie einfach und zielgenau eine Recherche nach passender Software sein kann. 

Infos

[] Der Autor bedankt sich bei Enrico Zini und Axel Beckert für deren kritische Anmerkungen, Kommentare und Ergänzungen im Vorfeld dieses Artikels.

[1] Felder der control-Datei: http://www.debian.org/doc/debian-policy/ch-controlfields.html

[2] Software-Kategorien: http://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections

[3] Reguläre Ausdrücke: Frank Hofmann, "Schnipseljagd", LU 09/2011, S. 84, http://www.linux-community.de/24091

[4] Debian-Entwicklerkonferenz: http://debconf.org/

[5] Debtags-Backgrounder: Enrico Zini, "A cute introduction to Debtags", http://debtags.alioth.debian.org/paper-debtags.html

[6] Wikiseite zu Debtags: http://wiki.debian.org/Debtags

[7] Facettenklassifikation: http://de.wikipedia.org/wiki/Facettenklassifikation

[8] Derzeit gültige Debtags: http://debtags.debian.net/exports/stable-tags

[9] Grep-dctrl im "Debian-Anwenderhandbuch": http://debiananwenderhandbuch.de/grep-dctrl.html

[10] Packagesearch: http://packages.debian.org/squeeze/packagesearch

[11] Adept: http://packages.debian.org/sid/adept

[12] Xara: http://packages.debian.org/squeeze/xara-gtk

[13] Adept-Tipps: Heike Jurzik, "Tipps und Tricks zu Knoppix und Ubuntu", EasyLinux 01/2006, S. 82, http://www.easylinux.de/Artikel/ausgabe/2006/01/082-ubuntu-tipps/index.html

[14] Debtags bei Debian: http://debtags.debian.net

[15] Paketklassifikation bei Ubuntu: http://wiki.ubuntuusers.de/Paketquellen

[16] Debian-Paket apt-rdepends: http://packages.debian.org/squeeze/apt-rdepends

Der Autor

Frank Hofmann (http://www.efho.de) hat Informatik an der Technischen Universität Chemnitz studiert. Derzeit arbeitet er in Berlin im Büro 2.0 (http://www.buero20.org), einem Open-Source Experten-Netzwerk, als Dienstleister mit Spezialisierung auf Druck und Satz. Er ist Mitgründer des Schulungsunternehmens Wizards of FOSS (http://www.wizards-of-foss.de/). Seit 2008 koordiniert er das Regionaltreffen der Linux User Groups aus der Region Berlin-Brandenburg.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 7 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Related content

Kommentare