staging.inyokaproject.org

MIME-Typ

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Der MIME-Standard wird in verschiedenen Anwendungsbereichen zur Deklaration von Dateiinhalten eingesetzt,- darunter u.a. die Multimedia-Kommunikation verschiedener Internet-Protokolle oder Dateimanager von Desktop-Umgebungen. MIME-Types (heute auch „Internet Media Types“ oder „Content-Types“ genannt) bezeichnen die einzelnen Definitionen, in denen Dateiinhalte und Dateiformate referenziert werden, um eine softwareseitige Identifikation einer Datei zu ermöglichen bzw. zu erleichtern.

Die offizielle Registrierung eines MIME-Types wird von der IANA 🇬🇧 (Internet Assigned Numbers Authority) übernommen. Diese Organisation pflegt auch eine aktuelle Liste der offiziell registrierten MIME-Types 🇬🇧.

Historisch gesehen steht MIME für Multipurpose Internet Mail Extension. Es wurde ursprünglich als Standard zur Erweiterung des E-Mail-Protokolls entwickelt. Damit wurde es möglich, per E-Mail nicht nur reinen ASCII-Text, sondern beliebige Dateiformate zu senden, z.B. im Anhang einer E-Mail.

Normalerweise kommt man als Desktopbenutzer mit MIME-Typen nicht direkt in Berührung bzw. muss hier Einstellungen vornehmen, sofern man nicht explizit einen bestimmten MIME-Typ einem bestimmten Programm zuordnen möchte.

Allgemein

Die Namensgebung der MIME-Typen folgt einer in den Spezifikationen des Standards zur Kategorisierung und Vermeidung von Namenskonflikten festgelegten Form. Diese Konvention beinhaltet zusätzlich eine Vorgabe, wie nicht offiziell registrierte MIME-Typen zu benennen sind.

VENDORPREFIX-CONTENTTYPE/VENDORPREFIX-SUBTYPE
  • CONTENTTYPE bezeichnet Obergruppen, in die einzelne Definitionen kategorisiert werden. Eine Liste der offiziellen Gruppen mit Beschreibung kann in der Wikipedia eingesehen werden.

  • SUBTYPE ist die eigentliche Definition samt Um-/Beschreibung eines MIME-Typs für sein jeweiliges Dateiformat.

  • VENDORPREFIX stellt als zusätzliches Präfix vor einem CONTENTYPE oder SUBTYPE die legitime Möglichkeit dar, nicht offiziell von der IANA registrierte MIME-Types von system- bzw. herstellerspezifischen zu unterscheiden um Konflikte zu vermeiden. Das gängige Präfix für Linux ist ein x-.

Beispiele:

  • text/html - Das offizielle von der IANA registrierte HTML-Dokument in der Standardobergruppe text.

  • image/x-xcf - Das nicht offiziell von der IANA registrierte Speicherformat von GIMP in der Standardgruppe image.

  • x-content/blank-cd - Der MIME-Type für eine leere CD in der systemspezifischen Obergruppe x-content. Das Präfix für den SUBTYPE kann hier entfallen, weil durch die Obergruppe bereits eindeutig ist, dass keiner der enthaltenen SUBTYPES offiziell registriert sein kann.

Um einen MIME-Type mit dem Inhalt eines bestimmten Dateiformats zu referenzieren, kommen verschiedenen Methoden je nach Implementation des Standards in der jeweiligen Softwareumgebung zum Einsatz. Zwei der gängigsten Methoden referenzieren einmal anhand von Globs im Dateinamen, besser bekannt als Dateiendung, und anhand einer Magischen Zahl, auch bekannt als "MIME-Sniffing".

Bei der zweiten Methode wird unabhängig von einer Dateiendung direkt im Binärcode nach einer einheitlichen Abfolge von Bytes am oder in der Nähe des Anfangs einer Datei gesucht, um ein Dateiformat eindeutig zu identifizieren. Beide Methoden haben ihre Vor- und Nachteile, sind aber besonders effektiv, wenn sie – wie z.B. unter Linux – gemeinsam verwendet werden.

MIME-Typen in Linux

Unter Linux gibt es verschiedene Implementationen des MIME-Standards, die für eine bestimmte Software oder eine ganze Softwareumgebung Musterdateien oder Datenbanken verwenden, die Definitionen für MIME-Typen enthalten. Das UNIX-Dateisystem, das als konkrete Vorlage für sämtliche Linux-Dateisysteme dient, interpretiert genau ein Dateiformat – nämlich "Datei".

Dieses UNIX-Dateiformat wird zusätzlich unterteilt in spezielle Typen, die über die Rechteverwaltung des Dateisystems definiert werden. Dateistruktur und -interpretation ist damit allein Aufgabe von Software, deswegen ist zur Unterscheidung der Unmengen tatsächlich existierender Dateiformate eine solche Implementation in Linux notwendig.

Gemeinsame MIME-Datenbank

Quasi alle aktuellen Desktop-Umgebungen inklusive denen, die von Ubuntu und dessen Derivaten verwendet werden, folgen der Freedesktop XDG Spezifikation 🇬🇧. Es wird eine gemeinsame MIME-Datenbank verwendet. Diese ist in allen Desktop-Umgebungen einheitlich gemäß den Spezifikationen dort implementiert.

