Типы файлов (MIME)
Last updated
Last updated
Когда вы выбираете ссылку на MP3-файл в браузере или менеджере файлов, этот файл автоматически воспроизводится в проигрывателе. Если такая связь работает, это значит, что типы MIME в системе сконфигурированы правильно.
Аббревиатура MIME означает Multipurpose Internet Mail Extensions — «многоцелевые расширения электронной почты». Первоначально типы MIME разрабатывались для приложений к электронным письмам. Если к письму присоединялся, например, файл в формате PostScript или JPEG, то клиент электронной почты сразу знал, с помощью какой программы следует просмотреть или обработать этот файл. Чтобы данный механизм работал, требовалось настроить конфигурацию MIME.
Однако со временем область применения типов MIME существенно расширилась: когда вы переходите к файлу по ссылке, стоящей в браузере или в файловом менеджере, программа должна знать, как поступить с данным файлом. Итак, правильная конфигурация типов MIME важна в любых программах, которые должны уметь работать с файлами различных типов.
Linux не была бы Linux (или UNIX), если бы в системе имелось только центральное место для проведения конфигурации MIME. Такие места, конечно, есть, но они не централизованы, и их очень много. Данные MIME для программ KDE, программ Gnome, различных браузеров, системы печати CUPS и т. д. управляются по отдельности. Кроме того, есть и центральная система конфигурации MIME для всех тех программ, которые не располагают собственными файлами MIME.
Существуют разные причины того, что конфигурация MIME в Linux была распределена по нескольким местам. При работе KDE и Gnome применяется концепция, в соответствии с которой для обработки различных типов данных используются разные компоненты. Если в файловом менеджере программы KDE необходимо открыть файл-изображение в формате PNG, то в систему просто загружаются, а затем выполняются соответствующие компоненты. Поскольку библиотеки KDE и Gnome, как правило, несовместимы друг с другом, попытка файлового менеджера KDE выполнить компоненты Gnome (и наоборот) привела бы к катастрофическим последствиям. Во избежание такой ситуации KDE и Gnome используют собственные отдельные базы данных по MIME. По сходным причинам собственная конфигурация MIME присваивается и другим программам.
При работе со многими конфигурационными файлами MIME необходимо различать глобальную и индивидуальную конфигурацию, то есть общие настройки и настройки для отдельно взятого пользователя. Далее показана базовая конфигурация компонентов MIME в системе Linux.
Общая конфигурация MIME. Общие файлы конфигурации MIME используются только теми программами, которые не располагают собственными файлами MIME. Настройки разделены на два файла, один из которых представляет собой глобальную версию, а другой — пользовательскую.
Файл mime.types содержит список, в котором представлено соответствие между типами файлов (первый столбец) и расширениями файлов (все остальные столбцы). Например, типу application/pdf соответствует расширение PDF. В списке mime.types различаются текстовые приложения и X-приложения, типы MIME которых имеют вид application/x-name.
в /etc/mime.types
...
application/pdf pdf
Файл mailcap указывает, какая программа должна применяться для отображения или обработки файла того или иного типа. В следующей строке сообщается, что для отображения файлов PDF следует использовать программу evince. В отличие от mime.types, столбцы mailcap должны разделяться точками с запятой; %s — это подстановочный символ для имен файлов.
в /etc/mailcap
application/pdf; evince %s
Тип MIME предназначен для того, чтобы те или иные файлы открывались или обрабатывались программами, предназначенными специально для этого. Но как вообще удается установить тип обрабатываемого файла? Как правило, тип файла определяется по его расширению. Например, расширение *.ps означает, что перед нами файл PostScript.
Если файл не имеет такого идентификатора, программа file или соответствующие программы систем KDE или Gnome пытаются вычленить эквивалент типа файла по первому байту, содержащемуся в этом файле, либо по характерным для него последовательностям символов. Метод распознавания основывается на информации о том, какие байты и типичные последовательности символов может содержать файл; эта информация встраивается в команду file при компиляции. В некоторых дистрибутивах стандартную конфигурацию можно изменять с помощью файлов /etc/magic или ~/.magic.