8.29. Ncurses-6.4-20230520

Пакет Ncurses содержит библиотеки для независимой от терминала обработки ввода/вывода

Приблизительное время сборки: 0.2 SBU
Требуемое дисковое пространство: 45 MB

8.29.1. Установка пакета Ncurses

Подготовьте 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

Значение новых параметров настройки:

--with-shared

Этот параметр позволяет Ncurses собирать и устанавливать общие библиотеки C.

--without-normal

Этот параметр отключает сборку и установку большинства статических библиотек C.

--without-debug

Этот параметр предотвращает сборку и установку отладочных библиотек.

--with-cxx-shared

Это аргумент позволяет Ncurses собирать и устанавливать общие привязки C++. А также предотвращает сборку и установку статических привязок C++.

--enable-pc-files

Этот параметр генерирует и устанавливает файлы .pc для pkg-config.

--enable-widec

Этот параметр указывает, что при сборке пакета вместо обычных библиотек (например, libncurses.so.6.4) будут использоваться библиотеки с расширенным набором символов (например, libncursesw.so.6.4). Библиотеки с расширенным набором символов могут использоваться как с многобайтовыми локалями, так и с традиционными 8-битовыми локалями, тогда как обычные библиотеки работают только с 8-битовыми локалями. Библиотеки с расширенным набором символов и обычные библиотеки совместимы на уровне исходного кода, но не совместимыми на уровне двоичного.

Скомпилируйте пакет:

make

У этого пакета есть набор тестов, но его можно запустить только после того, как пакет будет установлен. Тесты находятся в каталоге test/. Дополнительные сведения смотрите в файле README в этом каталоге.

Установка этого пакета приведет к перезаписи libncursesw.so.6.4. Это может привести к сбою процесса оболочки, который использует код и данные из файла библиотеки. Установите пакет с помощью DESTDIR и правильно замените файл библиотеки с помощью команды install(также отредактирован заголовочный файл curses.h, чтобы обеспечить использование ABI расширенного набора символов, как это сделано в Раздел 6.3, «Ncurses-6.4-20230520»).

make DESTDIR=$PWD/dest install
install -vm755 dest/usr/lib/libncursesw.so.6.4 /usr/lib
rm -v  dest/usr/lib/libncursesw.so.6.4
sed -e 's/^#if.*XOPEN.*$/#if 1/' \
    -i dest/usr/include/curses.h
cp -av dest/* /

Многие приложения ожидают, что компоновщик может найти библиотеки Ncurses, не поддерживающие расширенный набор символов. Используя трюк ниже, свяжите такие приложения с библиотеками расширенного набора символов с помощью символических ссылок (обратите внимание, что ссылки .so безопасны только в том случае, если curses.h отредактирован так, чтобы всегда использовать ABI расширенного набора символов):

for lib in ncurses form panel menu ; do
    ln -sfv lib${lib}w.so /usr/lib/lib${lib}.so
    ln -sfv ${lib}w.pc    /usr/lib/pkgconfig/${lib}.pc
done

Убедитесь, что старые приложения, которым нужна -lcurses для сборки, собираются правильно:

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

По желанию установите документацию Ncurses:

cp -v -R doc -T /usr/share/doc/ncurses-6.4-20230520
[Примечание]

Примечание

С помощью приведенных выше инструкций не создаются библиотеки 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

8.29.2. Содержимое пакета Ncurses

Установленные программы: captoinfo (ссылка на tic), clear, infocmp, infotocap (ссылка на tic), ncursesw6-config, reset (ссылка на tset), tabs, tic, toe, tput и tset
Установленные библиотеки: libcurses.so (символическая ссылка), libform.so (символическая ссылка), libformw.so, libmenu.so (символическая ссылка), libmenuw.so, libncurses.so (символическая ссылка), libncursesw.so, libncurses++w.so, libpanel.so (символическая ссылка) и libpanelw.so,
Созданные каталоги: /usr/share/tabset, /usr/share/terminfo и /usr/share/doc/ncurses-6.4-20230520

Краткое описание

captoinfo

Преобразует описание termcap в описание terminfo

clear

Очищает экран, если это возможно

infocmp

Сравнивает или показывает описания terminfo

infotocap

Преобразует описание terminfo в описание termcap

ncursesw6-config

Предоставляет информацию о конфигурации пакету ncurses

reset

Повторно инициализирует терминал со значениями по умолчанию

tabs

Очищает и устанавливает размеры табуляции в терминале

tic

Компилятор описания terminfo, преобразует файл terminfo из исходного формата в двоичный, который необходим для подпрограмм библиотеки ncurses [Файл terminfo содержит информацию о возможностях конкретного терминала.]

toe

Выводит список всех доступных типов терминалов, для каждого из которых указывается его имя и приводится описание

tput

Позволяет использовать в командной оболочке настройки, относящиеся к особенностям конкретного терминала; может также использоваться для сброса или инициализации терминала, либо для вывода полного имени терминала

tset

Может использоваться для инициализации терминалов

libncursesw

Содержит функции, отображающие различными способами текст на экране терминала. Хорошим примером использования этих функций является меню, отображаемое командой make menuconfig при настройке ядра

libncurses++w

Содержит функции связывания C++ с другими библиотеками в пакете

libformw

Содержит функции, реализующие формы

libmenuw

Содержит функции, реализующие меню

libpanelw

Содержит функции, реализующие панели