При попытке запустить SQLite3 в Ubuntu 13.04 у меня возникает проблема с SQLite header and source version mismatch . Я сделал в различных заказах (и все несколько раз):

  • apt-get remove sqlite3 libsqlite3-dev и переустановить
  • ldconfig
  • Скомпилированный sqlite из исходного кода с использованием autoconf tar.gz
  • Перепробовал все что нашел в гугле ...

И все же я не могу понять, что не так. Я потратил 3 часа своей жизни на это!

И на самом деле, почему происходит следующее:

$ sqlite3
SQLite header and source version mismatch
2010-03-09 19:31:43 4ae453ea7be69018d8c16eb8dabe05617397dc4d
2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668
$ apt-get remove sqlite3
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package 'sqlite3' is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Если sqlite3 не установлен, как он может думать, что есть несоответствие ?!

Обновить

Хорошо, благодаря Аарону, я дошел до

$ locate libsqlite3.so
/usr/local/lib/libsqlite3.so
/usr/local/lib/libsqlite3.so.0
/usr/local/lib/libsqlite3.so.0.8.6

Я переместил их во временный каталог, и теперь получаю

$ sqlite3
The program 'sqlite3' is currently not installed. You can install it by typing:
sudo apt-get install sqlite3

я сделал

$ apt-get install sqlite3
$ apt-get install libsqlite3-dev

И все - таки получить ту же ошибку рассогласования

И я удалил поддельные sqlite3.h и sqlite3ext.h , которые все еще были вокруг, повторил все, и все еще получаю проблемы ...

3 ответа3

1

Дополнительные сведения: я пытался установить SQLite3, потому что при запуске любой команды SVN я получал сообщение об ошибке:

E200029: Couldn't perform atomic initialization 
E200030: SQLite compiled for 3.7.15.2, but running with 3.6.23

Я предполагал, что исправление моей установки SQLite исправит это. Тем не менее, я думаю, что основная проблема заключается в том, что Ubuntu 13.04 требует SQLite 3.6.23, и именно поэтому

apt-get purge libsqlite3-0 

удаляет большую часть Ubuntu (подробности см. в этом связанном ответе ).

После множества головокружительных ударов, криков и плача я решил попробовать установить SVN из исходного кода (в отличие от SQLite, что я и сказал в своем вопросе). На самом деле это было относительно просто, хотя и немного отнимало много времени.

В принципе:

wget http://mirror.ox.ac.uk/sites/rsync.apache.org/subversion/subversion-1.8.1.tar.bz2
tar xjvf subversion-1.8.1.tar.bz2

Затем я узнал, что мне нужны библиотеки APR и APR-utils, поэтому:

wget http://mirror.ox.ac.uk/sites/rsync.apache.org/apr/apr-1.4.8.tar.bz2
wget http://mirror.ox.ac.uk/sites/rsync.apache.org/apr/apr-util-1.5.2.tar.bz2

tar xjvf apr-1.4.8.tar.bz2
cd apr-1.4.8
./configure
make
sudo make install
cd ..
tar xjvf apr-util-1.5.2.tar.bz2
cd apr-util-1.5.2
./configure --with-apr=/usr/local/apr
make
sudo make install

... и библиотеку serf (я не компилировал это в первый раз, но это обеспечивает поддержку http - без этого SVN может обрабатывать только протоколы file и svn )..:

wget https://serf.googlecode.com/files/serf-1.3.0.tar.bz2
tar xjvf serf-1.3.0.tar.bz2
scons APR=/usr/local/apr APU=/usr/local/apr
sudo scons install
scons -c

Это те же команды, что и в serf README (если scons не установлен, он доступен через apt-get).

SVN также хочет файл слияния SQLite .c, поэтому скачайте amalagation и распакуйте его сейчас - я создал папку ~/sqlite-amalgamation и оставил все здесь. Затем вы должны быть готовы к компиляции SVN. Serf должен быть установлен в стандартном месте, поэтому не нужно указывать местоположение

sudo ./configure --with-sqlite=/home/chris/sqlite-amalgamation/sqlite3.c --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --with-serf
make
sudo make install

и, надеюсь, это все. У меня была ошибка SVN

The working copy needs to be upgraded

но когда я попытался svn upgrade я получил ошибку базы данных SVN ... единственный способ обойти это было оформить новую версию в новом месте. Но SVN теперь работает!

Это не решает основную проблему SQLite3, и я по-прежнему получаю ту же ошибку несоответствия версии заголовка / исходного кода при выполнении $ sqlite3 , но, поскольку в данный момент мне не нужно использовать автономный SQLite, эта проблема может подождать до другого дня ( или это действительно что-то, что должно быть зарегистрировано как ошибка в Ubuntu?)

1

Я только что заменил старую версию библиотеки SQlite @ location

"/usr/lib/i386-linux-gnu/libsqlite3.so.0.8.6" 

с более новой версией, которая является @ location

"/usr/local/lib/libsqlite3.so.0.8.6"

Теперь последняя версия sqlite

$ sqlite3 --version 
3.8.2 2013-12-06 14:53:30 27392118af4c38c5203a04b8013e1afdb1cebd0d
1

Это решило мой случай, linux поставляется с более старой версией sqlite, поэтому она приносит эту проблему, чтобы решить ее.

  1. mv /usr/lib/i386-linux-gnu/libsqlite3.so.0.8.6 /usr/lib/i386-linuxgnu/libsqlite3.so.0.8.6_bak

  2. mv /usr/lib/i386-linux-gnu/libsqlite3.so.0 /usr/lib/i386-linux-gnu/libsqlite3.so.0_bak

         И затем копия базы данных была скомпилирована в пакеты Autoconf в прошлом:

        1. cd /usr /local /lib

        2. cp libsqlite3.so.0.8.6 /usr /lib /i386-linux-gnu

       3. cp libsqlite3.so.0 /usr /lib /i386-linux-gnu

Эта проблема была решена. вам нужно будет бежать с sudo.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .