Автор Тема: Чем открывать swf  (Прочитано 24986 раз)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Чем открывать swf
« Ответ #30 : 09.09.2015 22:57:46 »
Огромное спасибо!!!

:-) Да не за что.

Ряд вопросов и замечаний.
1. Почему не работает способ с изменением общего для всех пользователей /usr/share/mime/packages/freedesktop.org.xml

Потому, что выше Роман после изменения файла не упомянул команду
update-mime-database  /usr/share/mime

Но в любом случае так делать крайне не желательно.
Потому что
$ cat /etc/os-release | grep ^PRETT
PRETTY_NAME="Slackware 14.1"
$ sudo mount /dev/sda2 /mnt/hd/
$ sudo su -
# chroot /mnt/hd/
# cat /etc/altlinux-release
ALT Linux starter kit (Trientalis)
# rpm -qf /usr/share/mime/packages/freedesktop.org.xml
shared-mime-info-1.2-alt1
# apt-cache rdepends shared-mime-info
shared-mime-info
Reverse Depends:
  wm-common-freedesktop
  etoys
  chemical-mime-data
  trackermusic-mime-info
  squeak-vm
  squeak-vm
  pcb
  obconf
  notecase
  notecase
  nemo
  nautilus
  monodevelop
  kino
  kde4libs
  gnome-vfs
  libgio
  edje
  Wcalc
  NetworkManager-vpnc-gtk
  NetworkManager-sstp-gtk
  NetworkManager-ssh-gtk
  NetworkManager-pptp-gtk
  NetworkManager-openvpn-gtk
  NetworkManager-openconnect-gtk
  NetworkManager-l2tp-gtk
если версия пакета в репозитрии обновится, то после первого же dist-upgrade вся эта настройка сломается.
hold конечно же никто не отменял, но сколько холд этого пакета потянет за собой, кто его знает.
Здесь лучше со всеми выводами и результатами идти на багтрекер с просьбой о фичреквесте (FR:).

Это стандартный пакет во всех Линукс:
# exit
# slapt-get --search shared-mime-info
shared-mime-info-1.3-i486-2 [inst=нет]: shared-mime-info (MIME database)
shared-mime-info-1.0-i486-2 [inst=да]: shared-mime-info (MIME database)
# slapt-get --filelist shared-mime-info | grep freedesktop.org.xml
/usr/share/mime/packages/freedesktop.org.xml

Скрипт выше изменяет только одну строку, - строку 15899
# diff /home/user/.local/share/mime/packages/freedesktop.org.xml /usr/share/mime/packages/freedesktop.org.xml
15899c15899
<   <mime-type type="application/x-shockwave-flash">
---
>   <mime-type type="application/vnd.adobe.flash.movie">
# diff -c /home/user/.local/share/mime/packages/freedesktop.org.xml \
/usr/share/mime/packages/freedesktop.org.xml
*** /home/user/.local/share/mime/packages/freedesktop.org.xml 2015-09-09 16:30:21.797759347 +0300
--- /usr/share/mime/packages/freedesktop.org.xml 2013-10-01 01:06:26.000000000 +0300
***************
*** 15896,15902 ****
      </magic>
      <glob pattern="*.sh"/>
    </mime-type>
!   <mime-type type="application/x-shockwave-flash">
      <comment>Shockwave Flash file</comment>
      <comment xml:lang="ar">ملف Shockwave Flash</comment>
      <comment xml:lang="be@latin">Fajł Shockwave Flash</comment>
--- 15896,15902 ----
      </magic>
      <glob pattern="*.sh"/>
    </mime-type>
!   <mime-type type="application/vnd.adobe.flash.movie">
      <comment>Shockwave Flash file</comment>
      <comment xml:lang="ar">ملف Shockwave Flash</comment>
      <comment xml:lang="be@latin">Fajł Shockwave Flash</comment>

2. Как быть если установка/удаление какого-нибудь приложения изменяет /usr/share/mime/packages/freedesktop.org.xml. Опять запускать скрипт.

Такого быть в usr вообще не должно. :-)
Если контрольные суммы одноименных файлов в usr и в пакете не совпадают, самое время кричать "Alarm! Нас взломали!".

3. Вы так подробно описали создание и запуск скрипта как для новичка,

Для них и делалось.
Но при копировании сего в "справочник", согласен, подробности можно опустить.
Чтобы скорее как памятка со списком команд и самыми необходимыми комментариями.

но тогда логично будет добавить в ваш пост команду, которая делает скрипт исполняемым.

Это сугубо индивидуальный подход.
Мой:
- Чем меньше исполняемых файлов в домашнем каталоге, тем спокойней жить. :-)

Но в принципе, этот скрипт можно сделать исполняемым для всех и положить в /usr/local/bin
Но только не забыть, чтобы /usr/local/bin был в переменной PATH.
Если его в PATH нет, то добавить его в PATH, чтобы не указывать полный путь к файлу
# tail -n 3 /home/user/.bash_profile

PATH=$PATH:/usr/local/bin
export PATH
В /usr/local/bin, а не в /usr/bin, чтобы не устраивать помойку из репозиторных исполняемых и самописных.
« Последнее редактирование: 09.09.2015 23:28:43 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Чем открывать swf
« Ответ #31 : 10.09.2015 01:44:33 »
Шо-то тут не то...

Альт:
# chroot /mnt/hd/
# rpm -q shared-mime-info
shared-mime-info-1.2-alt1
# cat /etc/altlinux-release
ALT Linux t7 (Trientalis)
# grep 'vnd.adobe.flash.movie\|x-shockwave-flash' /usr/share/mime/packages/freedesktop.org.xml
  <mime-type type="application/vnd.adobe.flash.movie">
    <alias type="application/x-shockwave-flash"/>
