SQLite z obsługą readline na Ubuntu

19

Miałem sqlite3zainstalowany pakiet na Ubuntu i nie ma wsparcia dla readline. Oznacza to, że nie ma historii poleceń i innych fajnych funkcji readline.

Czy to problem z konfiguracją lub pakowaniem? Czy jest gdzieś inne archiwum pakietów, które zapewniłoby mi wsparcie readline po wyjęciu z pudełka? Albo, jak sam skompilować sqlite3 upewniając się, że ma on obsługę readline?

Helder S. Ribeiro
źródło

Odpowiedzi:

36

Zawsze możesz użyć rlwrap:

rlwrap sqlite3 database.db

Do twojej wiadomości, właśnie sprawdziłem moją hardy heron install, a jego sqlite3 ma wsparcie readline.

Rudedog
źródło
Nie wiedziałem o rlwrap. Naprawdę świetnie, dzięki! Korzystam z pakietu sqlite3 w Kubuntu Jaunty Jackalope i, z jakiegoś powodu, nie otrzymał wsparcia readline.
Helder S Ribeiro,
20

Dodaję inną odpowiedź, ponieważ jest to pierwszy hit dla „ ubuntu sqlite3 readline ” w google:

Android SDK instaluje własną wersję sqlite3pliku binarnego. Ten plik binarny nie zapewnia readlinewsparcia. Jeśli do swojej ścieżki dodałeś zestaw Android SDK, może to oznaczać, że nie maszreadline zestaw wsparcia, w rzeczywistości każdy pakiet Ubuntu jest kompilowany z readlineobsługą.

Zobacz także ten raport o błędach Ubuntu, który opisuje tę samą sytuację.

theomega
źródło
6
Anakonda robi to samo. Argh! / usr / bin / sqlite3 działa dobrze.
zbyszek
2
Dzięki za zwrócenie na to uwagi. Mój zestaw SDK systemu Android ukrywał moją aplikację / usr / bin / sqlite3.
Dwayne Crooks
1
Tak było również w moim systemie macOS High Sierra. Możesz to sprawdzić, uruchamiając which sqlite3.
Shane Creighton-Young,
1
+1, to był mój problem, miałem $ANDROID_HOME/Sdk/platform-toolspóźniej $PATH, ale po prostu nie zainstalowałem sqlite3. I znalazłem ten wątek, używając dokładnie tej samej wyszukiwanej frazy.
Meehow
2
  1. Pobierz plik zip zawierający kod źródłowy C ze strony https://www.sqlite.org/download.html (sqlite-amalgamation-nnnnnnn.zip)
  2. Rozpakuj go, aby uzyskać pliki shell.c, sqlite3.c i .h.
  3. Jeśli jeszcze nie został zainstalowany, zainstaluj libreadline i libncurses. W systemie Ubuntu Linux zainstaluj, uruchamiając poniższe polecenie:

    sudo apt install libreadline-dev libncurses-dev

  4. Uruchom poniższe polecenie, aby zbudować:

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

Uwaga: Potrzebujesz funkcji -DHAVE_READLINE oraz -lreadline i -lncurses, aby uzyskać funkcjonalność readline.

Skopiuj plik binarny sqlite3 do / usr / bin lub dodaj do swojej ścieżki.

Rob de la Cruz
źródło
1
To najlepsza odpowiedź. Uwaga na temat Ubuntu 18.04 Najpierw musiałem uruchomić to:sudo apt install libreadline-dev libncurses-dev
rayzinnz,
Dzięki, dodałem kroki instalacji sudo apt dla celów kompletności.
Rob de la Cruz,
0

Udało mi się skompilować mój własny plik binarny z tym:

Pobierz plik źródłowy „autoconf” ze strony pobierania SQLite . Rozpakuj i rozpakuj tar, przejdź do katalogu źródłowego.

Skompiluj kod źródłowy za pomocą:

./configure --enable-readline
make

Korzystam z RedHat, więc musiałem yum install readline-develwcześniej biegać . To może wyglądać inaczej na twoim komputerze.

Wernfried Domscheit
źródło