Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Проблема с mime-типом  (Прочитано 4680 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн abr_ubuntu

  • Автор темы
  • Участник
  • *
  • Сообщений: 102
    • Просмотр профиля
Проблема с mime-типом
« : 20 Январь 2012, 22:13:42 »
Добрый день!
Один раз я сталкивался с регистрацией mime-типа при установке deb-пакета. В принципе, ето довольно легко. Создал /usr/share/mime/packages/xxx.xml с примерно таким описанием:
(Нажмите, чтобы показать/скрыть)
потом /usr/share/applications/xxx.desktop с таким:
(Нажмите, чтобы показать/скрыть)
и файлы с расширением .jcw зарегистрированы за классом image/x-jcws и открываются программой jcws

Вчера скачал жене программку FBReader для чтения електронных книг. На оф. сайте есть только одна версия deb-пакета и она для Debian Etch. Несмотря на то, что прога-та запустилась, несколько вещей в структуре deb-пакета меня не устроило и я решил его немного переделать. В частности, не было никакой поддержки открытия файлов fb2. Стал я по вышеописанным файлам составлять mime-тип. Сначала вышло так:
/usr/share/applications/fbreader.desktop:
(Нажмите, чтобы показать/скрыть)

/usr/share/mime/packages/fbreader.xml:
(Нажмите, чтобы показать/скрыть)

Ничего из етого не вышло. Практически новая и ничем не запятнанная система открывала файлы fb2 Firefox'ом.
Гугл открыл мне страшную тайну, что fb2 должен регистрировать тип application/x-fictionbook и некоторые даже пробовали ето сделать, но темы форумов обрываются то-ли от безысходности, то-ли из-за какого-нть полтергейста.
В системе я к своему удивлению обнаружил уже зарегистрированные fb2-расширения в файлах /usr/share/mime/glob и /usr/share/mime/glob2, причём сразу на два класса: application/x-fictionbook и application/x-fictionbook+xml. Да и при етом на чистой системе описан только второй mime-тип, а на компе, который за два года чем только не оброс, нашлись оба типа. При попытке установить файл deb, который регистрировал тип application/x-fictionbook я удивился щё больше:
~$ cat /usr/share/mime/globs | grep fictionbook
application/x-fictionbook:*.fb2
application/x-fictionbook+xml:*.fb2
application/x-fictionbook:*.fb2
А ведь сначала казалось, тип должен был поменять открывающую программу, но не как ни дублировать себя.
На той системе, которой два года удалось решить проблему несколько раз меняя тип в deb-пакете с application/x-fictionbook на application/x-fictionbook+xml и обратно. А так, тут он открывался gedit'ом.

Не прошу помоч конкретно с fb2-типом, но подскажите, есть ли возможность поменять программу, которая исполняется при открытии файла с определённым mime-типом? Причём, организовать так, чтобы ето делал deb-пакет и обязательно на глобальном уровне, а не в ~/.local/share

Пользователь решил продолжить мысль 20 Январь 2012, 22:16:50:
ЗЫ. Попробовал вручную в свойствах fb2-файла прописать открывающую программу на закладке "Открывать в программе" программу fbreader. Результат появился в ~/.local/share/applications/mimeapps.list:
(Нажмите, чтобы показать/скрыть)
Вот только как бы ето теперь описать глобально? Искал /usr/share файл mimeapps.list - не нашёл.

ЗЫЫ. Извиняюсь, что так много написал, но на гугле уже забанили, а голова медленно, но верно отказывается работать
« Последнее редактирование: 20 Январь 2012, 22:19:31 от abr_ubuntu »

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • aetera.net
Re: Проблема с mime-типом
« Ответ #1 : 20 Январь 2012, 22:36:17 »
Тип файла смотреть так:
$ file -bi file.pdf
application/pdf; charset=binary

Вот только как бы ето теперь описать глобально? Искал /usr/share файл mimeapps.list - не нашёл.
/usr/share/applications/defaults.list
?

Оффлайн abr_ubuntu

  • Автор темы
  • Участник
  • *
  • Сообщений: 102
    • Просмотр профиля
Re: Проблема с mime-типом
« Ответ #2 : 20 Январь 2012, 22:52:11 »
Тип файла смотреть так:
$ file -bi file.pdf
application/pdf; charset=binary

Вот только как бы ето теперь описать глобально? Искал /usr/share файл mimeapps.list - не нашёл.
/usr/share/applications/defaults.list
?
На обеих системах:
~$ cat /usr/share/applications/defaults.list | grep fictionbook
~$
При том, что на старой системе книжки-таки открываются fbreader'ом, а на новой файлы даже значком не оформляются.

Хотя, можно попробовать прописать строку в файл на новой системе, но как сделать так, чтоб етим занимался установочник deb?
« Последнее редактирование: 20 Январь 2012, 22:54:16 от abr_ubuntu »

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • aetera.net
Re: Проблема с mime-типом
« Ответ #3 : 20 Январь 2012, 22:55:32 »
При том, что на старой системе книжки-таки открываются fbreader'ом
Пошукайте по старой системе:
grep -IR "application/x-fictionbook" / 2>/dev/null

Оффлайн abr_ubuntu

  • Автор темы
  • Участник
  • *
  • Сообщений: 102
    • Просмотр профиля
Re: Проблема с mime-типом
« Ответ #4 : 21 Январь 2012, 13:17:07 »
Я так понял, команда ищет по содержимому всех файлов во всей файловой системе? 15 часов уже работает и никак не отработает :) Вывод тоже никакого не даёт..

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • aetera.net
Re: Проблема с mime-типом
« Ответ #5 : 21 Январь 2012, 15:44:10 »
15 часов уже работает и никак не отработает
Оно могло пойти гулять по смонтированным сетевым ресурсам или перелопачивает гигабайты видео... >_<
Короче, ограничьте каталогами /etc и /usr.

