Как 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
и другие утилиты, которые вам, вероятно, понадобятся.