Ubuntu: Incompatibilidade de cabeçalho / origem do SQLite (e fazendo com que o SVN use a instalação do SQLite instalada)

0

Eu tenho o problema SQLite header and source version mismatch irritante ao tentar executar o SQLite3 no Ubuntu 13.04. Eu fiz em várias ordens (e todas as vezes):

  • apt-get remove sqlite3 libsqlite3-dev e reinstalação
  • ldconfig
  • sqlite compilado da origem usando o autoconf tar.gz
  • Tentei tudo o que encontrei no Google ...

Ainda não consigo descobrir o que está errado. Eu desperdicei 3 horas da minha vida com isso!

E, de fato, por que acontece o seguinte:

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

Se sqlite3 não estiver instalado, como você pode pensar que há uma incompatibilidade?!

Atualizar

Certo, graças a Aaron, eu agora cheguei até

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

Eu os movi para um diretório temporário e agora obtenho

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

eu fiz

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

E STILL recebe o mesmo erro de correspondência

Eu removi os arquivos espúrios sqlite3.h e sqlite3ext.h que ainda estavam por aí, repeti tudo e ainda recebo os problemas ...

    
por ChrisW 12.08.2013 / 21:53

3 respostas

1

Mais plano de fundo: Eu estava tentando instalar o SQLite3 porque quando eu executei um comando SVN, recebi um erro:

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

Eu assumi que consertar minha instalação do SQLite iria consertar isso. No entanto, penso que a questão principal é que o Ubuntu 13.04 requer SQLite 3.6.23, e essa é a razão pela qual a execução

apt-get purge libsqlite3-0 

apaga a maior parte do Ubuntu (veja esta resposta relacionada para mais detalhes).

Depois de bater cabeça, gritar e chorar, eu decidi tentar instalar o SVN da fonte (ao contrário do SQLite, que é o que eu disse que fiz na minha pergunta). Isso foi relativamente simples, apesar de um pouco demorado.

Basicamente:

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

Eu descobri que precisava das bibliotecas APR e APRs, então:

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

... e a biblioteca servo (eu não compilei com isto a primeira vez, mas isso fornece suporte a http - sem isso o SVN pode lidar apenas com os protocolos file e 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

Estes são os mesmos comandos do serfe README (se scons isn ' t instalado está disponível via apt-get ).

O SVN também quer o arquivo .c de compilação SQLite, então faça o download da amalagação e descompacte-o por enquanto - criei uma ~/sqlite-amalgamation pasta e deixou tudo aqui. Você deve então estar pronto para compilar o svn. O servo deve ter instalado em um local padrão, portanto, não precisa de um local especificado

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

e espero que seja isso. Eu tive um erro SVN de

The working copy needs to be upgraded

mas quando tentei o svn upgrade , recebi um erro na base de dados do SVN ... a única forma de o fazer era verificar uma nova versão numa nova localização. Mas o SVN agora funciona!

Ele não corrige o problema SQLite3 subjacente, e eu ainda recebo o mesmo erro de incompatibilidade de versão de cabeçalho / fonte ao fazer $ sqlite3 , mas como não preciso usar o SQLite autônomo no momento, esse problema pode esperar até outro dia (ou, é de fato algo que deveria ser registrado como um bug no Ubuntu?)

    
por 13.08.2013 / 14:16
1

Acabei de substituir a versão antiga da biblioteca SQlite @ location

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

com a versão mais recente, que é @ location

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

Agora, a versão mais recente do sqlite

$ sqlite3 --version 
3.8.2 2013-12-06 14:53:30 27392118af4c38c5203a04b8013e1afdb1cebd0d
    
por 07.01.2014 / 05:44
1

Isso resolveu o meu caso, o linux vem com uma versão mais antiga do sqlite e é por isso que está trazendo esse problema, faça isso para resolver o problema.

  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

    E, em seguida, copie o banco de dados foi compilado em pacotes Autoconf no passado:

    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

Este problema foi resolvido. você precisará rodar com o sudo.

    
por 27.08.2014 / 07:24

Tags