6.19. Ncurses-5.7

Ncurses パッケージは、端末に依存しない、文字ベースのスクリーン制御を行うライブラリを提供します。

概算ビルド時間: 0.8 SBU
必要ディスク容量: 35 MB

6.19.1. Ncurses のインストール

Ncurses をコンパイルするための準備をします。

./configure --prefix=/usr --with-shared --without-debug --enable-widec

configure オプションの意味:

--enable-widec

このオプションは通常のライブラリ (libncurses.so.5.7) ではなくワイド文字対応のライブラリ (libncursesw.so.5.7) をビルドすることを指示します。 ワイド文字対応のライブラリは、マルチバイトロケールと従来の 8ビットロケールの双方に対して利用可能です。 通常のライブラリでは 8ビットロケールに対してしか動作しません。 ワイド文字対応と通常のものとでは、ソース互換があるもののバイナリ互換がありません。

パッケージをコンパイルします。

make

このパッケージにテストスイートはありますが、パッケージをインストールした後でないと実行できません。 テストスイートのためのファイル群はサブディレクトリ test/ 以下に残っています。 詳しいことはそのディレクトリ内にある README ファイルを参照してください。

パッケージをインストールします。

make install

ライブラリを /lib ディレクトリに移動します。 これらはここにあるべきものです。

mv -v /usr/lib/libncursesw.so.5* /lib

ライブラリを移動させたので、シンボリックリンク先が存在しないことになります。 そこでリンクを再生成します。

ln -sfv ../../lib/libncursesw.so.5 /usr/lib/libncursesw.so

アプリケーションによっては、ワイド文字対応ではないライブラリをリンカが探し出すよう求めるものが多くあります。 そのようなアプリケーションに対しては、以下のようなシンボリックリンクやリンカスクリプトを作り出して、ワイド文字対応のライブラリにリンクさせるよう仕向けます。

for lib in ncurses form panel menu ; do \
    rm -vf /usr/lib/lib${lib}.so ; \
    echo "INPUT(-l${lib}w)" >/usr/lib/lib${lib}.so ; \
    ln -sfv lib${lib}w.a /usr/lib/lib${lib}.a ; \
done
ln -sfv libncurses++w.a /usr/lib/libncurses++.a

最後に古いアプリケーションにおいて、ビルド時に -lcurses を指定するものがあるため、これもビルド可能なものにします。

rm -vf /usr/lib/libcursesw.so
echo "INPUT(-lncursesw)" >/usr/lib/libcursesw.so
ln -sfv libncurses.so /usr/lib/libcurses.so
ln -sfv libncursesw.a /usr/lib/libcursesw.a
ln -sfv libncurses.a /usr/lib/libcurses.a

必要なら Ncurses のドキュメントをインストールします。

mkdir -v       /usr/share/doc/ncurses-5.7
cp -v -R doc/* /usr/share/doc/ncurses-5.7
[注記]

注記

ここまでの作業手順では、ワイド文字対応ではない Ncurses ライブラリは生成しませんでした。 ソースからコンパイルして構築するパッケージなら、実行時にそのようなライブラリにリンクするものはないからです。 バイナリコードしかないアプリケーションを取り扱う場合、あるいは LSB 対応を要する場合で、それがワイド文字対応ではないライブラリを必要とするなら、以下のコマンドによりそのようなライブラリを生成してください。

make distclean
./configure --prefix=/usr --with-shared --without-normal \
  --without-debug --without-cxx-binding
make sources libs
cp -av lib/lib*.so.5* /usr/lib

6.19.2. Ncurses の構成

インストールプログラム: captoinfo (tic へのリンク), clear, infocmp, infotocap (tic へのリンク), ncursesw5-config, reset (tset へのリンク), tic, toe, tput, tset
インストールライブラリ: libcursesw.{a,so} (libncursesw.{a,so} へのシンボリックリンクおよびリンカスクリプト), libformw.{a,so}, libmenuw.{a,so}, libncurses++w.a, libncursesw.{a,so}, libpanelw.{a,so} これらに加えてワイド文字対応ではない通常のライブラリで、その名称から "w" を取り除いたもの。

概略説明

captoinfo

termcap の記述を terminfo の記述に変換します。

clear

画面消去が可能ならこれを行います。

infocmp

terminfo の記述どうしを比較したり出力したりします。

infotocap

terminfo の記述を termcap の記述に変換します。

ncursesw5-config

ncurses の設定情報を提供します。

reset

端末をデフォルト設定に初期化します。

tic

terminfo の定義項目に対するコンパイラです。 これはソース形式の terminfo ファイルをバイナリ形式に変換し、ncurses ライブラリ内の処理ルーチンが利用できるようにします。 terminfo ファイルは特定端末の特性に関する情報が記述されるものです。

toe

利用可能なすべての端末タイプを一覧表示します。 そこでは端末名と簡単な説明を示します。

tput

端末に依存する機能設定をシェルが利用できるようにします。 また端末のリセットや初期化、あるいは長い端末名称の表示も行います。

tset

端末の初期化に利用します。

libcurses

libncurses へのリンク。

libncurses

様々な方法により端末画面上に文字列を表示するための関数を提供します。 これらの関数を用いた具体例として、カーネルの make menuconfig の実行によって表示されるメニューがあります。

libform

フォームを実装するための関数を提供します。

libmenu

メニューを実装するための関数を提供します。

libpanel

パネルを実装するための関数を提供します。