Экран: не удается найти запись terminfo для 'xterm-256color'
Когда я запустил
screen
на удаленном хосте (под управлением Linux), я получаю следующую ошибку:
Cannot find terminfo entry for 'xterm-256color'.
Я запускаю терминал на Mac OSX Lion для доступа к удаленному хосту. У меня есть googled, чтобы найти решение этой проблемы, и кажется, что люди предлагают делать
export TERM=xterm-color
который не работает для меня.
Пожалуйста, помогите.
Ответы
Ответ 1
Узнайте, какой TERM поддерживается:
ls /usr/share/terminfo/x
это даст вам список поддерживаемых TERMs i.e.
xterm
xterm-xfree86
установите переменную окружения:
export TERM=xterm-xfree86
и запустить экран:
TERMINFO='/usr/share/terminfo/' screen
Ответ 2
В приложении терминала, которое вы используете для ssh, перейдите к настройкам → advanced → Объявите терминал как: → xterm-color (или что-то, кроме xterm-256color)
Этот ответ был взят из комментария к этому сообщению, в котором есть другое решение:
http://marcoschuh.de/wp/?p=873
Ответ 3
В случае моей Buffalo Linkstation я решил это так:
cd /lib/terminfo/x
ln -s xterm-color xterm-256color
Ответ 4
Я смог изменить эмуляцию Mac OSX (10.7.5) (v2.2.3, 303.2) из меню
Терминальные > Настройки > Настройки > Дополнительно > Emulation
Объявить терминал как xterm-color
Открытие нового подключения ssh терминала позволило включить новую настройку.
Ответ 5
Я ранее использовал приложение Mac OS X по умолчанию для доступа к моему tmux на основе Ubuntu через ssh и нашел описанную вами проблему - мои bash и tmux установлены на экран-256color, параметр даже в список в настройках терминала Mac.
Я попытался добавить строку:
export TERM=screen-256color
в качестве команды запуска, но он был проигнорирован и был переопределен xterm-цветом при запуске.
Мне также удалось изменить настройки для терминала Mac на экран-256color, выбрав "Shell" > "Параметры экспорта", а затем отредактировав созданный им XML файл, найдя строку xterm-color и изменив ее на экран-256color, затем "Shell" > Импорт этого файла настроек. Однако, при запуске терминала, я обнаружил, что он по-прежнему переопределяет эту настройку с помощью xterm-color.
Итак, я уступил и загрузил iTerm2, что позволило мне изменить настройки экрана-256color, введя его в текстовое поле (скорее чем выбор из ограниченного раскрывающегося меню). Это работало сразу, даже не закрывая и не открывая консоль.
Итак, в заключение, я рекомендую использовать iTerm2, а не Mac-терминал по умолчанию (который, похоже, не позволяет изменениям в $TERM вам требуется).
Ответ 6
Вы можете установить ncurses-term
на удаленном сервере (Debian/Ubuntu), чтобы решить эту проблему.
Ответ 7
Вероятно, вам нужно установить пакет на свой Linux-хост, который содержит один из следующих файлов:
/usr/share/terminfo/x/xterm-256color
/lib/terminfo/x/xterm-256color
В Ubuntu, например, это предоставляется пакетом ncurses-base
.
Ответ 8
Вам не хватает файла terminfo
на удаленной машине, который соответствует 'xterm-256color'.
Screen не знает, как эмулировать запрашиваемый вами терминал (xterm-256color), потому что в нем нет файла, описывающего используемый вами терминал (xterm-256color).
Вы можете изменить переменную ENV TERM
чтобы запросить эмуляцию терминала, которую имеет удаленная машина. Например: export TERM=vt220
, но это предполагает, что у вашего пульта есть файл terminfo vt220, и вы не получите красивые цвета, и вам придется делать другие утомительные вещи, чтобы заставить его придерживаться. Лучше...
Если на вашем локальном компьютере есть файлы terminfo, но на вашем удаленном компьютере нет, например, linux/macos, взаимодействующего с QNAP/QNAS/busybox/rpi/router/modem/IOTdevice, тогда...
Вы можете скопировать в него необходимый файл и дать команду удаленному терминалу использовать его для экрана. например:
[local] $ scp /lib/terminfo/x/xterm-256color [email protected]:xterm-256color
[local] $ ssh [email protected]
[remote] $ ls
xterm-256color
[remote] $ TERMINFO='/share/homes/john/xterm-256color' screen
Экран должен работать на этом этапе. Ваш локальный компьютер может иметь каталог terminfo
где-то еще (/etc/terminfo/
и /usr/share/terminfo/
являются распространенными альтернативами; вам, возможно, придется покопаться, чтобы найти свой).
Для более постоянной настройки переместите его в каталог "terminfo "в вашем домашнем каталоге (или в другом месте, если вы знаете лучше). например:
[remote] mkdir -p .terminfo/x
[remote] mv xterm-256color .terminfo/x
[nasbox] screen
Тот же метод должен применяться к другим терминальным эмуляциям. Переменная ENV TERM
определяет, какой терминал он должен пытаться эмулировать, а файл с тем же именем предоставляет магические коды, чтобы все это произошло.
Ответ 9
В этом вопросе пользовательская конфигурация запросила описание терминала, которое не было по умолчанию screen
. Это было исправлено в результате обновления от Apple. В версии, приведенной в вопросе, Apple не представила это описание терминала. Они делают сейчас (и имеют с 2015 года). Для записи здесь приведен список каталогов, в котором показаны соответствующие записи для MacPorts (в /opt/local
), локально созданные ncurses (в /usr/local
) и файлы Apple/system в /usr/share
:
-rw-r--r-- 1 root 1912 Oct 3 2015 opt/local/share/terminfo/73/screen-256color
-rw-r--r-- 1 root 1924 Oct 3 2015 opt/local/share/terminfo/73/screen-256color-bce
-rw-r--r-- 1 root 1954 Oct 3 2015 opt/local/share/terminfo/73/screen-256color-bce-s
-rw-r--r-- 1 root 1940 Oct 3 2015 opt/local/share/terminfo/73/screen-256color-s
-rw-r--r-- 1 root 1912 Apr 12 04:22 usr/local/ncurses/share/terminfo/73/screen-256color
-rw-r--r-- 1 root 1924 Apr 12 04:22 usr/local/ncurses/share/terminfo/73/screen-256color-bce
-rw-r--r-- 1 root 1954 Apr 12 04:22 usr/local/ncurses/share/terminfo/73/screen-256color-bce-s
-rw-r--r-- 1 root 1940 Apr 12 04:22 usr/local/ncurses/share/terminfo/73/screen-256color-s
-rw-r--r-- 1 root 1828 Aug 22 2015 usr/share/terminfo/73/screen-256color
-rw-r--r-- 1 root 1840 Aug 22 2015 usr/share/terminfo/73/screen-256color-bce
-rw-r--r-- 1 root 1866 Aug 22 2015 usr/share/terminfo/73/screen-256color-bce-s
-rw-r--r-- 1 root 1856 Aug 22 2015 usr/share/terminfo/73/screen-256color-s
Вы можете заметить несколько деталей:
-
в OSX, файловая система по умолчанию игнорирует регистр, поэтому s
кодируется в шестнадцатеричном формате (чтобы сделать его отличным от s
)
-
записи имеют несколько разные размеры. Apple предоставила более старую версию базы данных терминалов, в которой отсутствуют некоторые функции.
-
Используя toe
, я вижу следующее:
--> /usr/local/ncurses/share/terminfo
----> /usr/share/terminfo
------> /opt/local/share/terminfo
*-*-*-: screen-256color GNU Screen with 256 colors
*-*-*-: screen-256color-bce GNU Screen with 256 colors and BCE
*-*-*-: screen-256color-bce-s GNU Screen with 256 colors using BCE and status line
*-*-*-: screen-256color-s GNU Screen with 256 colors and status line
и сравнение системы с MacPorts:
--- macports 2017-04-26 04:38:21.000000000 -0400
+++ system 2017-04-26 04:40:08.000000000 -0400
@@ -1,19 +1,19 @@
-# Reconstructed via infocmp from file: /opt/local/share/terminfo/73/screen-256color
+# Reconstructed via infocmp from file: /usr/share/terminfo/73/screen-256color
screen-256color|GNU Screen with 256 colors,
am, km, mir, msgr, xenl,
- colors#256, cols#80, it#8, lines#24, pairs#32767,
+ colors#256, cols#80, it#8, lines#24, ncv#3, pairs#32767,
acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=^M,
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
- cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
- dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
- enacs=\E(B\E)0, flash=\Eg, home=\E[H, ht=^I, hts=\EH,
- ich=\E[%p1%[email protected], il=\E[%p1%dL, il1=\E[L, ind=^J, is2=\E)0,
- kbs=^H, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
- kcuu1=\EOA, kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~,
+ cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
+ dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
+ flash=\Eg, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%[email protected],
+ il=\E[%p1%dL, il1=\E[L, ind=^J, [email protected], is2=\E)0, kbs=^H,
+ kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+ kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~,
kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
khome=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
@@ -22,6 +22,6 @@
rmul=\E[24m, rs2=\Ec\E[?1000l\E[?25h, sc=\E7,
setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
- sgr=\E[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;m%?%p9%t\016%e\017%;,
+ sgr=\E[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, smcup=\E[?1049h, smir=\E[4h,
smkx=\E[?1h\E=, smso=\E[3m, smul=\E[4m, tbc=\E[3g,
Ответ 10
Другой случай, например, обновление до Debian Buster с внутреннего screen
.
xterm-256colour
формат Terminfo xterm-256colour
изменен, поэтому screen
не может восстановить предыдущий сеанс.
Вы можете использовать export TERM=xterm
чтобы закрыть сеансы экрана, а затем перезапустить экран. На этот раз он будет использовать правильный файл terminfo, и поэтому он будет успешным.
Источник: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901843
Ответ 11
Вам просто нужно скопировать /usr/share/terminfo/x/xterm-256color
на сервер, к которому вы подключаетесь.