SQLite com suporte a readline no Ubuntu

19

Eu tinha o sqlite3pacote instalado no Ubuntu e não há suporte para readline. Isso significa que não há histórico de comandos e outros recursos bacanas que o readline fornece.

Isso é uma configuração ou um problema de empacotamento? Existe algum arquivo de pacote diferente em algum lugar que me daria suporte de readline fora da caixa? Ou então, como faço para compilar o sqlite3, certificando-me de que ele possui suporte para readline?

Helder S Ribeiro
fonte

Respostas:

36

Você sempre pode usar rlwrap:

rlwrap sqlite3 database.db

Para sua informação, acabei de verificar minha instalação hardy heron, e seu sqlite3 tem suporte para readline.

Rudedog
fonte
Não sabia sobre rlwrap. Realmente ótimo, obrigado! Estou usando o pacote sqlite3 no Kubuntu Jaunty Jackalope e, por algum motivo, ele não veio com o suporte de readline.
Helder S Ribeiro
20

Eu adiciono outra resposta, porque este é o primeiro hit de " ubuntu sqlite3 readline " no google:

O SDK do Android instala sua própria versão do sqlite3binário. Este binário não fornece readlinesuporte. Se você adicionou o SDK do Android ao seu caminho, isso pode fazer você pensar que não tem readlinesuporte; na verdade, todos os pacotes do Ubuntu são compilados com readlinesuporte.

Veja também este Relatório de Bug do Ubuntu, que descreve a mesma situação.

theomega
fonte
6
Anaconda faz a mesma coisa. Argh! / usr / bin / sqlite3 funciona bem.
Zbyszek
2
Obrigado por apontar isso. Meu SDK do Android estava ocultando meu aplicativo / usr / bin / sqlite3.
Dwayne Crooks
1
Esse também foi o caso no meu macOS High Sierra. Você pode verificar executando which sqlite3.
Shane Creighton-Young
1
+1, foi o meu problema também, tive $ANDROID_HOME/Sdk/platform-toolsdepois $PATH, mas simplesmente não instalei o sqlite3. E eu encontrei esse tópico usando exatamente a mesma frase de pesquisa.
Meehow 27/01
2
  1. Faça o download do arquivo zip que contém o código-fonte C em https://www.sqlite.org/download.html (sqlite-amalgamation-nnnnnnnn.zip)
  2. Descompacte-o para obter os arquivos shell.c, sqlite3.c e .h.
  3. Se ainda não estiver instalado, instale libreadline e libncurses. No Ubuntu Linux, instale executando o comando abaixo:

    sudo apt instala libreadline-dev libncurses-dev

  4. Execute o comando abaixo para criar:

    gcc -DSQLITE_ENABLE_FTS5 -DHAVE_READLINE shell.c sqlite3.c -lpthread -ldl -lm -lreadline -lncurses -o sqlite3

Nota: Você precisa de -DHAVE_READLINE e -lreadline e -lncurses para obter a funcionalidade de linha de leitura.

Copie o binário do sqlite3 para / usr / bin ou adicione ao seu caminho.

Rob de la Cruz
fonte
1
Esta é a melhor resposta. Nota sobre Ubuntu 18.04 Eu primeiro necessário para executar o seguinte:sudo apt install libreadline-dev libncurses-dev
rayzinnz
Obrigado, adicionei as etapas de instalação do sudo apt para fins de integridade.
Rob de la Cruz
0

Eu consegui compilar meu próprio binário com isso:

Faça o download do arquivo fonte "autoconf" na página de download do SQLite . Descompacte e extraia o alcatrão, mude para o diretório de origem.

Compile o código fonte com:

./configure --enable-readline
make

Estou executando no RedHat, então tive que executar yum install readline-develantes. Isso pode ser diferente na sua máquina.

Wernfried Domscheit
fonte