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.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 7 Heftseiten

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

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare

Infos zur Publikation

title_2014_09

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...
Öhm - wozu Benutzername, wenn man dann hier mit Klarnamen angezeigt wird?
Thomas Kallay, 03.07.2014 20:30, 1 Antworten
Hallo Team von Linux-Community, kleine Zwischenfrage: warum muß man beim Registrieren einen Us...