SQLite з підтримкою readline на Ubuntu


19

У мене був sqlite3встановлений пакет на Ubuntu, і немає підтримки для readline. Це означає, що немає історії команд, і ті інші чудові функції, які ви читаєте, дає вам.

Це проблема з конфігурацією чи упаковкою? Чи є десь інший архів пакетів, який би дав мені підтримку для читання ліній з коробки? Або ж як я скомпілюю sqlite3, переконуючись, що він має підтримку readline?

Відповіді:


36

Ви завжди можете використовувати rlwrap:

rlwrap sqlite3 database.db

FYI, я щойно перевірив встановлення моєї витривалої чаплі, і її sqlite3 має підтримку readline.


Не знав про rlwrap. Дійсно чудово, дякую! Я використовую пакет sqlite3 в Kubuntu Jaunty Jackalope, і чомусь він не отримав підтримку readline.
Хелдер S Ribeiro

20

Я додаю ще одну відповідь, тому що це перший хіт для " ubuntu sqlite3 readline " в Google:

Android SDK встановлює власну версію sqlite3бінарного файлу. Цей бінар не readlineпідтримує. Якщо ви додали Android SDK до свого шляху, це може змусити вас вважати, що у вас немає readlineпідтримки, адже кожен пакет Ubuntu складається з readlineпідтримкою.

Також дивіться цей звіт про помилку Ubuntu, який описує ту саму ситуацію.


6
Анаконда робить те саме. Арг! / usr / bin / sqlite3 працює чудово.
zbyszek

2
Дякуємо, що вказали на це. Мій Android SDK приховував мою програму / usr / bin / sqlite3.
Дуейн Крукс

1
Так було і на моєму macOS High Sierra. Ви можете перевірити, запустивши which sqlite3.
Шейн Крейтон-Янг

1
+1, це також було моєю проблемою, у мене було $ANDROID_HOME/Sdk/platform-toolsпісля $PATH, але я просто не встановив sqlite3. І я знайшов цю тему, використовуючи абсолютно ту саму фразу пошуку.
Meehow

2
  1. Завантажте zip-файл, що містить вихідний код C, з https://www.sqlite.org/download.html (sqlite-amalgamation-nnnnnnn.zip)
  2. Розпакуйте його, щоб отримати файли shell.c, sqlite3.c та .h.
  3. Якщо це ще не встановлено, встановіть libreadline та libncurses. На Ubuntu Linux встановіть за допомогою команди нижче:

    sudo apt встановити libreadline-dev libncurses-dev

  4. Виконайте команду нижче, щоб створити:

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

Примітка. Для отримання функціональної функції для читання вам потрібно -DHAVE_READLINE та -lreadline та -lcurcurses.

Скопіюйте двійковий файл sqlite3 в / usr / bin або додайте до свого шляху.


1
Це найкраща відповідь. Примітка про Ubuntu 18.04 мені вперше потрібно було запустити це:sudo apt install libreadline-dev libncurses-dev
rayzinnz

Дякую, я додав кроки встановлення sudo apt для цілей повноти.
Роб де ла Крус

0

Мені вдалося скласти свій власний бінарний файл із цим:

Завантажте вихідний файл "autoconf" зі сторінки завантаження SQLite . Розпакуйте та витягніть дьоготь, перейдіть до вихідного каталогу.

Компілюйте вихідний код із:

./configure --enable-readline
make

Я бігаю по RedHat, тому мені довелося забігти yum install readline-develзаздалегідь. Це може бути інакше на вашій машині.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.