我注意到ncurses的terminfo数据库/usr/share/terminfo
大约有7MB(我自己编译的)。如果我想将其部署在 64MB 磁盘空间的嵌入式 Linux 上,这太大了。
有没有办法通过删除不需要的条目并保留最常用的条目来减小其大小?这实际上是做什么用的?
编辑:有没有关于普通 PC 或 SSH 客户端常用 terminfo 的信息或参考?
答案1
有了 ansi、cygwin、linux、vt100、vt220 和 xterm terminfo 定义,我希望您能够实现您在野外遇到的 98% 的终端仿真。
即使具有不同本机模式的终端仿真器也可能被引导来仿真 vt100/vt220 模式,通常无需用户干预。
答案2
构建小型 terminfo 数据库的常用方法不是删除条目,而是仅构建所需的部分:
- ncurses 常见问题解答terminfo 数据库很大 — 我需要所有这些吗?显示使用的示例脚本
tic
从相当大的数据中提取描述的选项术语信息.src文件。 - 该方法还依赖于提取构建块,这可能是一个反复试验的过程。或者,您可以使用以下输出
infocmp
,并获得完整的条目,尽管不太优雅。 - 一些应用程序使用倒退可以编译成 ncurses 的条目(这样就不需要单独的文件)。同样,这是 ncurses FAQ 中的内容我真的需要 terminfo 数据库吗?, 使用信息CMP选项。
答案3
我讨厌给出 RTFM 类型的答案,但是您要查找的信息中未包含哪些信息man 5 terminfo
?当不同部分中有多个手册页时,通常很容易忽略手册页。通常要查看的其他手册页会列在找到的第一个手册页的底部,但记住手册页分为多个部分(来自 参考资料man man
)也很有帮助:
1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File formats and conventions eg /etc/passwd
6 Games
7 Miscellaneous (including macro packages and conventions)
8 System administration commands (usually only for root)
9 Kernel routines [Non standard]
看来man 5 terminfo
您可以从 /usr/share/terminfo 删除多少内容将取决于您是否完全控制终端类型(您可能会这样做)。如果您知道您只会在一种终端类型上运行,则可以删除除一种终端描述之外的所有终端描述。在某些系统上,这些 terminfo 文件也位于 /etc/terminfo/ 或 /lib/terminfo/ 中,但我不确定当您直接从上游 tarball 编译时是否会出现这种情况。