ncurses如何搜索终端描述

How does ncurses search for terminal descriptions

出于某些原因,我正在从源代码构建 ncurses 6.1。首先我用

配置源
./configure

然后我用

构建它
make

都没有参数。当我尝试 运行 测试时,我收到错误消息

Error opening terminal: xterm-256color.

在我的本地系统上 (Ubuntu 17.10) 和

Error opening terminal: xterm

在构建服务器上(Jenkins Docker 容器)。

我发现此版本正在 /usr/share/terminfo/ 中寻找终端描述。有很多描述,但在我的本地系统上没有 xterm-256color。在生成服务器上,文件夹 /usr/share/terminfo/ 是空的。我在 /lib/terminfo 找到了 xterm-256colorxterm。当我使用包管理器(适用于 Ubuntu 17.10)安装 ncurses 时,它可以工作。所以我假设这个包选择了正确的路径。我分别复制了 xterm-256colorxterm/lib/terminfo/usr/share/terminfo/,我的构建现在可以在两个系统上运行。为什么会存在两条不同的路径,为什么这两个版本的ncurses会选择两条不同的路径?我需要一个开箱即用的 ncurses 包,无需复制描述文件。

这可能是以下内容的重复: How to set custom search paths for the terminfo database when building ncurses from source

答案在 configure 末尾的摘要中(问题中未显示)。但是 运行 infocmp -D 将显示 infocmp 在查找描述时会使用的目录。

您可以使用 TERMINFO and TERMINFO_DIRS 环境变量修改行为。

/lib/terminfo 是 Debian-specific(Ubuntu 没有为 ncurses 提供任何更改;他们只是重新编译 Debian 软件包:大多数 Ubuntu ncurses 处理的错误报告他们在这样做时遇到的问题)。

默认情况下,Debian 会在该目录中安装某人认为的最小终端数据库。安装 ncurses-term 以获得完整的终端数据库。

顺便说一句,在已安装 ncurses 的 Debian/Ubuntu/other 系统上编译和安装 ncurses 存在破坏 bash 和您使用的其他实用程序(例如)使用的现有库的风险可能需要。