我sqlite3
在 Ubuntu 上安装了该软件包,但不支持 readline。这意味着没有命令历史记录和 readline 提供的其他实用功能。
这是配置问题还是打包问题?是否有其他软件包存档可以让我立即获得 readline 支持?或者,我该如何自己编译 sqlite3 以确保它具有 readline 支持?
答案1
你总是可以使用 rlwrap:
rlwrap sqlite3 database.db
仅供参考,我刚刚检查了我的 hardy heron 安装,它的 sqlite3 确实有 readline 支持。
答案2
我添加了另一个答案,因为这是“发表于 2018-07-22 17:46:27“在谷歌上:
Android SDK 会安装其自己的sqlite3
二进制版本。此二进制文件不提供readline
支持。如果您将 Android SDK 添加到路径中,这可能会让您认为您没有readline
支持,事实上每个 Ubuntu 软件包都是使用readline
支持编译的。
另请参阅Ubuntu 错误报告描述的是同样的情况。
答案3
- 从以下位置下载包含 C 源代码的 zip 文件https://www.sqlite.org/download.html(sqlite-amalgamation-nnnnnnn.zip)
- 解压缩后得到shell.c、sqlite3.c、以及.h文件。
如果尚未安装,请安装 libreadline 和 libncurses。在 Ubuntu Linux 上,通过运行以下命令进行安装:
sudo apt 安装 libreadline-dev libncurses-dev
运行以下命令进行构建:
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 或添加到您的路径。
答案4
我设法用这个编译我自己的二进制文件:
从以下位置下载“autoconf”源文件SQLite 下载页面. 解压并提取 tar,更改至源目录。
使用以下命令编译源代码:
./configure --enable-readline
make
我在 RedHat 上运行,因此我必须yum install readline-devel
事先运行。这可能在您的机器上有所不同。