El paquete Ncurses contiene librerías para el manejo de pantallas de caracteres independiente del terminal.
Desde la liberación de Ncurses-5.5 los desarrolladores han encontrado y corregido un fallo de memoria y varios errores de pantalla. Aplica estas correcciones:
patch -Np1 -i ../ncurses-5.5-fixes-1.patch
Prepara Ncurses para su compilación:
./configure --prefix=/usr --with-shared --without-debug --enable-widec
Significado de las opciones de configure:
Esta opción hace que se construyan las librerías de ancho del caracter (es decir, libncursesw.so.5.5) en vez de las normales (o sea, libncurses.so.5.5). 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 no incluye un banco de pruebas.
Instala el paquete:
make install
Otorga permisos de ejecución a las librerías Ncurses:
chmod -v 755 /usr/lib/*.5.5
Corrige 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:
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
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