La base de données MIME

La base de données MIME est un ensemble de fichiers qui déterminent :

  • L'ensemble des types MIME connus
  • La méthode pour déterminer le type MIME d'un fichier
  • Des métadonnées sur les types MIME, telles qu'une description intelligible destinée à l'affichage des fichiers du type concerné.

V.II.I. Emplacements

En tant qu'administrateur, la première étape élémentaire la plus importante pour la compréhension du système MIME est l'apprentissage de l'emplacement des fichiers. Dans la mesure où la spécification XDG de l'information MIME partagée a été préparée par le groupe X Desktop, cette spécification fait aussi appel à la spécification XDG des répertoires de base. Il est fortement recommandé de se familiariser avec cette dernière, car elle est également importante pour d'autres tâches d'administration système telle que l'édition des menus. Un bref résumé des emplacements des répertoires en lien avec la spécification MIME figure ci-dessous.

La base de données MIME est créée à partir d'un ensemble de fichiers situés dans les répertoires $XDG_DATA_HOME/mime et $XDG_DATA_DIRS/mime. Si ces variables d'environnement ne sont pas définies, les valeurs par défaut utilisées sont respectivement ~/.local/share et /usr/local/share:/usr/share. Comme on peut le voir en examinant la valeur par défaut pour $XDG_DATA_DIRS, chaque variable d'environnement est composée d'une liste de répertoires séparés par le caractère deux-points. La base de données utilisateur dans $XDG_DATA_HOME/mime a priorité sur la base de données système dans $XDG_DATA_DIRS/mime lorsque des définitions contradictoires apparaissent. En accord avec la spécification XDG de l'information MIME partagée, nous faisons référence à cet ensemble de répertoires par l'expression <MIME> dans la suite de ce document.

Par exemple, en supposant que les variables d'environnement possèdent les valeurs par défaut, « Charger <MIME>/text/plain.xml » implique le chargement des fichiers suivants :

  • ~/.local/share/mime/text/plain.xml
  • /usr/local/share/mime/text/plain.xml
  • /usr/share/mime/text/plain.xml

V.II.II. Contenu

Voici une liste de répertoires et de fichiers se trouvant dans la base de données MIME, accompagnés de brèves descriptions :

<MIME>/packages/

Ce répertoire contient un nombre indéfini de fichiers XML décrivant chacun une collection de types MIME. Par défaut, le fichier freedesktop.org.xml est installé dans le répertoire /usr/share/mime/packages. Il contient tous les types MIME par défaut unanimement employés et reconnus.

Les applications qui offrent des informations à propos de nouveaux types MIME doivent installer un seul nouveau fichier XML à cet endroit. Selon le préfixe d'installation de l'application, le fichier sera créé dans le sous-répertoire /mime/package d'un des répertoires contenus dans $XDG_DATA_HOME:$XDG_DATA_DIRS. Par exemple, une application installée dans /usr/bin doit installer un nouveau fichier XML source dans le répertoire /usr/share/mime/packages. Pour plus d'informations sur les fichiers XML des répertoires packages, veuillez consulter Section V.III ― Fichiers XML source.

<MIME>/MÉDIA/SOUS-TYPE.xml

Ces répertoires et fichiers sont automatiquement générés par l'applicationupdate-mime-database à partir de la collection de fichiers XML sources du sous-répertoire <MIME>/packages/. Par exemple, pour chaque élément mime-type du fichier /usr/share/mime/packages/freedesktop.org.xml, un répertoire est créé dans /usr/share/mime/ avec le type média correspondant du type MIME. De plus, un fichier XML portant le nom de l'identifiant de sous-type du type MIME est créé dans ce répertoire. Le contenu de ce fichier contient des commentaires (ainsi que leurs traductions), des appellations de sous-classes et des alias.

Exemple V.1 Exemple : fichier /usr/share/mime/text/plain.xml

<?xml version='1.0' encoding='utf-8'?>
<mime-type xmlns="http://www.freedesktop.org/standards/shared-mime-info" type="text/plain">
<!--Created automatically by update-mime-database. DO NOT EDIT!-->
  <comment>plain text document</comment>
  <!-- possibly more translations -->
  <comment xml:lang="es">documento de texto sencillo</comment>
  <comment xml:lang="eu">testu soileko dokumentua</comment>
  <comment xml:lang="fi">perustekstiasiakirja</comment>
  <comment xml:lang="fr">document plein texte</comment>
  <!-- possibly more translations -->
</mime-type>
Ce fichier est généré par l'application update-mime-database à l'aide du fichier XML source par défaut, freedesktop.org.xml.

<MIME>/globs

Contient une ligne avec un type MIME et un motif de correspondance, séparé par un deux-points. Les fichiers correspondant au motif sont attribués au type MIME spécifié avant le deux-points. Il existe des règles spéciales sur la manière de faire correspondre les noms de fichiers avec le motif de correspondance ; pour plus de détails, consultez la spécification XDG de l'information MIME partagée.

Ce fichier est également généré par l'application update-mime-database à l'aide du fichier XML source par défaut, freedesktop.org.xml.

<MIME>/magic

Un fichier binaire qui contient des informations sur la manière de résoudre les types MIME en « reniflant » le contenu du fichier. En général, c'est un ensemble d'une ou de plusieurs règles du type « vérifie si la chaîne %PDF- se trouve à l'octet 0 du fichier ; si oui, attribue au fichier le type MIME application/pdf ».

Ce fichier est également généré par l'application update-mime-database.

<MIME>/XMLnamespaces

Contient une correspondance entre les espaces de nom XML et les types MIME. Chaque ligne comporte trois champs séparés par des espaces, l'espace de nom, le nom local (localName) et le type MIME. Si localName est vide, il y a deux espaces entre l'espace de nom et le type MIME.

Ce fichier est également généré par l'application update-mime-database.

<MIME>/aliases

Contient une liste d'alias pour chaque type MIME. Un alias est simplement un type MIME qui est parfois connu sous un autre nom. Chaque ligne de ce fichier comporte deux champs séparés par des espaces : le premier champ est le nom de l'alias et le second champ est le type MIME.

Ce fichier est également généré par l'application update-mime-database.

<MIME>/subclasses

Contient une liste des sous-classes de types MIME avec leur type MIME « parent ». D'après la spécification XDG de l'information MIME partagée :

Un type est une sous-classe d'un autre type dans le cas où toute instance du premier est aussi une instance du second. Par exemple, tous les fichiers image/svg sont également des fichiers text/xml, text/plain et application/octet-stream. Les sous-classes concernent le format, et non pas la catégorie des données (par exemple, il n'existe pas de classe « feuille de calcul » générique héritée par toutes les feuilles de calcul).

Le format de ce fichier est semblable au fichier aliases. Chaque ligne comporte deux champs séparés par des espaces, le premier étant le type MIME sous-classe et le second le type MIME parent.

Ce fichier est également généré par l'application update-mime-database.

V.II.III. Réactualisation de la base de données MIME

Il est important que les administrateurs souhaitant ajouter de nouveaux types MIME à un système ou modifier l'information d'un type MIME comprennent la manière de réactualiser la base de données MIME. L'application update-mime-database est conçue pour cela.

Par exemple, si une application installe de l'information sur un nouveau type MIME dans /usr/share/mime/packages/diff.xml, update-mime-database doit être lancé avec le paramètre /usr/share/mime.

# update-mime-database /usr/share/mime
***
* Mise à jour de la base de données MIME dans /usr/share/mime...
***

La base de données MIME est réactualisée en analysant tous les fichiers XML source dans le répertoire <MIME>/packages.