ncurses终端描述搜索机制及6.1版本源码编译测试报错求助
解决ncurses 6.1编译后终端描述缺失的报错问题
我之前也碰到过类似的坑——无参数编译ncurses时,它默认会依赖系统的/usr/share/terminfo/目录,但这个目录在本地Ubuntu和Jenkins Docker容器里的状态差异很大,自然会触发报错。下面给你几个针对性的解决方案:
1. 让ncurses自带独立的terminfo文件(通用方案)
这种方法能彻底摆脱对系统terminfo目录的依赖,不管是本地还是容器环境都适用:
- 先清理之前的编译残留,避免旧配置干扰:
make clean && make distclean - 重新运行configure时指定自定义安装路径和terminfo目录:
./configure --prefix=/usr/local/ncurses-6.1 --with-terminfo-dirs=/usr/local/ncurses-6.1/share/terminfo - 正常完成编译安装:
make && make install - 之后运行依赖ncurses的程序前,设置环境变量让它优先读取自带的terminfo:
export TERMINFO=/usr/local/ncurses-6.1/share/terminfo export TERM=xterm-256color
2. 修复本地Ubuntu系统的xterm-256color缺失问题
如果只想在本地解决,不用修改ncurses的编译配置,直接把源码里的终端描述安装到系统目录即可:
tic -x -o /usr/share/terminfo src/terminfo.src
这个命令会编译并安装源码中所有的终端描述,包括你缺失的xterm-256color。
3. 解决Jenkins Docker容器的空terminfo目录问题
容器通常是最小化系统,默认没有安装terminfo相关包,先补装系统包再编译:
apt-get update && apt-get install -y ncurses-term
安装完成后/usr/share/terminfo/就会有完整的终端描述文件,再无参数编译ncurses就不会报错了。
额外提醒
- 不管用哪种方法,都要确保运行程序时
TERM环境变量设置正确,比如常用的xterm-256color。 - 如果是在Jenkins流水线中执行,记得把环境变量设置或包安装步骤加到构建脚本里。
内容的提问来源于stack exchange,提问作者Thomas Sablik
相关产品推荐
相关产品推荐

