8.28.1. Ncurses のインストール
Ncurses をコンパイルするための準備をします。
./configure --prefix=/usr \
--mandir=/usr/share/man \
--with-shared \
--without-debug \
--without-normal \
--with-cxx-shared \
--enable-pc-files \
--enable-widec \
--with-pkg-config-libdir=/usr/lib/pkgconfig
configure オプションの意味
-
--with-shared
-
これは Ncurses において共有 C ライブラリをビルドしインストールします。
-
--without-normal
-
これは Ncurses においてスタティックな C ライブラリのビルドおよびインストールを行わないようにします。
-
--without-debug
-
これは Ncurses においてデバッグライブラリのビルドおよびインストールを行わないようにします。
-
--with-cxx-shared
-
これは Ncurses において共有 C++ バインディングをビルドしインストールします。 同時にスタティックな C++
バインディングのビルドおよびインストールは行わないようにします。
-
--enable-pc-files
-
本スイッチは pkg-config 用の .pc ファイルを生成しインストールすることを指示します。
-
--enable-widec
-
本スイッチは通常のライブラリ (libncurses.so.6.3
) ではなくワイド文字対応のライブラリ
(libncursesw.so.6.3
)
をビルドすることを指示します。 ワイド文字対応のライブラリは、マルチバイトロケールと従来の
8ビットロケールの双方に対して利用可能です。 通常のライブラリでは 8ビットロケールに対してしか動作しません。
ワイド文字対応と通常のものとでは、ソース互換があるもののバイナリ互換がありません。
パッケージをコンパイルします。
make
このパッケージにテストスイートはありますが、パッケージをインストールした後でないと実行できません。
テストスイートのためのファイル群はサブディレクトリ test/
以下に残っています。 詳しいことはそのディレクトリ内にある README
ファイルを参照してください。
本パッケージをインストールすると、所定位置にある libncursesw.so.6.3
が上書きされます。
このときに、そのライブラリファイルのコードやデータを利用しているシェルプロセスが、クラッシュする場合があります。 そこで本パッケージは
DESTDIR
を使ってインストールして、install
コマンドによってライブラリファイルを正しく置き換えるようにします。 configure
では取り扱われないスタティックアーカイブは不要であるため、同様に削除されます。
make DESTDIR=$PWD/dest install
install -vm755 dest/usr/lib/libncursesw.so.6.3 /usr/lib
rm -v dest/usr/lib/libncursesw.so.6.3
cp -av dest/* /
アプリケーションによっては、ワイド文字対応ではないライブラリをリンカーが探し出すよう求めるものが多くあります。
そのようなアプリケーションに対しては、以下のようなシンボリックリンクやリンカースクリプトを作り出して、ワイド文字対応のライブラリにリンクさせるよう仕向けます。
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}w.pc /usr/lib/pkgconfig/${lib}.pc
done
最後に古いアプリケーションにおいて、ビルド時に -lcurses
を指定するものがあるため、これもビルド可能なものにします。
rm -vf /usr/lib/libcursesw.so
echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so
ln -sfv libncurses.so /usr/lib/libcurses.so
必要なら Ncurses のドキュメントをインストールします。
mkdir -pv /usr/share/doc/ncurses-6.3
cp -v -R doc/* /usr/share/doc/ncurses-6.3
注記
ここまでの作業手順では、ワイド文字対応ではない Ncurses ライブラリは生成しませんでした。
ソースからコンパイルして構築するパッケージなら、実行時にそのようなライブラリにリンクするものはないからであり、バイナリコードのアプリケーションで非ワイド文字対応のものは
Ncurses 5 にリンクされています。 バイナリコードしかないアプリケーションを取り扱う場合、あるいは LSB
対応を要する場合で、それがワイド文字対応ではないライブラリを必要とするなら、以下のコマンドによりそのようなライブラリを生成してください。
make distclean
./configure --prefix=/usr \
--with-shared \
--without-normal \
--without-debug \
--without-cxx-binding \
--with-abi-version=5
make sources libs
cp -av lib/lib*.so.5* /usr/lib