Последнее обновление клиента Skype для Linux получилось особо удачным. После обновления скайп поработал с недельку, а потом внезапно устал. Перезапуск клиента не помогал, а гугление результатов не давало. Такая же проблема наблюдалась не только у меня, но и у многих других пользователей linux.
Решение проблемы нашлось позже. Видимо разработчикиSkype Microsoft переусердствовали при запрете протоколов старых клиентов, и скайп начал падать при приеме файлов от пользователей со старой версией skype. А поскольку Skype Microsoft худо-бедно наладили синхронизацию истории сообщений, даже полное удаление профиля ~/.Skype/<yourname> не помогает, поскольку с созданием нового профиля подтягиваются старые сообщения, в том числе о передаче файлов.
Предупреждаю! Для починки нужно обладать недюжинным терпением.
Итак решение:
После нескольких попыток вся история синхронизируется, "вредные сообщения" удаляются и скайп работает нормально. Но есть одно "но": история скайпа синхронизируется достаточно нетривиальным образом, в формате peer-to-peer, то есть синхронизация истории происходит только с для контактов которые в сети. Если у вас в контакт-листе есть человек который когда-то слал вам файлы, и он выходит в сеть - ждите беды.Решение проблемы нашлось позже. Видимо разработчики
Предупреждаю! Для починки нужно обладать недюжинным терпением.
Итак решение:
- Бэкапим базу данных вашего профиля, которая лежит в ~/.Skype/<yourskypelogin>/main.db
- Запускаем скайп и ждем когда он упадет
- открываем базу данных вашего профиля:
sqlite3 .Skype/<yourskypelogin>/main.db - Выполняем скрипт
>UPDATE messages
SET body_xml =(
SELECT SUBSTR( body_xml, files_start, alt_end - files_start ) ||
SUBSTR( body_xml, 0, files_start ) ||
SUBSTR( body_xml, alt_end )
FROM (
SELECT msg.body_xml,
instr( msg.body_xml, '<files' ) files_start,
instr( msg.body_xml, 'alt="' ) + 5 alt_end
FROM messages msg
WHERE msg.id = messages.id
)
)
WHERE type = 68
AND body_xml NOT LIKE '<file%';
> .quit - Возвращаемся к шагу 2
Для решения этой проблемы был написан небольшой shell-скрипт, который выполняет очистку истории и перезапускпри падении в автоматическом режиме.
#!/bin/bash
for (( ; ; ))
do
skype
if ["$?" eq 134] #134 - с таким кодом возврата падает скайп
then sqlite3 .Skype/<yourskypename>/main.db < skype.sql #sql-скрипт выше
fi
done
не забываем добавить бит выполнения.
терминал у меня открыт всегда поэтому команда ./skype.sh & отлично справляется (можно и в .xinitrc добавить).
Комментариев нет:
Отправить комментарий