web-dev-qa-db-ja.com

ncursesのterminfoサイズを減らす方法

/usr/share/terminfoにあるncursesのterminfoデータベースが約7MBであることに気付きました(私はそれを自分でコンパイルしました)。 64MBのディスク容量の組み込みLinuxにデプロイしたい場合、これは大きすぎます。

不要なエントリを削除してサイズを縮小し、最も使用されているエントリを保持する方法はありますか?そして、これは実際には何のためですか?

[〜#〜] edit [〜#〜]:通常のPCまたはSSHクライアントで一般的に使用されるterminfoの情報または参照はありますか?

2
uray

Ansi、cygwin、linux、vt100、vt220、およびxterm terminfoの定義を使用すると、実際に遭遇するターミナルエミュレーションの98%に到達できると思います。

ネイティブモードが異なるターミナルエミュレーターでさえ、多くの場合ユーザーの介入なしに、vt100/vt220モードをエミュレートするように指示される可能性があります。

4
msw

エントリを削除するのではなく、小さなterminfoデータベースを構築するための通常のアプローチは、必要な部分だけを構築することです。

  • Ncurses FAQterminfoデータベースは大きい—すべてが必要ですか?は、 tic オプションを使用して、かなり大きな terminfo.src ファイルから説明を抽出するサンプルスクリプトを示しています。
  • このアプローチは、ビルディングブロックの抽出にも依存しており、試行錯誤のプロセスになる可能性があります。または、 infocmp の出力を使用して、エレガントではありませんが、完全なエントリを取得することもできます。
  • いくつかのアプリケーションは、ncursesにコンパイルできるfallbackエントリを使用します(したがって、個別のファイルは必要ありません)。繰り返しますが、それはncursesにありますFAQ本当にterminfoデータベースが必要ですか?infocmp オプションを使用します。
2
Thomas Dickey

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からどれだけ取り除くことができるかは、端末タイプを完全に制御できるかどうかに依存するようです(おそらくそうします)。 1つの端末タイプでのみ実行することがわかっている場合は、1つを除くすべての端末の説明を削除できる可能性があります。一部のシステムでは、これらのterminfoファイルは/ etc/terminfo /または/ lib/terminfo /にもありますが、アップストリームtarballから直接コンパイルする場合にこれが当てはまるかどうかはわかりません。

0
Steven D