Ubuntu: l'en-tête SQLite / l'incompatibilité de la source (et le fait de SVN utiliser l'installation SQLite installée)

J'ai l' SQLite header and source version mismatch problème d' SQLite header and source version mismatch lors de l'exécution de SQLite3 sur Ubuntu 13.04. J'ai fait dans diverses commandes (et toutes les fois multiples):

  • apt-get remove sqlite3 libsqlite3-dev et réinstalle
  • ldconfig
  • Compilé sqlite à partir de la source en utilisant l' autoconf tar.gz
  • J'ai essayé tout ce que j'ai trouvé sur Google …

Pourtant, je ne peux pas comprendre ce qui ne va pas. J'ai perdu 3 heures de ma vie à ce sujet!

Et en fait, pourquoi se produisent les événements suivants:

 $ 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. 

Si sqlite3 n'est pas installé, comment peut-il penser qu'il y a un décalage?

Mettre à jour

D'accord, grâce à Aaron, je suis arrivé jusqu'à

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

Je les ai déplacés vers un dir temporaire, et maintenant,

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

J'ai fait

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

Et TOUJOURS obtenez la même erreur d'inadéquation

Et j'ai supprimé les fichiers sqlite3ext.h sqlite3.h et sqlite3ext.h qui étaient encore là, répétaient tout et continuent à résoudre les problèmes …

Plus d'arrière-plan: j'essayais d'installer SQLite3 car lorsque j'ai exécuté une commande SVN, j'ai eu une erreur:

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

J'ai supposé que la correction de mon installation de SQLite réglerait cela. Cependant, je pense que le problème principal est que Ubuntu 13.04 nécessite SQLite 3.6.23, et c'est la raison pour laquelle l'exécution

 apt-get purge libsqlite3-0 

Supprime la plupart des Ubuntu (voir cette réponse pour plus de détails).

Après beaucoup de coups de tête, de cris et de pleurs, j'ai décidé d'essayer d'installer SVN de source (par opposition à SQLite, c'est ce que j'ai dit que j'avais fait dans ma question). C'était effectivement relativement simple, même s'il prenait beaucoup de temps.

En gros:

 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 

J'ai alors découvert que j'avais besoin des bibliothèques APR et APR-utils, donc:

 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 

… et la bibliothèque serf (je n'ai pas compilé avec la première fois, mais cela fournit un support HTTP – sans SVN ne peut gérer que file protocoles file et 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 

Ce sont les mêmes commandes que dans le SERME README (si les scons ne sont pas installées, elles sont disponibles via apt-get ).

SVN veut également le fichier .c de fusion de SQLite, alors téléchargez l'amalgation et déroulez -le pour l'instant – j'ai créé un dossier ~/sqlite-amalgamation et laissé tout ici. Vous devriez alors être prêt à compiler svn. Serf devrait avoir installé un endroit standard, donc il n'est pas nécessaire d'avoir un emplacement spécifié

 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 

Et j'espère que c'est tout. J'ai eu une erreur SVN de

 The working copy needs to be upgraded 

Mais quand j'ai essayé la svn upgrade j'ai eu une erreur de base de données SVN … la seule façon de svn upgrade était de vérifier une nouvelle version dans un nouvel emplacement. Mais SVN fonctionne maintenant!

Il ne résout pas le problème SQLite3 sous-jacent, et j'obtiens toujours la même erreur d'incompatibilité de la version de l'en-tête / source lors $ sqlite3 , mais comme je n'ai besoin d'utiliser SQLite autonome en ce moment, ce problème peut attendre un autre jour ( Ou est-ce en fait quelque chose qui devrait être enregistré comme un bug avec Ubuntu?)

Je viens de remplacer une ancienne version de la bibliothèque SQlite @ location

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

Avec une version plus récente qui est @ location

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

Maintenant, la dernière version de sqlite

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

Cela a résolu mon cas, linux est livré avec une ancienne version de sqlite, c'est pourquoi il s'agit de résoudre ce problème, afin de résoudre ce problème.

  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

    Et ensuite, copier la base de données a été compilée dans des paquets Autoconf dans le passé:

    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

Ce problème a été résolu. Vous devrez exécuter avec sudo.