SQLite с поддержкой readline в Ubuntu


19

Я установил sqlite3пакет в Ubuntu, и поддержка readline отсутствует. Это означает, что нет истории команд, и эти отличные функции readline дает вам.

Это проблема конфигурации или упаковки? Есть ли где-нибудь другой архив пакетов, который бы дал мне поддержку readline из коробки? Или как собрать сам sqlite3, чтобы он поддерживал readline?

Ответы:


36

Вы всегда можете использовать rlwrap:

rlwrap sqlite3 database.db

К вашему сведению, я только что проверил мою версию hardy heron, и его sqlite3 имеет поддержку readline.


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

20

Я добавляю еще один ответ, потому что это первый хит " ubuntu sqlite3 readline " в Google:

Android SDK устанавливает свою собственную версию sqlite3бинарника. Этот двоичный файл не обеспечивает readlineподдержку. Если вы добавили Android SDK к своему пути, это может заставить вас думать, что у вас нет readlineподдержки, фактически каждый пакет Ubuntu скомпилирован с readlineподдержкой.

Также смотрите этот отчет об ошибках Ubuntu, в котором описана та же ситуация.


6
Анаконда делает то же самое. Argh! / 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 и -lncurses, чтобы получить функциональность readline.

Скопируйте двоичный файл sqlite3 в / usr / bin или добавьте его по своему пути.


1
Это лучший ответ. Замечание по Ubuntu 18.04 Мне сначала нужно было запустить это:sudo apt install libreadline-dev libncurses-dev
rayzinnz

Спасибо, я добавил шаги sudo apt для полной комплектации.
Роб де ла Круз

0

Мне удалось собрать свой собственный двоичный файл с этим:

Загрузите исходный файл «autoconf» со страницы загрузки SQLite . Разархивируйте и распакуйте tar, перейдите в исходный каталог.

Скомпилируйте исходный код с помощью:

./configure --enable-readline
make

Я работаю на RedHat, поэтому мне пришлось бежать yum install readline-develзаранее. Это может отличаться на вашей машине.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.