Ubuntu 上支持 readline 的 SQLite

Ubuntu 上支持 readline 的 SQLite

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

  1. 从以下位置下载包含 C 源代码的 zip 文件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 或添加到您的路径。

答案4

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

从以下位置下载“autoconf”源文件SQLite 下载页面. 解压并提取 tar,更改至源目录。

使用以下命令编译源代码:

./configure --enable-readline
make

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

相关内容