SQLite con soporte de readline en Ubuntu

19

Tenía el sqlite3paquete instalado en Ubuntu y no hay soporte para readline. Eso significa que no hay historial de comandos y esas otras características ingeniosas que le ofrece readline.

¿Es esto un problema de configuración o empaque? ¿Existe un archivo de paquete diferente en algún lugar que me brinde soporte de readline de fábrica? O bien, ¿cómo compilo sqlite3 para asegurarme de que tiene soporte para readline?

Helder S Ribeiro
fuente

Respuestas:

36

Siempre puedes usar rlwrap:

rlwrap sqlite3 database.db

Para su información, acabo de comprobar mi resistente instalación de garza, y su sqlite3 tiene soporte de línea de lectura.

Perro rudo
fuente
No sabía sobre rlwrap. Realmente genial, gracias! Estoy usando el paquete sqlite3 en Kubuntu Jaunty Jackalope y, por alguna razón, no viene con soporte de readline.
Helder S Ribeiro
20

Agrego otra respuesta porque este es el primer éxito de " ubuntu sqlite3 readline " en google:

El SDK de Android instala su propia versión del sqlite3binario. Este binario no proporciona readlinesoporte. Si agregaste el SDK de Android a tu ruta, esto podría hacerte pensar que no tienes readlinesoporte, de hecho, cada paquete de Ubuntu está compilado con readlinesoporte.

Consulte también este Informe de errores de Ubuntu que describe la misma situación.

theomega
fuente
66
Anaconda hace lo mismo. Argh! / usr / bin / sqlite3 funciona bien.
zbyszek
2
Gracias por señalar eso. Mi SDK de Android estaba ocultando mi aplicación / usr / bin / sqlite3.
Dwayne Crooks
1
Este fue el caso en mi macOS High Sierra también. Puedes comprobarlo corriendo which sqlite3.
Shane Creighton-Young
1
+1, también fue mi problema, tuve $ANDROID_HOME/Sdk/platform-toolsdespués $PATH, pero simplemente no instalé sqlite3. Y encontré este hilo usando exactamente la misma frase de búsqueda.
Meehow
2
  1. Descargue el archivo zip que contiene el código fuente C de https://www.sqlite.org/download.html (sqlite-amalgamation-nnnnnnn.zip)
  2. Descomprímalo para obtener shell.c, sqlite3.c y los archivos .h.
  3. Si aún no está instalado, instale libreadline y libncurses. En Ubuntu Linux, instale ejecutando el siguiente comando:

    sudo apt install libreadline-dev libncurses-dev

  4. Ejecute el siguiente comando para construir:

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

Nota: Necesita -DHAVE_READLINE y -lreadline y -lncurses para obtener la funcionalidad readline.

Copie el binario sqlite3 en / usr / bin o agréguelo a su ruta.

Rob de la Cruz
fuente
1
Esta es la mejor respuesta. Nota sobre Ubuntu 18.04 Primero necesitaba ejecutar esto:sudo apt install libreadline-dev libncurses-dev
rayzinnz
Gracias, agregué los pasos de instalación de sudo apt para completar.
Rob de la Cruz
0

Logré compilar mi propio binario con esto:

Descargue el archivo fuente "autoconf" de la página de descarga de SQLite . Descomprima y extraiga el tar, cambie al directorio de origen.

Compile el código fuente con:

./configure --enable-readline
make

Estoy corriendo en RedHat, así que tuve que correr de yum install readline-develantemano. Esto puede ser diferente en su máquina.

Wernfried Domscheit
fuente