Il pacchetto Ncurses contiene librerie per la gestione indipendente dal terminale di schermi caratteri.
Dalla release di Ncurses-5.5, sono stati trovati e corretti una falla di memoria e qualche bug di display. Applicare questi fix:
patch -Np1 -i ../ncurses-5.5-fixes-1.patch
Preparare Ncurses per la compilazione:
./configure --prefix=/usr --with-shared --without-debug --enable-widec
Significato delle opzioni di configurazione:
Questa scelta fa sì che siano costruite le librerie wide-character (es. libncursesw.so.5.5) al posto di quelle normali (es. libncurses.so.5.5). Queste librerie wide-character si possono usare sia in localizzazioni multibyte sia traditionali a 8-bit, mentre le librerie normali lavorano in modo corretto solo in localizzazioni a 8-bit. Le librerie wide-character e quelle normali sono compatibili a livello di sorgente, ma non come binari.
Compilare il pacchetto:
make
Questo pacchetto non è provvisto di una suite di test.
Installare il pacchetto:
make install
Dare alle librerie Ncurses i permessi di esecuzione:
chmod -v 755 /usr/lib/*.5.5
Correggere una libreria che non dovrebbe essere eseguibile:
chmod -v 644 /usr/lib/libncurses++.a
Spostare le librerie nella directory /lib, dove ci si aspetta che si trovino:
mv -v /usr/lib/libncurses.so.5* /lib
Poiché le librerie sono state spostate, un link simbolico punta su un file non esistente. Ricrearlo:
ln -sfv ../../lib/libncursesw.so.5 /usr/lib/libncursesw.so
Molte applicazioni aspettano ancora il linker per riuscire a trovare le librerie Ncurses non-wide-character. Costringere tali applicazioni a fare il link alle librerie wide-character per mezzo di link simbolici e script linker:
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
Infine assicurarsi che sia ancora possibile costruire le vecchie applicazioni che cercano -lcurses durante la costruzione:
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
Le istruzioni precedenti non creano le librerie Ncurses non-wide-character fintanto che nessun pacchetto installato con la compilazione da sorgenti non avrà un link ad esse in runtime. Se si devono avere tali librerie a causa di qualche applicazione solo binaria, costruirle con i seguenti comandi:
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