{"id":382,"date":"2013-11-30T15:07:18","date_gmt":"2013-11-30T14:07:18","guid":{"rendered":"http:\/\/www.instruyete.org\/?p=382"},"modified":"2013-11-30T15:07:18","modified_gmt":"2013-11-30T14:07:18","slug":"mime-types-unter-linux","status":"publish","type":"post","link":"https:\/\/www.instruyete.org\/?p=382","title":{"rendered":"MIME Types unter Linux"},"content":{"rendered":"<p>Die <em><strong>M<\/strong>ultipurpose <strong>I<\/strong>nternet <strong>M<\/strong>ail <strong>E<\/strong>xtensions<\/em> sind entgegen ihrem Namen auch f\u00fcr die Identifizierung eines Dateityps auf Linux Desktops verantwortlich.<\/p>\n<p>Eine gemeinsame Technik der <em>freedesktop<\/em> Organisation sorgt daf\u00fcr, dass ein Verfahren dabei auf allen Desktops&#8216; &#8211; <em>Gnome<\/em>,<em>KDE<\/em>,<em>Unity<\/em>.. &#8211; gleichermassen funktioniert. Die gemeinn\u00fctzige Organisation k\u00fcmmert sich dabei vor allem um die Standardisierung und stellt teilweise sogar SW (software) bereit.<br \/>\nEine \u00dcbersicht der MIME-Type Spezifikation findet sich <a href=\"http:\/\/www.freedesktop.org\/wiki\/Specifications\/shared-mime-info-spec\/\" title=\"\u00dcbersicht MIME-Typ Information\">hier<\/a>, w\u00e4hrend der Ordner mit den letzten verf\u00fcgbaren \u00c4nderungen sich <a href=\"http:\/\/standards.freedesktop.org\/shared-mime-info-spec\" title=\"Ordner mit den MIME-Typ Spezifikationen\">hier<\/a> befindet.<\/p>\n<p>Wenn man einen oder mehrere neue MIME-Types (mit dazugeh\u00f6rigem Programm) einf\u00fchren m\u00f6chte, geht man am besten folgenderma\u00dfen vor:<\/p>\n<ol>\n<li>\nMan sucht sich einen passenden Ablageordner &#8211; die auf dem System vorhandenen sind<br \/>\n<code>$XDG_DATA_DIRS\/mime<br \/>\n$XDG_HOME_DIR\/mime<\/code><br \/>\nfalls XDG_HOME_DIR nicht gesetzt ist, gilt<br \/>\n<code>~\/.local\/share\/mime<\/code><br \/>\nNat\u00fcrlich kann man bspw. <strong>XDG_DATA_DIRS<\/strong> auch erweitern um einen neuen Pfad einzuf\u00fchren\n<\/li>\n<li>Eigene MIME-Type Deklarierungen m\u00fcssen innerhalb einer standardisierten <strong>XML-basierenden Datei<\/strong> im Ordner <em>packages<\/em> (unterhalb des Ordners <em>mime<\/em>) gespeichert werden, bspw<br \/>\n<code>~\/.local\/share\/mime\/packages\/myType.xml<\/code><br \/>\nEine <strong>xml Datei<\/strong> kann dabei auch <strong>mehrere MIME-Types definieren<\/strong>. Der genaue Vorgang erkl\u00e4rt eine hervorragende Tutorialseite auf freedesktop:<br \/>\n<a href=\"http:\/\/www.freedesktop.org\/wiki\/Specifications\/AddingMIMETutor\/\" title=\"Adding MIME-Type Tutorial\">Tutorial: adding MIME information to the database<\/a>\n<\/li>\n<li>Die sog. MIME-Type database muss aktualisiert werden. Dazu gibt es ein Skript welches die ganzen im Punkt 1. erw\u00e4hnten Verzeichnisse durchscannt und dort jeweils dezentral bin\u00e4r aufgebaute Hilfsdateien anlegt. Das shell script welches nat\u00fcrlich mit Administrationsrechten ausgef\u00fchrt werden muss, lautet<br \/>\n<code>update-mime-database<\/code>\n<\/li>\n<li>Die Verkn\u00fcpfung eines MIME-Types mit einem Programm ist nicht Sache der MIME-Type Definition. Stattdessen legen die Programmbeschreibungsdateien, die sog. <em>desktop-Dateien<\/em>, offen welche MIME-Types sie bearbeiten. Diese Dateien mit der Endungs <strong>.desktop<\/strong>, liegen in<br \/>\n<code>XDG_DATA_DIRS\/application<br \/>\nXDG_HOME_DIR\/application<\/code><br \/>\nmit denselben Erg\u00e4nzungen wie im Punkt 1.<br \/>\nDie freedesktop Spezifikation findet man auf <a href=\"http:\/\/standards.freedesktop.org\/desktop-entry-spec\/latest\/\" title=\"Desktop Entry Specification\">folgender Seite<\/a>. Ein anschauliches Beispiel findet sich <a href=\"http:\/\/standards.freedesktop.org\/desktop-entry-spec\/latest\/apa.html\" title=\"Example Desktop Entry File\">hier<\/a>.\n<\/li>\n<li>Nachdem man die MIME-Types und Anwendungen die bestimmte MIME-Types bearbeiten k\u00f6nnen festgelegt hat bleibt noch folgende Frage zu kl\u00e4ren: Welche Anwendung ist die <strong>bevorzugte Anwendung eines MIME-Types<\/strong>, bspw. image\/png ?<br \/>\nDort hat jeder Desktop (bspw. KDE) seine Voreinstellungen in der generierten <em>mime.cache<\/em> Datei (siehe Punkt 3. &#8211; Hilfsdateien) getroffen. Diese Entscheidungen k\u00f6nnen aber erg\u00e4nzt oder ge\u00e4ndert werden.<br \/>\nDazu muss man die Datei<br \/>\n<code>mimeapps.list<\/code><br \/>\nunterhalb von<br \/>\n<code>XDG_DATA_DIRS\/application<br \/>\nXDG_HOME_DIR\/application<\/code><br \/>\n\u00e4ndern. Wie genau erkl\u00e4rt die Spezifikation auf freedesktop <a href=\"http:\/\/www.freedesktop.org\/wiki\/Specifications\/mime-actions-spec\/\" title=\"MIME-Type Actions Specification\">an dieser Stelle<\/a>.<br \/>\nNeben der Angabe einer bevorzugten Anwendung f\u00fcr einen MIME-Type in der Sektion<br \/>\n<code>[Default Associations]<\/code><br \/>\ngibt es auch noch die M\u00f6glichkeit zus\u00e4tzliche Assoziationen zu kreieren oder zu vorhandene zu l\u00f6schen.<\/p>\n<li>Am Ende bleibt noch die Frage wie man an diese MIME-Type Informationen gelangt? Sicher, haben die grossen Desktops Routinen daf\u00fcr entwickelt die den Spezifikationen von freedesktop gen\u00fcgen, aber wie kommt man als ISV (<em>Independent Software Vendor<\/em>) an diese Informationen.<br \/>\nVorab &#8211; eine API gibt es nicht &#8211; unter keiner Sprache. Was es gibt sind Skripte allen voran<br \/>\n<code>xdg-mime<\/code><br \/>\ndes Portland SW Paketes von freedesktop (der SW Part von freedesktop, siehe Einleitung). Unter Ubuntu\/Debian gibt es auch noch das Perl-Skript<br \/>\n<code>mimetype<\/code><br \/>\nmit welchem man wesentlich mehr Informationen abgreifen kann.<br \/>\nZu diesem Thema m\u00f6chte ich noch auf 2 n\u00fctzliche Links verweisen<br \/>\n<a href=\"http:\/\/wiki.ubuntuusers.de\/MIME-Typ\" title=\"MIME-Typ Information\">http:\/\/wiki.ubuntuusers.de\/MIME-Typ<\/a><br \/>\n<a href=\"http:\/\/aksubuntu.com\/questions\/279899\" title=\"Bestimmungen von MIME-Types\">http:\/\/aksubuntu.com\/questions\/279899<\/a>\n<\/li>\n<\/ol>\n<p>Abschliessend l\u00e4sst sich sagen, dass die <strong>MIME-Type Informationen unter Linux ausgereift und ausreichend ist<\/strong>. Was verbesserungsbed\u00fcrftig ist, und leider gerade dahindarbt, ist die SW-Unterst\u00fctzung, v.a. eine C\/C++ API seitens <em>freedesktop.org<\/em> w\u00e4re w\u00fcnschenswert. Dies soll aber nicht dar\u00fcberhinwegt\u00e4uschen, dass die Zusammenarbeit der Linux Desktops gut funktioniert.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Multipurpose Internet Mail Extensions sind entgegen ihrem Namen auch f\u00fcr die Identifizierung eines Dateityps auf Linux Desktops verantwortlich. Eine gemeinsame Technik der freedesktop Organisation sorgt daf\u00fcr, dass ein Verfahren dabei auf allen Desktops&#8216; &#8211; Gnome,KDE,Unity.. &#8211; gleichermassen funktioniert. Die gemeinn\u00fctzige Organisation k\u00fcmmert sich dabei vor allem um die Standardisierung und stellt teilweise sogar SW &hellip; <a href=\"https:\/\/www.instruyete.org\/?p=382\" class=\"more-link\"><span class=\"screen-reader-text\">MIME Types unter Linux<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,7],"tags":[],"class_list":["post-382","post","type-post","status-publish","format-standard","hentry","category-linux","category-unix"],"_links":{"self":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts\/382","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=382"}],"version-history":[{"count":0,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts\/382\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=382"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}