Die Datenbank besteht vorwiegend aus XML-Dateien und einigen binären Musterdateien, in denen die Definitionen eines MIME-Typen abgelegt sind. Zu diesen Definitionen gehört neben Globs und Magischen Zahlen für die Referenzierung auch eine mehrsprachige kurze Beschreibung, die standardmäßig in Dateimanagern angezeigt wird.

Diese gemeinsame MIME-Datenbank stellt die derzeit für die meisten Anwender wichtigste Implementation des MIME-Standards in Linux dar. Dateiidentifikation in Dateimanagern, Festlegen von Standardanwendungen oder die Syntax-Hervorhebung in GTKSourceView-basierenden 🇬🇧 Texteditoren wie gedit basieren im Prinzip auf den Informationen in dieser Datenbank.

Genaueres zum Aufbau der gemeinsamen MIME-Datenbank kann man in den Spezifikationen 🇬🇧 der XDG nachlesen.

Musterdateien

Das erste Werkzeug zur softwareseitige Identifikation war der Kommandozeilenklassiker file, der bereits seit Anfang der 1970er Jahre fester Bestandteil von UNIX wurde und auch heute noch zur Standardinstallation der meisten Linux-Distribution gehört. Das Programm referenzierte ursprünglich "Magische Zahlen" mit einer kurzen Beschreibung für jedes Dateiformat in einer Musterdatei. Seit 2001 werden in einer weiteren Musterdatei diese magischen Zahlen auch mit einer Beschreibungen gemäß der Namenskonvention des MIME-Standards referenziert.

file hat zwar heute noch mit Recht seinen Platz in einer Kommandozeilenumgebung, die Musterdatei ist nach heutigem Stand aber weder besonders vollständig noch aufgrund der komplexen Escape-Regeln einfach anzupassen. Zudem spielt das Programm in den aktuellen Desktop-Umgebungen nur eine untergeordnete Rolle. Wer sich dennoch näher dafür interessiert, findet in den Manpages zu file und magic einen ausführlichen Einstieg in die Materie.

Ähnliche, einfacher anzupassende Musterdateien werden auch von anderer Software verwendet, wie z.B. vom E-Mail-Client NeoMutt, dem Webserver Apache oder dem Drucksystem CUPS. Das gehört aber zur Konfiguration dieser Software und ist in deren Dokumentation genauer erklärt.

Benutzung der gemeinsamen MIME-Datenbank

Obwohl das von der XDG bereitgestellte Paket der MIME-Typen bereits sehr umfangreich ist, Programme mit ihren eigenen Dateiformaten in der Regel automatisch bei der Installation in die Datenbank einfügen und in den Symbol-Sätzen (Icon Sets) für die meisten MIME-Typen existieren, besteht trotzdem hin und wieder die Notwendigkeit, als Anwender selbst Hand anzulegen. Ein gutes Beispiel ist die Syntax-Hervorhebung für auf GTKSourceView basierenden Texteditoren nachzurüsten, weil dabei ein MIME-Type für die Quellcodedatei existieren muss.

Die gemeinsame Datenbank befindet sich in den Verzeichnissen:

  • /usr/share/mime/ (systemweite Datenbank)

  • ~/.local/share/mime/ (benutzerdefinierte Datenbank)

Für den Anwender sind dort lediglich die XML-Dateien in den folgenden beiden Verzeichnissen relevant:

  • /usr/share/mime/packages/ (systemweite MIME-Type-Pakete)

  • ~/.local/share/mime/packages/ (benutzerdefinierte MIME-Type-Pakete)

Das Verzeichnis ~/local/share/mime/ existiert nur, wenn bereits benutzerdefinierte Einträge hinterlegt wurden.

Der Begriff „Paket“ bzw. das Verzeichnis packages erscheint im ersten Moment etwas verwirrend, rührt aber daher, dass in einer dieser XML-Dateien die Definitionen für mehr als einen MIME-Type abgelegt werden können. Zum Beispiel enthält die Datei /usr/share/mime/packages/freedesktop.org.xml alle Definitionen für MIME-Types, die von der XDG bereitgestellt werden – darunter auch sämtliche offiziell von der IANA registrierten MIME-Types.

Diese „Pakete“ sind an sich kein Bestandteil der eigentlichen Datenbank, sondern dienen als Eingabedateien, aus denen mit einem Befehl automatisch die Datenbank generiert bzw. erweitert wird.

Grundsätzlich sollte man nie Änderungen und Ergänzungen in /usr/share/mime und dessen Unterverzeichnissen machen, zumal diese Änderungen bei einem Update überschrieben würden. Alle möglicherweise notwendigen Änderungen / Ergänzungen gehören nach ~/.local/share/mime.

Dateimananger

Viele Dateimanager können den MIME-Typ anzeigen. Dazu muss man in der Regel mit der rechten Maustasten rechte Maustaste auf die Datei klicken und dann im Menü den Punkt "Eigenschaften" auswählen. Wo genau und wie der Typ angezeigt wird hängt vom jeweiligen Dateimanager ab.

