出于某些原因,我正在从源代码构建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-256color
和xterm
.当我使用包管理器(适用于 Ubuntu 17.10)安装 ncurses 时,它可以工作。所以我假设这个包选择了正确的路径。我复制了xterm-256color
从/lib/terminfo
xterm
到/usr/share/terminfo/
,我的构建现在可以在两个系统上工作。为什么存在两条不同的路径,为什么这两个版本的 ncurses 选择两条不同的路径?我需要一个开箱即用的 ncurses 柯南包,无需复制描述文件即可开箱即用。
这可能是以下内容的副本: 如何为terminfo数据库设置自定义搜索路径,从源代码构建ncurses
答案在configure
末尾的摘要中(问题中未显示)。 但是运行infocmp -D
将显示infocmp
在查找描述时将使用的目录。
您可以使用TERMINFO
和TERMINFO_DIRS
环境变量修改行为。
/lib/terminfo
是特定于 Debian 的(Ubuntu 没有为 ncurses 提供任何更改;它们只是重新编译 Debian 软件包:大多数 Ubuntu 的 ncurses 错误报告都处理了他们这样做的问题)。
Debian 默认在该目录中安装某人的最小终端数据库的概念。 安装ncurses-term
以获取完整的终端数据库。
顺便说一下,在已经安装了 ncurses 的 Debian/Ubuntu/其他系统上编译和安装 ncurses 存在破坏现有库的风险,例如,bash
和其他您可能需要的实用程序。