SQLite dengan dukungan readline di Ubuntu

17

Saya punya sqlite3 paket diinstal pada Ubuntu dan tidak ada dukungan untuk readline. Itu berarti tidak ada riwayat perintah dan fitur-fitur bagus lainnya readline memberi Anda.

Apakah ini konfigurasi atau masalah pengemasan? Apakah ada arsip paket berbeda di suatu tempat yang akan memberi saya dukungan readline di luar kotak? Atau yang lain, bagaimana cara saya mengkompilasi sqlite3 sendiri memastikan memiliki dukungan readline?

hsribei
sumber

Jawaban:

33

Anda selalu dapat menggunakan rlwrap:

rlwrap sqlite3 database.db

FYI, saya baru saja menginstal hardy heron saya instal, dan sqlite3-nya memang memiliki dukungan readline.

Rudedog
sumber
Tidak tahu tentang rlwrap. Sangat bagus, terima kasih! Saya menggunakan paket sqlite3 di Kubuntu Jaunty Jackalope dan, untuk beberapa alasan, itu tidak datang dengan dukungan readline.
hsribei
saya harus melakukan rlwrap -a -N -c -i sqlite3 agar ini bekerja. superuser.com/a/999132/512500
kimbaudi
18

Saya menambahkan jawaban lain karena ini adalah hit pertama untuk " ubuntu sqlite3 readline "di google:

Android SDK menginstal versinya sendiri sqlite3 biner. Biner ini tidak menyediakan readline mendukung. Jika Anda menambahkan Android SDK ke jalur Anda, ini mungkin membuat Anda berpikir Anda tidak memilikinya readline dukungan, pada kenyataannya setiap paket Ubuntu dikompilasi dengan readline mendukung.

Lihat juga ini Laporan Bug Ubuntu yang menggambarkan situasi yang sama.

theomega
sumber
4
Anaconda melakukan hal yang sama. Argh! / usr / bin / sqlite3 berfungsi dengan baik.
zbyszek
Terima kasih telah menunjukkannya. Android SDK saya menyembunyikan aplikasi / usr / bin / sqlite3 saya.
Dwayne Crooks
Ini adalah kasus di macOS saya High Sierra juga. Anda dapat memeriksa dengan menjalankan which sqlite3.
Shane Creighton-Young
+1, itu masalah saya juga $ANDROID_HOME/Sdk/platform-tools setelah $PATH, tapi saya tidak menginstal sqlite3. Dan saya menemukan utas ini menggunakan frasa pencarian yang persis sama.
Meehow
1
  1. Unduh file zip yang berisi kode sumber C dari https://www.sqlite.org/download.html (sqlite-amalgamation-nnnnnnn.zip)
  2. Buka zip untuk mendapatkan file shell.c, sqlite3.c, dan .h.
  3. Jika belum diinstal, instal libreadline dan libncurses. Di Ubuntu Linux, instal dengan menjalankan perintah di bawah ini:

    sudo apt install libreadline-dev libncurses-dev

  4. Jalankan perintah di bawah ini untuk membangun:

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

Catatan: Anda perlu -DHAVE_READLINE dan -lreadline dan -lncurses untuk mendapatkan fungsionalitas readline.

Salin biner sqlite3 ke / usr / bin atau tambahkan ke path Anda.

Rob de la Cruz
sumber
Ini jawaban terbaik. Catatan pada Ubuntu 18.04 Saya pertama kali perlu menjalankan ini: sudo apt install libreadline-dev libncurses-dev
rayzinnz
Terima kasih, saya menambahkan langkah-langkah pemasangan sudo apt untuk tujuan kelengkapan.
Rob de la Cruz
0

Saya berhasil mengkompilasi biner saya sendiri dengan ini:

Unduh file sumber "autoconf" dari Halaman Unduhan SQLite . Buka zip dan ekstrak tar, ubah ke direktori sumber.

Kompilasi kode sumber dengan:

./configure --enable-readline
make

Saya menggunakan RedHat, jadi saya harus berlari yum install readline-devel sebelumnya. Ini mungkin berbeda pada mesin Anda.

Wernfried Domscheit
sumber
Sayangnya, kompilasi dari sumber dengan opsi --enable-readline tidak bekerja untuk saya di Ubuntu 18.04 LTS. Satu-satunya hal yang berhasil adalah rlwrap -a -N -c -i sqlite3.
kimbaudi