Kommandozeile

Die XDG bietet für die Arbeit mit der gemeinsamen MIME-Datenbank einen Satz Skripte an, die einige Prozesse automatisieren und somit vereinfachen sollen. Das Paket xdg-utils enthält unter anderem die hier relevanten Scripte xdg-mime, xdg-open und xdg-icon-resource.

Den MIME-Typ für eine Datei DATEI kann man mit

xdg-mime query filetype DATEI 

abfragen[1]. Weiter Informationen dazu sind im Artikel xdg-utils (Abschnitt „xdg-mime“) zu finden.

MIME-Typen installieren

Das Verfahren zum Hinzufügen neuer / eigener MIME-Typen ist im Artikel xdg-utils (Abschnitt „Neuen-MIME-Typ-erstellen“) beschrieben.

Symbole für MIME-Types

Einem MIME-Type kann ein Symbol zugeordnet werden, dass dann z.B. im Dateimanager angezeigt wird. Die Symbole befinden sich in den den Verzeichnissen:

  • /usr/share/icons/ (systemweit)

  • ~/.local/share/icons/ (pro Benutzer)

und sind in der Regel in den Abmessungen quadratisch (Beispiel: 128x128 Pixel). Die Abmessungen sind aber nicht zwingend vorgeschrieben. Häufig sind die Symbole in unterschiedlichen Abmessungen auf eigene Ordner verteilt. Als Format wird meist .png, .svg oder das ältere .xpm verwendet. SVG ist ein Vektorgrafikformat, was in der Praxis stufenloses Skalieren ermöglicht. Nachteilig ist aber im Gegensatz zu PNG die teilweise fehlende Unterstützung durch die verwendete Desktop-Umgebung.

Standardanwendung für MIME-Typ festlegen

Die systemweiten Voreinstellungen können durch den Benutzer ergänzt werden. Dies kann immer dann sinnvoll sein, wenn man einen bestimmten Dateityp bzw. MIME-Typ ein bestimmtes Programm zuordnen möchte.

Möchte man generell ein Standardprogramm ändern, wie z.B. einen anderen Bildbetrachter einstellen, dann sollte man besser den Weg wie im Wikiartikel Alternativen-System beschrieben gehen. Dann werden direkt alle Dateizuordnungen geändert. Dies können durchaus viele sein. So sind z.B. bei Ubuntu mit GNOME-Desktop alleine 45 MIME-Typen dem Bildbetrachter zugeordnet.

Es gibt drei relevanten Dateien, in denen die Zuordnung hinterlegt ist. Diese werden in folgender Reihenfolge eingelesen und ausgewertet.

  1. /usr/share/applications/defaults.list - definiert die systemweite Zuordnung eines MIME-Typs zu einer Anwendung

  2. /etc/xdg/mimeapps.list - die Datei existiert standardmäßig unter Ubuntu nicht. Wenn man diese angelegt, kann für alle Nutzer die systemweite Zuordnung ändern

  3. ~/.config/mimeapps.list nutzerspezifische Zuordnung

Die später eingelesene Datei kann Zuordnungen aus der / den vorangegangenen Überschreiben.

Grundsätzlich sollte man nie Änderungen unter /usr/share/applications/defaults.list machen, da diese bei einem Update verloren gehen. Systemweite Änderung nimmt man also in /etc/xdg/mimeapps.list vor, benutzerspezifische in ~/.config/mimeapps.list. Diese Dateien lassen sich bei Bedarf mit einem Editor bearbeiten [2]. Letzten Endes machen Dateimanager auch nichts anderes.

Beispiel

Das Programm Geeqie soll als Standardanwendung (Doppelklick links) für PNG-Dateien fest gelegt werden. Dazu nimmt man folgende Ergänzung in der Datei ~/.config/mimeapps.list vor:

  • ~/.config/mimeapps.list

    [Default Applications]
    image/png=geeqie.desktop
    [Added Associations]
    image/png=gpicview.desktop;eog.desktop;firefox.desktop;mtpaint.desktop;geeqie.desktop;

Im Abschnitt [Default Applications] wird die Zuweisung vorgenommen, das Dateien mit dem MIME-Typ image/png dem Programm Geeqie bzw. genau genommen dem Starter geegie.desktop zugeordnet wird. Diese .desktop-Datei muss entweder unter usr/share/applications/ oder ~/.local/share/applications liegen.

Der Abschnitt [Added Associations] definiert weitere Programme, mit denen die Datei alternativ geöffnet werden könnte.

Zuweisung im Dateimanager

Wer darüber hinaus Einstellungen für bestimmte Dateien vornehmen möchte, kann dies entweder gegebenenfalls mit dem jeweiligen Dateimanager und dessen Kontextmenü rechte Maustaste erledigen ("Öffnen mit" und "Einstellung merken") oder direkt die Dateien anpassen, auf denen die Zuordnung basiert.

Diese Revision wurde am 17. Mai 2023 18:53 von ChickenLipsRfun2eat erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: System, Desktop, GNOME 3, MATE, KDE, Xfce, LXDE