8.28. Ncurses-6.3

Le paquet Ncurses contient les bibliothèques pour gérer les écrans type caractère indépendamment des terminaux.

Temps de construction approximatif: 0.4 SBU
Espace disque requis: 45 Mo

8.28.1. Installation de Ncurses

Préparez la compilation de 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

Voici la signification des nouvelles options de configuration :

--with-shared

Cette option fait construire et installer les bibliothèques C partagée de Ncurses.

--without-normal

Cette option empêche Ncurses de construire et d'installer les bibliothèques C statiques.

--without-debug

Cela empêche Ncurses de construire et d'installer les bibliothèques de débogage.

--with-cxx-shared

Cela fait construire et installer les liaisons C++ partagées de Ncurses. Cela empêche aussi de construire et d'installer les liaisons C++ statiques.

--enable-pc-files

Ce paramètre génère et installe les fichiers .pc pour pkg-config.

--enable-widec

Cette option amène les bibliothèques « wide-character » (comme libncursesw.so.6.3) à être compilées au lieu des bibliothèques normales (comme libncurses.so.6.3). Ces bibliothèques « wide-character » sont utilisables à la fois en locales multibyte et 8-bit traditionnelles, alors que les bibliothèques normales ne fonctionnent correctement que dans les locales 8-bit. Les bibliothèques « Wide-character » et normales sont compatibles entre leurs sources mais pas entre leurs binaires.

Compilez le paquet :

make

Ce paquet a une suite de tests, mais elle ne peut être exécutée qu'après l'installation du paquet. Les tests se situent dans le répertoire test/. Voir le fichier README dans ce répertoire pour de plus amples détails.

L'installation de ce paquet écrasera libncursesw.so.6.3. Cela peut faire crasher le processus de shell qui utilise du code et des données du fichier de bibliothèque. Installez le paquet avec DESTDIR, et remplacez le fichier de bibliothèque correctement avec la commande install :

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/* /

Beaucoup d'applications s'attendent encore à ce que l'éditeur de liens puisse trouver les bibliothèques Ncurses non wide-character. Faites en sorte que ces applications croient au lien vers les bibliothèques wide-character par des liens symboliques et des scripts d'éditeur de liens :

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

Finalement, assurez-vous que les vieilles applications qui cherchent -lcurses lors de la compilation sont encore compilables :

rm -vf                     /usr/lib/libcursesw.so
echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so
ln -sfv libncurses.so      /usr/lib/libcurses.so

Si désiré, installez la documentation de Ncurses :

mkdir -pv      /usr/share/doc/ncurses-6.3
cp -v -R doc/* /usr/share/doc/ncurses-6.3
[Note]

Note

Les instructions ci-dessus ne créent pas de bibliothèques Ncurses non-wide-character puisqu'aucun paquet installé par la compilation à partir des sources ne se lie à elles lors de l'exécution. Pour le moment, les seules applications binaires connues qui se lient aux bibliothèques Ncurses non-wide-character exigent la version 5. Si vous devez avoir de telles bibliothèques à cause d'une application disponible uniquement en binaire ou pour vous conformer à la LSB, compilez à nouveau le paquet avec les commandes suivantes :

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

8.28.2. Contenu de Ncurses

Programmes installés: captoinfo (lien vers tic), clear, infocmp, infotocap (lien vers tic), ncursesw6-config, reset (lien vers tset), tabs, tic, toe, tput et tset
Bibliothèques installées: libcursesw.so (lien symbolique et script de l'éditeur de liens vers libncursesw.so), llibformw.so, libmenuw.so, libncursesw.so, libncurses++w.so, libpanelw.so, ainsi que leurs équivalents non « non-wide » avec un nom identique, mais sans le « w ».
Répertoires installés: /usr/share/tabset, /usr/share/terminfo et /usr/share/doc/ncurses-6.3

Descriptions courtes

captoinfo

Convertit une description termcap en description terminfo

clear

Efface l'écran si possible

infocmp

Compare ou affiche les descriptions terminfo

infotocap

Convertit une description terminfo en description termcap

ncursesw6-config

Fournit des informations de configuration de ncurses

reset

Réinitialise un terminal avec ses valeurs par défaut

tabs

Efface et initialise des taquets de tab sur un terminal

tic

Le compilateur d'entrée de description terminfo qui traduit un fichier terminfo au format source dans un format binaire nécessaire pour les routines des bibliothèques ncurses. Un fichier terminfo contient des informations sur les capacités d'un terminal donné

toe

Liste tous les types de terminaux disponibles, donnant pour chacun d'entre eux son nom principal et sa description

tput

Rend les valeurs de capacités dépendant du terminal disponibles au shell ; il peut aussi être utilisé pour réinitialiser un terminal ou pour afficher son nom complet

tset

Peut être utilisé pour initialiser des terminaux

libcursesw

Un lien vers libncursesw

libncursesw

Contient des fonctions pour afficher du texte de plusieurs façons complexes sur un écran de terminal ; un bon exemple d'utilisation de ces fonctions est le menu affiché par le make menuconfig du noyau

libncurses++w

Contient les liaisons C++ pour les autres bibliothèques de ce paquet

libformw

Contient des fonctions pour implémenter des formulaires

libmenuw

Contient des fonctions pour implémenter des menus

libpanelw

Contient des fonctions pour implémenter des panneaux