Как ncurses ищет описания терминалов

Я собираю ncurses 6.1 из исходного кода по некоторым причинам. Сначала я настраиваю источники с

./configure

а потом я строю это с

make

оба без аргументов. Когда я пытаюсь запустить тесты, я получаю сообщение об ошибке

Error opening terminal: xterm-256color.

в моей локальной системе (Ubuntu 17.10) и

Error opening terminal: xterm

на сервере сборки (контейнер Jenkins Docker).

Я обнаружил, что эта сборка ищет описания терминала в /usr/share/terminfo/, Есть много описаний, но нет xterm-256color в моей локальной системе. На сервере сборки папка /usr/share/terminfo/ пустой. я нашел xterm-256color а также xterm в /lib/terminfo, Когда я устанавливаю ncurses с менеджером пакетов (apt для Ubuntu 17.10), это работает. Поэтому я предполагаю, что этот пакет выбирает правильный путь. Я скопировал xterm-256color соответственно xterm от /lib/terminfo в /usr/share/terminfo/ и моя сборка работает на обеих системах сейчас. Почему существуют два разных пути и почему эти две версии ncurses выбирают два разных пути? Мне нужен пакет conc ncurses, который работает из коробки без копирования файлов описания.

Это может быть дубликатом: Как установить пользовательские пути поиска для базы данных terminfo при сборке ncurses из источника

1 ответ

Решение

Ответ в резюме в конце configure (что не показано в вопросе). Но работает infocmp -D покажет каталоги, которые infocmp будет использовать при поиске описания.

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

/lib/terminfo специфичен для Debian (Ubuntu не предоставляет никаких изменений для ncurses; они просто перекомпилируют пакеты Debian: большинство отчетов об ошибках Ubuntu для ncurses решают свои проблемы в этом).

Debian по умолчанию устанавливает чье-то представление о минимальной терминальной базе данных в этом каталоге. устанавливать ncurses-term чтобы получить полную базу данных терминала.

Кстати, компиляция и установка ncurses в Debian/Ubuntu/ других системах с уже установленными ncurses рискует сломать существующие библиотеки, которые используются (например) bash и другие утилиты, которые вам, вероятно, понадобятся.

Другие вопросы по тегам