6.20. Ncurses-5.6

El paquete Ncurses contiene librerías para el manejo de pantallas de caracteres independiente del terminal.

Tiempo estimado de construcción: 0.7 SBU
Espacio requerido en disco: 31 MB

6.20.1. Instalación de Ncurses

Aplica el siguiente parche para corregis una serie de problemas descubiertos por la herramienta Coverity de análisis estático de código:

patch -Np1 -i ../ncurses-5.6-coverity_fixes-1.patch

Prepara Ncurses para su compilación:

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

Significado de las opciones de configure:

--enable-widec

Esta opción hace que se construyan las librerías de ancho del caracter (es decir, libncursesw.so.5.6) en vez de las normales (o sea, libncurses.so.5.6). Estas librerías de ancho del caracter son usables tanto en locales multibyte como en las tradicionales de 8-bit, mientras que las librerías normales sólo funcionan correctamente en locales de 8-bit. Las librerías de ancho de caracter y las normales sn compatibles a nivel de de las fuentes, pero no a nivel binario.

Compila el paquete:

make

Este paquete tiene un banco de pruebas, pero este sólo puede ejecutarse despues de instalar el paquete. El banco se encuentra en el directorio test/. Para mas detalles, mira el fichero README de dicho directorio.

Instala el paquete:

make install

Corrige los permisos de una librería que no debería ser ejecutable:

chmod -v 644 /usr/lib/libncurses++w.a

Mueve las librerías al directorio /lib, que es donde se espera que residan:

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

Debido a que se han movido las librerías, un enlace simbólico apunta a un fichero que no existe. Regenera ese enlace simbólico:

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

Muchas aplicaciones todavía esperan que el enlazador sea capaz de encontrar las librerías Ncurses que no son de ancho del caracter. Engaña a dichas aplicaciones para que se enlacen contra las librerías de ancho del caracter mediante enlaces simbólicos y guiones de enlazado:

for lib in curses 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

Por último, asegurate de que las aplicaciones antiguas que buscan -lcurses durante su construcción son aún compilables:

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
[Nota]

Nota

Las instrucciones anteriores no crean las librerías Ncurses que no son de ancho del caracter, pues ningún paquete compilado desde las fuentes podria enlazarse contra ellas en tiempo de ejecución. Si necesitas tener dichas librerías debido a que las necesita alguna aplicación de la que sólo tengas los ejecutables, construyelas con los siguientes comandos:

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.20.2. Contenido de Ncurses

Programas instalados: captoinfo (enlace a tic), clear, infocmp, infotocap (enlace a tic), ncurses5-config, reset (enlace a tset), tack, tic, toe, tput y tset
Librerías instaladas: libcursesw.{a,so} (enlace y guión de enlazado libncursesw.{a,so}), libformw.{a,so}, libmenuw.{a,so}, libncurses++w.a, libncursesw.{a,so}, libpanelw.{a,so} y sus correspondientes sin la "w" en el nombre de la librería para las que no son de ancho del caracter.

Descripciones cortas

captoinfo

Convierte una descripción termcap en una descripción terminfo.

clear

Limpia la pantalla si es posible.

infocmp

Compara o imprime en pantalla una descripción terminfo.

infotocap

Convierte una descripción terminfo en una descripción termcap.

ncurses5-config

Proporciona información sobre la configuración de ncurses

reset

Reinicializa un terminal a sus valores por defecto.

tack

El comprobador de acciones terminfo. Se usa principalmente para verificar la precisión de una entrada de la base de datos terminfo.

tic

El compilador de entradas de descripciones terminfo. Transforma un fichero terminfo en formato fuente al formato binario requerido por las rutinas de las librerías ncurses. Los ficheros terminfo contienen información sobre las capacidades de un terminal.

toe

Lista todos los tipos de terminal disponibles, dando el nombre primario y la descripción de cada uno.

tput

Pone a disposición del intérprete de comandos la información sobre las capacidades dependientes del terminal. También sirve para inicializar o restablecer el terminal, o para devolver su nombre largo.

tset

Sirve para inicializar terminales.

libcurses

Enlace a libncurses

libncurses

Contienen funciones para mostrar texto de formas complicadas en la pantalla de un terminal. Un buen ejemplo del uso de estas funciones es el menú que se muestra en el proceso make menuconfig del núcleo.

libform

Contienen funciones para implementar formularios.

libmenu

Contienen funciones para implementar menús.

libpanel

Contienen funciones para implementar paneles.