A Base de Dados MIME

A base de dados MIME é uma colecção de ficheiros que compõem:

  • O conjunto de tipos MIME conhecidos
  • O método para determinar o tipo MIME de um ficheiro
  • Meta informação sobre um tipo MIME, tal como a descrição legível por humanos a utilizar quando se apresentam ficheiros deste tipo.

5.2.1. Localização

Como administrador, o primeiro e mais importante passo para compreender o sistema MIME é aprender a localização onde estão armazenados estes ficheiros. Desde que foi escrita a primeira versão (ainda rascunho) da especificação XDG de informação mime partilhada pelo X Desktop Group, que esta utiliza a especificação XDG de directórios base. É altamente recomendado que se familiarize com esta especificação, visto também ser importante para outras tarefas de administração de sistemas tais como editar menus. Um breve resumo da localização dos directórios relacionados com a especificação MIME é apresentado abaixo.

A base de dados MIME é criada a partir do conjunto de ficheiros localizados nos directórios $XDG_DATA_HOME/mime e $XDG_DATA_DIRS/mime. Se estas variáveis de ambiente não estiverem definidas, os valores por omissão serão ~/.local/share e /usr/local/share:/usr/share, respectivamente. Tal como pode ser visto a partir do valor por omissão de $XDG_DATA_DIRS, cada variável de ambiente é na verdade uma lista de directórios separados por vírgulas. A base de dados do utilizador em $XDG_DATA_HOME/mime tem precedência sobre a base de dados de sistema em $XDG_DATA_DIRS/mime, caso sejam encontradas definições conflituantes. De forma similar à especificação XDG de mime partilhado, ir-nos-emos referir, ao longo do resto deste documento, a este conjunto de directórios como <MIME>.

Por exemplo, assumindo caminhos por omissão para as variáveis de ambiente, “Ler <MIME>/text/plain.xml significa ler os seguintes ficheiros:

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

5.2.2. Conteúdo

O seguinte é uma lista de directórios e ficheiros que se podem encontrar dentro da base de dados MIME, juntamente com breves descrições:

<MIME>/packages/

Este directório contém um número indeterminado de ficheiros XML, cada um descrevendo uma colecção de tipos MIME. Por omissão, o ficheiro freedesktop.org.xml é instalado no directório /usr/share/mime/packages. Este ficheiro contém todos os tipos MIME por omissão que são largamente reconhecidos e utilizados.

Aplicações que disponibilizam informação sobre novos tipos MIME deverão instalar aqui um único ficheiro XML novo. Dependendo do prefixo onde a aplicação é instalada, irá criar o ficheiro no subdirectório /mime/package de um dos directórios indicados em $XDG_DATA_HOME:$XDG_DATA_DIRS. Por exemplo, uma aplicação instalada em /usr/bin deverá instalar um novo ficheiro XML de código no directório /usr/share/mime/packages. Para mais informações sobre os ficheiros XML no directório packages, consulte Secção 5.3 ― Os ficheiros XML de origem.

<MIME>/MEDIA/SUBTIPO.xml

Estes directórios e ficheiros são gerados automaticamente a partir da colecção de ficheiros XML de origem que estão no directório <MIME>/packages/ pela aplicação update-mime-database. Por exemplo, para cada elemento mime-type no ficheiro /usr/share/mime/packages/freedesktop.org.xml, é criado um directório em /usr/share/mime/ com o tido de media do tipo MIME. É criado um ficheiro XML nesse directório com o identificador de subtipo desse tipo MIME. O conteúdo do ficheiro de XML criado inclui comentários (e traduções destes), designações de subclasses e alcunhas (nomes alternativos).

Example 5-1Exemplo: o ficheiro /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="pt">documento de texto simples</comment>
  <!-- possibly more translations -->
</mime-type>
Este ficheiro é gerado pela aplicação update-mime-database, utilizando o ficheiro XML de origem por omissão freedesktop.org.xml.

<MIME>/globs

Contém uma linha com um tipo mime e um padrão glob, separado por uma vírgula. Ficheiros que tenham equivalência ao padrão glob são consideradas como sendo do tipo MIME especificado antes da vírgula. Existem regras especiais sobre como é feita a equivalência dos nomes de ficheiros ao padrão glob; para mais detalhes consulte a especificação XDG de mime partilhado.

Este ficheiro é também gerado pela aplicação update-mime-database, utilizando o ficheiro XML de origem por omissão freedesktop.org.xml.

<MIME>/magic

Um ficheiro binário que contém informação sobre como resolver tipos MIME “inspeccionando” o conteúdo do ficheiro. Normalmente isto consiste numa ou mais regras tais como “verificar a existência da expressão %PDF- no byte offset 0 no ficheiro; se encontrada, atribuir-lhe o tipo MIME application/pdf.

Este ficheiro é também gerado pela aplicação update-mime-database.

<MIME>/XMLnamespaces

Contém um mapeamento dos nomes de espaços XML para tipos MIME. Cada linha contém três campos, o nome do espaço, o localName (nome local) e o tipo MIME. Cada campo é separado por um espaço. Se o localName for vazio, existirão dois espaços entre o nome do espaço e o tipo MIME.

Este ficheiro é também gerado pela aplicação update-mime-database.

<MIME>/aliases

Contém uma lista de alcunhas (ou nomes alternativos) para cada tipo MIME. Uma alcunha é simplesmente um tipo MIME que por vezes é conhecido por outro tipo. Para cada linha neste ficheiro existem dois campos: o primeiro é a alcunha, o segundo é o tipo MIME. Os campos são separados por um espaço.

Este ficheiro é também gerado pela aplicação update-mime-database.

<MIME>/subclasses

Contém uma lista de tipos MIME com subclasses MIME e o seu tipo MIME “pai”. Citando a especificação XDG de mime partilhado:

Um tipo é uma subclasse de outro tipo se uma qualquer instância do primeiro tipo for também uma instância do segundo. Por exemplo, todos os ficheiros image/svg são também ficheiros text/xml, text/plain e application/octet-stream. Subclasses são segundo o formato, e não segundo a categoria dos dados (por exemplo, não existe nenhuma classe 'folha de cálculo genérica' que todas as folhas de cálculo herdem).

O formato deste ficheiro é semelhante ao do ficheiro aliases (alcunhas). Cada linha contém dois campos, onde o primeiro é o tipo MIME da subclasse e o segundo é o tipo MIME pai. Cada campo está separado por um espaço.

Este ficheiro é também gerado pela aplicação update-mime-database.

5.2.3. Actualizar a Base de Dados MIME

Compreender como actualizar a base de dados MIME é importante para os administradores que desejem adicionar novos tipos MIME ao sistema, ou alterar informação sobre um tipo MIME. A aplicação update-mime-database destina-se a este fim.

Por exemplo, se uma aplicação instalar informação sobre um novo tipo MIME em /usr/share/mime/packages/diff.xml, então a update-mime-database deverá ser executada com o parâmetro /usr/share/mime.

# update-mime-database /usr/share/mime
***
* A actualizar a base de dados MIME em /usr/share/mime...
***

A base de dados MIME é actualizada analisando-se todos os ficheiros XML de origem no directório <MIME>/packages.