SQLite avec support readline sur Ubuntu

19

J'ai fait sqlite3installer le paquet sur Ubuntu et il n'y a pas de support pour readline. Cela signifie qu'il n'y a pas d'historique de commande et ces autres fonctionnalités astucieuses que readline vous offre.

S'agit-il d'un problème de configuration ou de packaging? Y a-t-il une archive de packages différente quelque part qui me donnerait un support readline prêt à l'emploi? Ou bien, comment puis-je compiler sqlite3 moi-même en m'assurant qu'il prend en charge readline?

Helder S Ribeiro
la source

Réponses:

36

Vous pouvez toujours utiliser rlwrap:

rlwrap sqlite3 database.db

Pour info, je viens de vérifier mon installation hardy heron, et son sqlite3 a un support readline.

Rudedog
la source
Je ne connaissais pas rlwrap. Vraiment super, merci! J'utilise le package sqlite3 dans Kubuntu Jaunty Jackalope et, pour une raison quelconque, il n'est pas venu avec le support readline.
Helder S Ribeiro
20

J'ajoute une autre réponse car c'est le premier hit pour " ubuntu sqlite3 readline " sur google:

Le SDK Android installe sa propre version du sqlite3binaire. Ce binaire ne fournit pas de readlinesupport. Si vous avez ajouté le SDK Android à votre chemin, cela pourrait vous faire penser que vous n'avez pas de readlinesupport, en fait, chaque package Ubuntu est compilé avec le readlinesupport.

Voir également ce rapport de bogue Ubuntu qui décrit la même situation.

theomega
la source
6
Anaconda fait la même chose. Argh! / usr / bin / sqlite3 fonctionne très bien.
zbyszek
2
Merci d'avoir fait remarquer cela. Mon SDK Android masquait mon application / usr / bin / sqlite3.
Dwayne Crooks du
1
Ce fut également le cas sur mon macOS High Sierra. Vous pouvez vérifier en exécutant which sqlite3.
Shane Creighton-Young
1
+1, c'était aussi mon problème, j'ai eu $ANDROID_HOME/Sdk/platform-toolsaprès $PATH, mais je n'ai tout simplement pas installé sqlite3. Et j'ai trouvé ce fil en utilisant exactement la même phrase de recherche.
Meehow
2
  1. Téléchargez le fichier zip contenant le code source C depuis https://www.sqlite.org/download.html (sqlite-amalgamation-nnnnnnn.zip)
  2. Décompressez-le pour obtenir les fichiers shell.c, sqlite3.c et .h.
  3. S'ils ne sont pas déjà installés, installez libreadline et libncurses. Sur Ubuntu Linux, installez en exécutant la commande ci-dessous:

    sudo apt install libreadline-dev libncurses-dev

  4. Exécutez la commande ci-dessous pour créer:

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

Remarque: Vous avez besoin de -DHAVE_READLINE et -lreadline et -lncurses pour obtenir la fonctionnalité readline.

Copiez le binaire sqlite3 dans / usr / bin ou ajoutez-le à votre chemin.

Rob de la Cruz
la source
1
C'est la meilleure réponse. Remarque sur Ubuntu 18.04 J'ai d'abord dû exécuter ceci:sudo apt install libreadline-dev libncurses-dev
rayzinnz
Merci, j'ai ajouté les étapes d'installation de sudo apt à des fins d'exhaustivité.
Rob de la Cruz
0

J'ai réussi à compiler mon propre binaire avec ceci:

Téléchargez le fichier source "autoconf" depuis la page de téléchargement de SQLite . Décompressez et extrayez le tar, passez au répertoire source.

Compilez le code source avec:

./configure --enable-readline
make

Je cours sur RedHat, j'ai donc dû courir yum install readline-develavant. Cela peut être différent sur votre machine.

Wernfried Domscheit
la source