6.27. Ncurses-6.2

Ncurses 패키지는 문자 화면의 터미널 독립적 처리를 위한 라이브러리를 포함하고 있다.

예상 빌드 시간: 0.4 SBU
필요 디스크 공간: 43 MB

6.27.1. Ncurses 설치

Configure에 의해 처리되지 않는 정적 라이브러리 설치를 비활성화 한다:

sed -i '/LIBTOOL_INSTALL/d' c++/Makefile.in

Ncurses 컴파일을 준비한다:

./configure --prefix=/usr           \
            --mandir=/usr/share/man \
            --with-shared           \
            --without-debug         \
            --without-normal        \
            --enable-pc-files       \
            --enable-widec

Configure 옵션들의 의미:

--enable-widec

일반 라이브러리(예: libncurses.so.6.2) 대신 와이드 문자 라이브러리(예: libncursesw.so.6.2)가 빌드된다. 이러한 와이드 문자 라이브러리는 멀티바이트 및 기존의 8비트 로케일에서 모두 사용할 수 있으며, 일반 라이브러리는 8비트 로케일에서만 제대로 작동한다. 와이드 문자 및 일반 라이브러리는 소스끼리는 호환되지만 바이너리 호환은 되지 않는다.

--enable-pc-files

pkg-config용 .pc 파일을 생성하고 설치한다.

--without-normal

대부분의 정적 라이브러리들의 빌드와 설치를 비활성화한다.

패키지를 컴파일한다:

make

이 패키지는 테스트 스위트가 있지만, 패키지가 설치된 후에만 실행할 수 있다. 테스트들은 test/ 디렉토리에 있다. 자세한 내용은 해당 디렉토리의 README 파일을 참고하라.

패키지를 설치한다:

make install

공유 라이브러리들을 원래 있어야 할 /lib 디렉토리로 이동한다:

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

라이브러리가 이동되었기 때문에 존재하지 않는 파일을 가리키고 있는 심볼릭 링크 하나가 있다. 이것을 다시 만든다:

ln -sfv ../../lib/$(readlink /usr/lib/libncursesw.so) /usr/lib/libncursesw.so

많은 응용 프로그램들은 여전히 링커가 비-와이드 문자(즉, 일반 8비트 로케일용) Ncurses 라이브러리를 찾을 수 있는 것처럼 작동할 것이다. 이러한 응용 프로그램들이 와이드 문자 라이브러리에 링크되도록 심볼릭 링크 및 링커 스크립트로 트릭을 쓴다:

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 -v       /usr/share/doc/ncurses-6.2
cp -v -R doc/* /usr/share/doc/ncurses-6.2
[참고]

참고

소스로부터 컴파일하여 설치한 패키지는 런타임 중에 비-와이드 문자 Ncurses 라이브러리에 링크되지 않으므로, 위의 설명은 비-와이드 문자 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

6.27.2. Ncurses의 내용

설치된 프로그램들: captoinfo (tic로 링크), clear, infocmp, infotocap (tic로 링크), ncursesw6-config, reset (tset로 링크), tabs, tic, toe, tput, tset
설치된 라이브러리들: libcursesw.so (libncursesw.so로 심볼릭 링크, 링커 스크립트), libformw.so, libmenuw.so, libncursesw.so, libncurses++w.a, libpanelw.so, 그리고 라이브러리 이름에 "w"가 없는 비-와이드 문자 대응 파일들.
설치된 디렉토리들: /usr/share/tabset, /usr/share/terminfo, /usr/share/doc/ncurses-6.2

요약

captoinfo

termcap 내용을 terminfo 내용으로 변환

clear

화면을 지움(가능한 경우)

infocmp

terminfo 내용 비교 또는 출력

infotocap

terminfo 내용을 termcap 내용으로 변환

ncursesw6-config

ncurses에 대한 구성 정보 제공

reset

터미널을 기본값으로 다시 초기화

tabs

터미널의 탭 간격 초기화 및 설정

tic

terminfo entry-description 컴파일러는 terminfo 파일을 소스 형식에서 ncurses 라이브러리 루틴에 필요한 바이너리 형식으로 변환한다[terminfo 파일에는 특정 터미널의 기능에 대한 정보가 포함되어 있다.]

toe

사용 가능한 모든 터미널 유형을 나열하고 각 터미널에 대한 기본 이름과 설명을 제공

tput

셸에서 터미널 고유 기능들을 사용할 수 있게 한다; 터미널을 재설정 또는 초기화하거나 터미널 타입의 풀 네임을 보고하는 데도 사용할 수 있음

tset

터미널을 초기화하는 데 사용

libcursesw

libncursesw로 링크

libncursesw

터미널 화면에 여러 가지 복잡한 방법으로 텍스트를 표시하는 기능을 포함. 이러한 기능을 사용하는 좋은 예는 커널의 make menuconfig동안 표시되는 메뉴이다.

libformw

양식 구현 함수 포함

libmenuw

메뉴 구현 함수 포함

libpanelw

패널 구현 함수 포함