Оффлайн abr_ubuntu

  • Автор темы
  • Участник
  • *
  • Сообщений: 102
    • Просмотр профиля
Re: Проблема с mime-типом
« Ответ #6 : 21 Январь 2012, 20:52:56 »
Так и подумал сначала ))
Теперь более определённо видно как mime-тип определён и чем открывается:
$ grep -IR "application/x-fictionbook" /etc 2>/dev/null
$ grep -IR "application/x-fictionbook" /usr 2>/dev/null
/usr/share/mime/types:application/x-fictionbook
/usr/share/mime/types:application/x-fictionbook+xml
/usr/share/mime/XMLnamespaces:http://www.gribuser.ru/xml/fictionbook/2.0 FictionBook application/x-fictionbook
/usr/share/mime/application/x-fictionbook.xml:<mime-type xmlns="http://www.freedesktop.org/standards/shared-mime-info" type="application/x-fictionbook">
/usr/share/mime/application/x-fictionbook+xml.xml:<mime-type xmlns="http://www.freedesktop.org/standards/shared-mime-info" type="application/x-fictionbook+xml">
/usr/share/mime/icons:application/x-fictionbook:fbreader
/usr/share/mime/subclasses:application/x-fictionbook+xml application/xml
/usr/share/mime/subclasses:application/x-fictionbook application/xml
/usr/share/mime/subclasses:application/x-fictionbook application/xml
/usr/share/mime/packages/kde.xml:  <mime-type type="application/x-fictionbook"> <!-- fdo #17553, FIXED 0.60 -->
/usr/share/mime/packages/freedesktop.org.xml:  <mime-type type="application/x-fictionbook+xml">
/usr/share/mime/packages/fbreader.xml: <mime-type type="application/x-fictionbook">
/usr/share/mime/globs:application/x-fictionbook:*.fb2
/usr/share/mime/globs:application/x-fictionbook+xml:*.fb2
/usr/share/mime/globs:application/x-fictionbook:*.fb2
/usr/share/mime/globs2:50:application/x-fictionbook:*.fb2
/usr/share/mime/globs2:50:application/x-fictionbook+xml:*.fb2
/usr/share/mime/globs2:50:application/x-fictionbook:*.fb2
/usr/share/applications/mimeinfo.cache:application/x-fictionbook=fbreader.desktop
/usr/share/applications/fbreader.desktop:MimeType=application/x-fictionbook;
Сделал поиск по новой системе, там где файлы открываются firefox'ом. У него вместо
/usr/share/mime/XMLnamespaces:http://www.gribuser.ru/xml/fictionbook/2.0 FictionBook application/x-fictionbookзаписано
/usr/share/mime/XMLnamespaces:http://www.gribuser.ru/xml/fictionbook/2.0 FictionBook application/x-fictionbook+xmlПлюс, нет строчки
/usr/share/mime/packages/kde.xml:  <mime-type type="application/x-fictionbook"> <!-- fdo #17553, FIXED 0.60 -->И отсутствуют вот ети дубляжи:
/usr/share/mime/subclasses:application/x-fictionbook application/xml
/usr/share/mime/globs:application/x-fictionbook:*.fb2
/usr/share/mime/globs2:50:application/x-fictionbook:*.fb2
Но присутствует строчка:
/usr/share/applications/mimeinfo.cache:application/x-fictionbook=fbreader.desktop!!
Что-то не вяжется.. Файлы так и не открываются. И на вкладке "Открывать в программме" в свойствах файла нету fbreader'а..