# exit

Слакель:
# cat /etc/os-release | grep ^PR
PRETTY_NAME="Slackware 14.1"
# slapt-get --search shared-mime-info
shared-mime-info-1.3-i486-2 [inst=да]: shared-mime-info (MIME database)
# grep 'vnd.adobe.flash.movie\|x-shockwave-flash' /usr/share/mime/packages/freedesktop.org.xml
  <mime-type type="application/vnd.adobe.flash.movie">
    <alias type="application/x-shockwave-flash"/>
$ xdg-mime query filetype ./MATV-spaces.ru.swf
application/x-shockwave-flash; charset=binary

И в Слаке работает без всяких правок. Алиас же...

Перегрузился:
$ cat /etc/altlinux-release
ALT Linux Sisyphus (unstable)
$ xdg-mime query filetype ./VAL2-spaces.ru.swf
application/x-shockwave-flash
$ grep 'vnd.adobe.flash.movie\|x-shockwave-flash' /usr/share/mime/packages/freedesktop.org.xml
  <mime-type type="application/vnd.adobe.flash.movie">
    <alias type="application/x-shockwave-flash"/>
Где-то что-то застряло. Не фурычит в альтах без пинка...
« Последнее редактирование: 10.09.2015 02:04:31 от Speccyfighter »

Оффлайн igorigor76

  • Завсегдатай
  • *
  • Сообщений: 651
Re: Чем открывать swf
« Ответ #32 : 10.09.2015 19:33:00 »
Нужен результирующий пост. С оптимальным решением.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Чем открывать swf
« Ответ #33 : 11.09.2015 02:19:29 »
Нужен результирующий пост. С оптимальным решением.

Тот пост остаётся в силе, но...

Почесал затылок, посмотрел слакварный постинсталл doinst.sh для shared-mime-info, и родилось такое:

swf в firefox
Вариант II

#!/bin/sh

string='application/x-shockwave-flash       swf swfl'

grep '\/home' /etc/passwd | cut -f 1,6 -d : | while read passwdline ; do
  homedir=$(echo $passwdline | cut -f 2 -d :)
  if [ -d $homedir ]; then
    username=$(echo $passwdline | cut -f 1 -d :)
      if [ ! -f $homedir/.mime.types ]; then
        su $username -c "/bin/echo $string > $homedir/.mime.types"
      fi
  fi
done
# sh mime_swf2homes

Скрипту требуются root'овые права.
Скрипт смотрит зарегистрированных пользователей, проверяет отсутствие файла $HOME/.mime.types, и при его отсутствии создаёт и заполнняет его в каталогах зарегистрированных пользователей.
Если файл существует, действия не выполняются, - это исключает дублирование стринга при многократном запуске скрипта (намёк на то, что скрипт можно доработать, с проверкой наличия стринга с дополнением файла).
Для поддержки swf в firefox требуется перелогивание пользователя.
Кроме создания файла, скрипт не трогает ни одну настройку.

В простейшем виде, скрипт создаёт:
# ls -l /home/altlinux/.mime.types
-rw-r--r-- 1 altlinux altlinux 48 сен 11 01:58 /home/altlinux/.mime.types
# cat /home/altlinux/.mime.types
application/x-shockwave-flash swf swfl
В принципе это можно сделать и руками, но после пятого пользователя, повторять эту операцию, утомит.

Смотрел и обкатывал на сизифном лайве.

В принципе можно убрать 9-ю и 11-ю строки, но тогда файл со стрингом будет пересоздаваться после каждого запуска скрипта:
# grep -n ^ ./mime_swf2homes
1:#!/bin/sh
2:
3:string='application/x-shockwave-flash       swf swfl'
4:
5:grep '\/home' /etc/passwd | cut -f 1,6 -d : | while read passwdline ; do
6:  homedir=$(echo $passwdline | cut -f 2 -d :)
7:  if [ -d $homedir ]; then
8:    username=$(echo $passwdline | cut -f 1 -d :)
9:      if [ ! -f $homedir/.mime.types ]; then
10:        su $username -c "/bin/echo $string > $homedir/.mime.types"
11:      fi
12:  fi
13:done

Можно ли это считать результирующим постом?
И есть ли этому предел?..

Открывать эту ошибку не имеет смысла, - она и так существует, закрыта, но не исправлена:
https://bugzilla.altlinux.org/show_bug.cgi?id=29819
« Последнее редактирование: 11.09.2015 03:21:29 от Speccyfighter »

Оффлайн Роман Коваленко

  • Начинающий
  • *
  • Сообщений: 49
    • Email
Re: Чем открывать swf
« Ответ #34 : 13.09.2015 12:41:40 »
Проблема решена в Gnash 0.8.11
« Последнее редактирование: 13.09.2015 13:20:15 от Роман Коваленко »

Оффлайн Роман Коваленко

  • Начинающий
  • *
  • Сообщений: 49
    • Email
Re: Чем открывать swf
« Ответ #35 : 14.09.2015 13:07:50 »
и еще подсказали оптимальный вариант с репозитория установить firefox-pepperflash, и как уже выше описывал в /usr/share/mime/packages/ правим файл freedesktop.org.xml при помощи текстового редактора, открываем файл и жмем ctrl+f вписываем строку vnd.adobe.flash.movie ее надо заменить на x-shockwave-flash Далее все верно как выше описывал, там забыл добавить команду для обновления mime. В терминале необходимо набрать sudo update-mime-database /usr/share/mime
« Последнее редактирование: 14.09.2015 13:11:10 от Роман Коваленко »