Портал Belkin-labs»PHP классы»Статья
welcome!

Как обновить SQLite в UBUNTU?
или как побороть Segmentation fault в DigiKam?

Есть:

  • UBUNTU 14.04 64bit
  • в ней работает DigiKam неважно какой версии.

Проблема возникла по причине того, что DigiKam стал давать ошибку "Segmentation fault".

Некий маленький дисклеймер, или почему так сложно работать на линуксе

Я уже 3 года сижу на Убунте и очень доволен. Были проблемы, но они были редкие. И вот редкость этих проблем, к сожалению, обуславливает тот факт, что когда что-то ломается - не знаешь что делать. И даже если ты что-то подобное делал, то делал это год назад и в упор не помнишь, как ты это делал и даже с чего начинал. Получается, что надо все начинать сначала. Вот примерно так же это произошло и сегодня.

Кстати!
Искать что-то вменяемое по Убунте можно только в иностранной части интернета. В российской сфере и на русском языке ничего доступного обычно найти не удается. Поэтому при любой проблеме я захожу в Гугл и задаю вопрос на английском языке, чего и вам желаю. Вся информация, которую я здесь излагаю, взята именно из тех самых (зарубежных) источников.

Поиск причины

Поискав "Segmentation fault" в Гугле, выяснилось, что я не один такой, и проблема существует. Причем связана она с ошибкой библиотеки libsqlite, которая установлена в этой версии Убунты. Конкретно виновата библиотека libsqlite версии 3.8.2. Лечение - либо апгрейдиться, либо даунгрейдиться. Кто поумелее уже это сделал и выяснил, что в других версиях этой библиотеки все нормально работает. Я, конечно, зашел в Синаптик и убедился, что у меня стоит именно эта версия этой самой библиотеки.

Как апгрейдиться или даунгрейдиться?

Зашел на сайт http://www.sqlite.org. Последняя версия 3.8.7.

Попытался обновить систему. Обновлений этой библиотеки нет.

Поискал, что на этот счет пишут в сообществе убунты. Выяснилась весьма грустная вещь. Похоже, что SQLite в определенной версии Убунты не апгрейдится вообще, похоже, никогда. Каким его туда записали, такой он и будет. Вариант - поставить пакет из версии 14.10. Это будет апгрейд. Либо из предыдущих версий. Это будет даунгрэйд. Либо вообще из других дебианов. Либо скомпилировать из исходников, но я этого не умею (пока)

Как найти пакет из версии 14.10?

Нашел довольно быстро по ссылке https://launchpad.net/ubuntu/+source/sqlite3 через тот же Гугл. Искал то, что упоминали знающие люди, а именно deb. Последняя версия 3.8.6.1

Состав пакета

При проверке содержания различных спойлеров был зафиксирован следующий полезный перечень. Это список того, что вообще можно установить на тему SQLite.

  1. lemon: LALR(1) Parser Generator for C or C++
  2. libsqlite3-0: SQLite 3 shared library
  3. libsqlite3-0-dbg: SQLite 3 debugging symbols
  4. libsqlite3-dev: SQLite 3 development files
  5. libsqlite3-tcl: SQLite 3 Tcl bindings
  6. sqlite3: Command line interface for SQLite 3
  7. sqlite3-doc: SQLite 3 documentation

Что качать для апгрейда?

Понятно, что продукт один, состав пакета довольно значительный, а файлов вообще куча. Как по названию файла выбрать то, что мне нужно? Я не знаю научного ответа. Действую по наитию, визуально сравнивая название файла с тем, что мне нужно.

Зашел в синаптик и посмотрел, что, вообще, установлено? Стоят три библиотеки и две из них  версии 3.8.2. Вот их точный список:

  1. libsqlite3-0:i386
    динамически подключаемая библиотека SQLite 3
  2. libsqlite3-0
    динамически подключаемая библиотека SQLite 3

Чем они отличаются? Не выяснено. Но я попытался выяснить. Вот нашел интересное объяснение: http://unix.stackexchange.com/questions/89992/incompatible-versions-of-libsqlite3-0-i386-and-amd64-block-each-other. Но я в принципе не могу выяснять значение каждого встретившегося неизвестного слова (нет времени), а тут я этих неизвестных слов встретил просто очень много. Отложилось у меня только то, что :i386 - это указатель на 32-х битную версию. Это, правда, я и так подозревал.

Хоть я знаю, что у меня стоит 64-х битная версия убунты, но меня смутила 386 в названии библиотеки и я скачал ее. Почему? Читал где-то, что в комплект Убунты уже довольно давно входит специальная библиотека, которой все равно, какой пакет запускать 32-х или 64-х битный.

При установке возникла ошибка. Похоже, что в итоге и новая версия не установлена, и старая была расконфигурирована, но не сконфигруриована обратно. Это расстроило. Но не сильно и очень на короткое время. Тем более, что центр приложений сразу отметил, что в системе произошла критическая ситуация и предложил исправить. Исправил-не исправил я не знаю. Отработал и ошибок не дал...

Тогда я просто скачал библиотеку amd64. Эта установилась без вопросов. Но в итоге у меня сейчас не установлена библиотека libsqlite3-0:i386. Что это было? Нужна она или ненужна? Когда это мне аукнется? Не могу пока сказать. Может быть при запуске 32-х битной программы? В любом случае составные части есть и всегда можно что-нибудь доустановить (прочитав эту статью, кстати).

Проверили DigiKam - работает. А что нам еще нужно?

Борец с глюками свободного программного обеспечения
Дмитрий Белкин

Статья создана 21.10.2014
Похожие материалы - отбираем по ключевым словам