由于某些原因,我正在从源代码构建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/
为空。我在xterm-256color
找到了xterm
和/lib/terminfo
。当我使用包管理器(适用于Ubuntu 17.10)安装ncurses时,它可以工作。所以我假设这个包选择正确的路径。我复制了xterm-256color
resp。从xterm
到/lib/terminfo
的{{1}},我的版本现在可以在两个系统上运行。为什么存在两种不同的路径?为什么这两种版本的ncurses选择两种不同的路径?我需要一个开箱即用的骗局包,不需要复制描述文件。
这可能与以下内容重复: How to set custom search paths for the terminfo database when building ncurses from source
答案 0 :(得分:2)
答案在configure
末尾的摘要中(问题中没有显示)。但是,运行infocmp -D
将显示infocmp
在查找说明时将使用的目录。
您可以使用TERMINFO
和TERMINFO_DIRS
环境变量修改行为。
/lib/terminfo
是特定于Debian的(Ubuntu没有为ncurses提供任何更改;它们只是重新编译Debian软件包:ncurses的大多数Ubuntu bug报告处理它们在执行此操作时遇到的问题)。
默认情况下,Debian会在该目录中安装某人的最小终端数据库的概念。安装ncurses-term
以获得完整的终端数据库。
顺便说一句,在已经安装了ncurses的Debian / Ubuntu /其他系统上编译和安装ncurses存在破坏现有库的风险,例如bash
和你可能需要的其他实用程序