在Ubuntu上具有readline支持的SQLite


19

我已经sqlite3在Ubuntu上安装了该软件包,并且不支持readline。这意味着没有命令历史记录,而readline提供的其他漂亮功能也可以为您提供。

这是配置还是包装问题?是否有其他软件包存档可以为我提供开箱即用的readline支持?否则,我如何自己编译sqlite3以确保它具有readline支持?

Answers:


36

您可以始终使用rlwrap:

rlwrap sqlite3 database.db

仅供参考,我刚刚检查了我的安全苍鹭安装,其sqlite3确实具有readline支持。


不知道rlwrap。真的很棒,谢谢!我在Kubuntu Jaunty Jackalope中使用sqlite3软件包,由于某种原因,它没有readline支持。
Helder S Ribeiro

20

我添加了另一个答案,因为这是google上“ ubuntu sqlite3 readline ” 的首次点击:

android SDK安装自己的sqlite3二进制版本。该二进制文件不提供readline支持。如果您将Android SDK添加到路径中,这可能会使您认为自己readline不受支持,实际上,每个Ubuntu软件包都是在readline支持的情况下编译的。

另请参阅此Ubuntu Bug报告,其中描述了相同的情况。


6
Anaconda做同样的事情。啊!/ usr / bin / sqlite3正常工作。
zbyszek 2015年

2
感谢您指出了这一点。我的Android SDK隐藏了/ usr / bin / sqlite3应用程序。
Dwayne Crooks's

1
我的macOS High Sierra也是这种情况。您可以通过运行进行检查which sqlite3
Shane Creighton-Young

1
+1,这是我的问题,也是,我有$ANDROID_HOME/Sdk/platform-tools$PATH,但我就是没有安装sqlite3的。我发现该线程使用完全相同的搜索短语。
Meehow

2
  1. https://www.sqlite.org/download.html下载包含C源代码的zip文件(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 -incurses -o sqlite3

注意:您需要-DHAVE_READLINE和-lreadline和-inccurses才能获得读取行功能。

将sqlite3二进制文件复制到/ usr / bin或添加到您的路径。


1
这是最好的答案。关于Ubuntu 18.04的说明我首先需要运行以下命令:sudo apt install libreadline-dev libncurses-dev
rayzinnz

谢谢,我为了完整起见添加了sudo apt安装步骤。
罗布·德拉克鲁兹

0

我设法用这个来编译自己的二进制文件:

从“ SQLite下载”页面下载“ autoconf”源文件。解压并解压缩tar,转到源目录。

用以下代码编译源代码:

./configure --enable-readline
make

我在RedHat上运行,因此必须yum install readline-devel事先运行。这在您的计算机上可能有所不同。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.