SQLite mit Readline-Unterstützung unter Ubuntu


19

Ich hatte das sqlite3Paket auf Ubuntu installiert und es gibt keine Unterstützung für readline. Das heißt, es gibt keinen Befehlsverlauf und die anderen nützlichen Funktionen, die Readline bietet.

Handelt es sich um eine Konfiguration oder ein Verpackungsproblem? Gibt es irgendwo ein anderes Paketarchiv, das mir sofort Readline-Unterstützung bietet? Oder wie kompiliere ich sqlite3 selbst, um sicherzustellen, dass es Readline-Unterstützung bietet?

Antworten:


36

Sie könnten immer rlwrap verwenden:

rlwrap sqlite3 database.db

Zu Ihrer Information, ich habe gerade meine Hardy Heron-Installation überprüft, und seine sqlite3 hat Readline-Unterstützung.


Wusste nichts über rlwrap. Wirklich toll, danke! Ich verwende das sqlite3-Paket in Kubuntu Jaunty Jackalope und aus irgendeinem Grund wurde es nicht mit Readline-Unterstützung geliefert.
Helder S Ribeiro

20

Ich füge eine weitere Antwort hinzu, da dies der erste Treffer für " Ubuntu SQLite3 Readline " auf Google ist:

Das Android SDK installiert eine eigene Version der sqlite3Binärdatei. Diese Binärdatei bietet keine readlineUnterstützung. Wenn Sie das Android SDK zu Ihrem Pfad hinzugefügt haben, könnte dies den Eindruck erwecken, dass Sie keinen readlineSupport haben. Tatsächlich wird jedes Ubuntu-Paket mit readlineSupport kompiliert .

Siehe auch diesen Ubuntu Bug Report, der die gleiche Situation beschreibt.


6
Anaconda macht dasselbe. Argh! / usr / bin / sqlite3 funktioniert einwandfrei.
zbyszek

2
Vielen Dank für den Hinweis. Mein Android SDK hat meine Anwendung / usr / bin / sqlite3 ausgeblendet.
Dwayne Crooks

1
Dies war auch auf meinem macOS High Sierra der Fall. Sie können dies überprüfen, indem Sie ausführen which sqlite3.
Shane Creighton-Young

1
+1, war es mein Problem so gut, ich hatte $ANDROID_HOME/Sdk/platform-toolsnach $PATH, aber ich habe installieren einfach nicht sqlite3. Und ich fand diesen Thread mit genau dem gleichen Suchbegriff.
Meehow

2
  1. Laden Sie die ZIP-Datei mit dem C-Quellcode von https://www.sqlite.org/download.html (sqlite-amalgamation-nnnnnnn.zip) herunter.
  2. Entpacken Sie es, um shell.c, sqlite3.c und die .h-Dateien abzurufen.
  3. Falls noch nicht installiert, installieren Sie libreadline und libncurses. Installieren Sie unter Ubuntu Linux, indem Sie den folgenden Befehl ausführen:

    sudo apt installiere libreadline-dev libncurses-dev

  4. Führen Sie den folgenden Befehl aus, um zu erstellen:

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

Hinweis: Sie benötigen -DHAVE_READLINE und -lreadline und -lncurses, um die Readline-Funktionalität zu erhalten.

Kopieren Sie die sqlite3-Binärdatei nach / usr / bin oder fügen Sie sie Ihrem Pfad hinzu.


1
Das ist die beste Antwort. Hinweis zu Ubuntu 18.04 Ich musste dies zuerst ausführen:sudo apt install libreadline-dev libncurses-dev
rayzinnz

Vielen Dank, ich habe der Vollständigkeit halber die Installationsschritte für sudo apt hinzugefügt.
Rob de la Cruz

0

Ich habe es geschafft, meine eigene Binärdatei zu kompilieren:

Laden Sie die "autoconf" -Quelldatei von der SQLite-Download-Seite herunter . Entpacken und extrahieren Sie den Teer, wechseln Sie in das Quellverzeichnis.

Kompilieren Sie den Quellcode mit:

./configure --enable-readline
make

Ich laufe auf RedHat, also musste ich vorher laufen yum install readline-devel. Dies kann auf Ihrem Computer anders sein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.