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?

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.


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.


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.


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.