问题描述
我在Ubuntu上安装了sqlite3
软件包,并且不支持readline。这意味着没有命令历史记录,而readline提供的其他精美功能也给您提供。
这是配置还是包装问题?是否有其他软件包存档可以为我提供开箱即用的readline支持?否则,我如何自己编译sqlite3以确保它具有readline支持?
最佳答案
您可以随时使用rlwrap:
rlwrap sqlite3 database.db
仅供参考,我刚刚检查了我的安全苍鹭安装,其sqlite3确实具有readline支持。
次佳答案
我添加了另一个答案,因为这是google上“ ubuntu sqlite3 readline”的首次点击:
android SDK将安装自己的sqlite3
二进制版本。该二进制文件不提供readline
支持。如果您将Android SDK添加到路径中,这可能会使您认为您不具有readline
支持,实际上,每个Ubuntu软件包都是使用readline
支持编译的。
另请参见此Ubuntu Bug Report,它描述了相同的情况。
第三种答案
-
从https://www.sqlite.org/download.html下载包含C源代码的zip文件(sqlite-amalgamation-nnnnnnn.zip)
-
将其解压缩以获取shell.c,sqlite3.c和.h文件。
-
如果尚未安装,请安装libreadline和libncurses。在Ubuntu Linux上,通过运行以下命令进行安装:sudo apt install libreadline-dev libncurses-dev
-
运行以下命令来构建:gcc -DSQLITE_ENABLE_FTS5 -DHAVE_READLINE shell.c sqlite3.c -lpthread -ldl -lm -lreadline -incurses -o sqlite3
注意:您需要-DHAVE_READLINE以及-lreadline和-inccurses才能获得读取行功能。
将sqlite3二进制文件复制到/usr /bin或添加到您的路径。