ncurses в macOS (OSX) не может найти xterm-256color

Я пытаюсь использовать ncurses 6.0 на macOS. Я скачал проект и создал демо-версию C++, используя предоставленные make-файлы. Однако, когда я запускаю демо, я получаю сообщение об ошибке:

Ошибка открытия терминала: xterm-256color.

Это может быть связано: у меня нет папки x в моем каталоге terminfo:

$ ls /usr/share/terminfo/
31  36  45  51  64  69  6e  73  78
32  37  4c  58  65  6a  6f  74  7a
33  38  4d  61  66  6b  70  75
34  39  4e  62  67  6c  71  76
35  41  50  63  68  6d  72  77

Демо корректно работает на Debian.


Результат моей конфигурации:

** Configuration summary for NCURSES 6.0 20150808:

       extended funcs: yes
       xterm terminfo: xterm-new

        bin directory: /usr/local/bin
        lib directory: /usr/local/lib
    include directory: /usr/local/include/ncurses
        man directory: /usr/local/share/man
   terminfo directory: /usr/local/share/terminfo

** Include-directory is not in a standard location

Поскольку я ленивый и не читаю мануалы, я не запускал полную процедуру настройки. После запуска:

./configure
make
make install

Теперь это работает.


person sdgfsdh    schedule 03.10.2016    source источник
comment
Попробуйте выполнить ./configure && make из каталога test...   -  person l'L'l    schedule 03.10.2016
comment
@I'L'I Кажется, это работает, но что я ищу?   -  person sdgfsdh    schedule 06.10.2016
comment
Я не уверен, что вы ищете, хотя вы, очевидно, нашли это, выполнив make install. :)   -  person l'L'l    schedule 06.10.2016


Ответы (1)


Когда вы создаете ncurses, скрипт configure сообщает вам в конце, куда он будет установлен. Если вы не укажете никаких опций в OSX, это будет выглядеть так:

creating headers.sh

** Configuration summary for NCURSES 6.0 20160409:

       extended funcs: yes
       xterm terminfo: xterm-new

        bin directory: /usr/local/bin
        lib directory: /usr/local/lib
    include directory: /usr/local/include/ncurses
        man directory: /usr/local/share/man
   terminfo directory: /usr/local/share/terminfo

** Include-directory is not in a standard location

Вы можете переопределить расположение каталога terminfo (прочитайте файл INSTALL) или сообщить библиотеке во время выполнения, задав TERMINFO и/или переменные среды TERMINFO_DIRS. Но, не сделав ни одной из этих вещей, он будет искать базу данных терминала в другом месте.

Скрипт ncurses configure предоставляет параметр --prefix=/usr для некоторых систем (в основном на основе Linux), поскольку ожидается, что это системная библиотека curses (опять же, читаем INSTALL). OSX здесь не лишний.

OSX отличается от обычного случая: его файловая система (обычно) игнорирует разницу между именами в верхнем и нижнем регистре. Сценарий configure проверяет это, и если это так, он компилирует обходной путь для кодирования этих отдельных букв в виде шестнадцатеричного числа. Например, 0x78 — это «х».

person Thomas Dickey    schedule 03.10.2016