Счас попробую щё по /var поискать, а потом добавить в файлы на новой системе записи, которые есть в старой системе. Может, станет яснее..

Пользователь решил продолжить мысль 21 Январь 2012, 21:11:53:
Не прокатило :(((
« Последнее редактирование: 21 Январь 2012, 21:11:53 от abr_ubuntu »

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • aetera.net
Re: Проблема с mime-типом
« Ответ #7 : 21 Январь 2012, 21:30:38 »
Только принимайте во внимание, что настройки из
/usr/share/applicationsперекрываются таковыми из
~/.local/share/applicationsесли они присутствуют.

Оффлайн abr_ubuntu

  • Автор темы
  • Участник
  • *
  • Сообщений: 102
    • Просмотр профиля
Re: Проблема с mime-типом
« Ответ #8 : 21 Январь 2012, 22:22:39 »
Так вот если бы..
На новой системе:
$ ls ~/.local/share/applications
mimeapps.list  mimeinfo.cache
$ cat ~/.local/share/applications/mimeapps.list

[Added Associations]
$ cat ~/.local/share/applications/mimeinfo.cache
[MIME Cache]

На старой:
(Нажмите, чтобы показать/скрыть)
То есть, в ~/.local/share/applications ни там, ни там ничего нет.. Ну или не то ищу. Есть application/xml на старой системе:
$ cat ~/.local/share/applications/mimeapps.list | grep application/xml
application/xml=gedit.desktop;
$ cat ~/.local/share/applications/mimeinfo.cache | grep application/xml
application/xml=wine-extension-xml.desktop
Пишу про етот тип, потому как
$ cat /usr/share/mime/subclasses | grep fictionbook
application/x-fictionbook+xml application/xml
application/x-fictionbook application/xml
application/x-fictionbook application/xml

Есть щё одна мысля. На той системе, де книги открываются правильно, в списках открывающих программ числятся gedit, OpenOffice редактор текстов, Opera, chromium, firefox, thunderbird, ну и по-умолчанию fbreader. Попробую прошурудить .desktop'ы етих программ..

Пользователь решил продолжить мысль 21 Январь 2012, 23:13:41:
Допёр наконец-то! Какой-то из .desktop'ов подсказал.
Просто надо было usr/share/applications/fbreader.desktop оформить так:
[Desktop Entry]
Name=E-book reader
Name[ru]=Чтение электронных книг
GenericName=E-book reader
GenericName[ru]=Чтение электронных книг
Comment=FBReader E-book reader
Comment[ru]=FBReader, программа для чтения электронных книг
TryExec=fbreader
Exec=fbreader %F
StartupNotify=true
Terminal=false
Type=Application
Icon=/usr/share/pixmaps/fbreader.png
Categories=Office;Viewer;Literature;
MimeType=application/x-fictionbook;application/xml;application/x-fictionbook+xml;
т.е. в последней строке прописать два обнаруженных в globs типа и родительский mime-тип application/xml.
Осталась одна небольшая проблема, почему-то на новой системе файлы fb2 не приобретают значка fbreader'а.
« Последнее редактирование: 21 Январь 2012, 23:13:41 от abr_ubuntu »

 

Страница сгенерирована за 0.073 секунд. Запросов: 24.