インストール: ncurses | 端末操作の基本ライブラリー

端末に依存しないテキストユーザーインターフェイス (TUI) のAPIを提供するncurses (new curses) をソースコードからインストールする。
ncursesは端末操作の実装に使われており,MariaDB, Vim, Emac, GNU screen, tmuxなどの多くのライブラリーに利用されている。
項目 | 説明 |
---|---|
配布元 | |
リポジトリー | |
手順 | |
依存情報 | |
依存先 (必須) |
|
依存先 (任意) | |
依存元 |
|
sh -eux <<-"EOT"
PKG=ncurses VER=6.2 TAG=v$VER PKG_VER=$PKG${VER:+-$VER}
LOCAL=$([ $(id -u) = 0 ] && echo /usr/ || echo ~/.)local
J=$(grep -cs '^processor' /proc/cpuinfo || echo 2)
mkdir -p "$LOCAL/src"
cd "$LOCAL/src"
if command -v git >/dev/null; then
[ -e $PKG ] || git clone --depth 1 git://ncurses.scripts.mit.edu/ncurses.git $PKG
cd $PKG
git fetch --depth 1 origin tag $TAG
git checkout -f $TAG
git clean -dfX
else
[ -e $PKG_VER ] || wget ftp://ftp.invisible-island.net/ncurses//$PKG_VER.tar.gz
tar -xf $PKG_VER.*
cd $PKG_VER
fi
make -kj $J distclean clean || :
./configure --prefix="$LOCAL/stow/$PKG_VER" --with-shared --with-termlib
make -j $J
make -j $J install
cd "$LOCAL/stow"
echo $PKG${VER:+-}[0-9]* | xargs -n 1 stow -D
stow $PKG_VER
EOT
日付 | バージョン | OS | 依存関係 |
---|---|---|---|
2018-06-20 | 6.1 | Ubuntu 16.04 | |
2019-05-02 | 6.1 | Ubuntu 18.04 | GNU Make 4.2.1, GCC 7.4.0 |
2020-08-07 | 6.2 | Ubuntu 20.04 | GNU Make 4.2.1, GCC 9.3.0 |
デフォルトでは共有ライブラリー (.so) をビルドしないので,./configure
のオプションに--with-shared
を指定した。
また,make
を実行するとtest/
配下のいくつかのテストプログラムも自動的にビルドされる。ncursesのテストはtest配下のプログラムを手動で実行することで行うようだ。ただし,正解がよくわからないので飛ばした。
configure
に--with-termlib
オプションを指定している。このオプションを指定しない場合,Terminfo (libtinfo.so
) がlibncurses.so
にマージされている。多くの場合はこれでも問題ないのだが,このままだとlibtinfo.so
を直接使うプログラムに対応できない。--with-termlib
を指定すると,libncurses.so
に取り込まれていたlibtinfo.so
が別のファイルとして分離される。
ほぼGNU Readlineで発生した問題のための対応となる。詳細は「libreadline.so.8: undefined symbol: UPの対処方法」を参照する。
ncursesのインストールが完了したらTERMINFO
環境変数を以下のように設定しておく。この環境変数を指定しておかないと,ncursesの利用プログラムでterminfoの情報を認識できず,警告がでることがある。
export TERMINFO="$LOCAL/share/terminfo"
マニュアル (ncurses 3x) にある通り,この環境変数でローカルの端末定義の検索先を指定できる。最初にこの環境変数で指定した場所を探し,なければシステムの定義場所 (/usr/share/terminfo
) を検索する。
PATH
環境変数などと異なり,:
で区切って複数指定することはできないようなので注意する。この環境変数の設定が「E437: terminal capability “cm” requiredの対処方法」の問題の解決に必須となる。
“インストール: ncurses | 端末操作の基本ライブラリー” に対して3件のコメントがあります。