51

当我跑

screen

在远程主机(运行 Linux)上,我收到以下错误:

Cannot find terminfo entry for 'xterm-256color'.

我在 Mac OSX Lion 上运行终端来访问远程主机。我已经用谷歌搜索了这个问题的解决方案,似乎人们建议这样做

export TERM=xterm-color

这对我不起作用。

请帮忙。

4

13 回答 13

72

找出支持的 TERM:

ls /usr/share/terminfo/x

这将为您提供受支持的术语列表,即

xterm
xterm-xfree86

设置环境变量:

export TERM=xterm-xfree86

并运行屏幕:

TERMINFO='/usr/share/terminfo/' screen
于 2013-11-26T08:57:18.393 回答
13

在您用于 ssh 的终端应用程序中,转到首选项 -> 高级 -> 将终端声明为: -> xterm-color(或 xterm-256color 之外的其他内容)

此答案取自对该帖子的评论,该帖子有另一个解决方案: http ://marcoschuh.de/wp/?p=873

于 2012-10-25T21:23:55.080 回答
9

对于我的 Buffalo Linkstation,我是这样解决的:

cd /lib/terminfo/x
ln -s xterm-color xterm-256color
于 2015-04-11T17:43:35.727 回答
7

您在terminfo远程计算机上缺少与“xterm-256color”匹配的文件。

Screen 不知道如何模拟您要求的终端(xterm-256color),因为它没有描述您正在使用的终端的文件(xterm-256color)。

您可以更改 ENV 变量TERM以请求远程机器拥有的终端仿真。例如:export TERM=vt220,但这会假设你的遥控器有一个 vt220 terminfo 文件,你不会得到漂亮的颜色,你必须做其他乏味的事情才能让它坚持下去。更好的...

如果您的本地机器有 terminfo 文件,但您的远程机器没有,例如,linux/macos 与 QNAP/QNAS/busybox/rpi/router/modem/IOTdevice 通话,那么...

您可以将必要的文件复制到它并指示您的远程终端将其用于屏幕。例如:

[local] $ scp /lib/terminfo/x/xterm-256color john@nasbox:xterm-256color
[local] $ ssh john@nasbox
[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决定了它应该尝试模拟哪个终端,并且同名文件提供了使这一切发生的魔法代码。

于 2019-04-12T05:23:28.340 回答
6

我以前使用默认的 Mac OS X 终端应用程序通过 ssh 访问我的基于 Ubuntu 的 tmux,发现了你描述的问题 - 我的 bash 和 tmux 设置为 screen-256color,这个选项甚至不在 Mac 的列表中终端首选项。

我尝试添加该行:

export TERM=screen-256color

作为启动命令,但它被忽略并在启动时被 xterm-color 覆盖。

我还设法将 Mac 终端的设置更改为 screen-256color,方法是选择 Shell > Export Settings,然后编辑它生成的 XML 文件,找到 xterm-color 行并将其更改为 screen-256color,然后选择 Shell > Importing this设置文件。然而,在启动终端后,我发现它仍然用 xterm-color 覆盖了这个设置。

所以我承认并下载了iTerm2,它允许我通过在纯文本字段中输入来更改 screen-256color 设置(而不是从有限的下拉菜单中选择)。这可以立即生效,甚至无需关闭并重新打开控制台

所以总而言之,我建议使用 iTerm2 而不是默认的 Mac 终端(它似乎不允许您对 $TERM 进行更改)。

于 2013-05-15T13:15:28.880 回答
5

您可以ncurses-term在远程服务器 (Debian/Ubuntu) 上安装以解决此问题。

于 2018-05-22T07:02:34.250 回答
4

I was able to change Mac OSX(10.7.5) terminal(v2.2.3, 303.2) emulation from the menu Terminal>Preferences>Settings>Advanced>Emulation Declare terminal as xterm-color

Opening a new terminal ssh connection enabled the new setting.

于 2013-10-05T03:48:20.823 回答
3

您可能需要在 Linux 主机上安装一个软件包,该软件包提供以下文件之一:

/usr/share/terminfo/x/xterm-256color
/lib/terminfo/x/xterm-256color

例如,在 Ubuntu 上,这是由ncurses-base软件包提供的。

于 2012-09-10T05:22:44.057 回答
3

另一种情况,例如从内部升级到 Debian Buster screen

Terminfoxterm-256colour格式已更改,因此screen无法恢复之前的会话。

您可以使用export TERM=xterm关闭屏幕会话,然后重新启动屏幕。这次它将使用正确的 terminfo 文件,因此它会成功。

来源:https ://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901843

于 2019-07-23T17:49:16.840 回答
0

在问题中,用户的配置要求提供不是默认的终端描述screen。这最终由 Apple 的更新解决。在问题中引用的版本中,Apple 没有提供该终端描述。他们现在这样做(并且自 2015 年以来一直如此)。作为记录,这里是一个目录列表,显示了 MacPorts (in /opt/local)、本地构建的 ncurses (in /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 256色的GNU屏幕   
    *-*-*-: screen-256color-bce 具有 256 色和 BCE 的 GNU 屏幕
    *-*-*-: screen-256color-bce-s 使用 BCE 和状态行的 256 色 GNU 屏幕
    *-*-*-: screen-256color-s 具有 256 种颜色和状态行的 GNU 屏幕

并将系统与 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%d@, 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%d@,
+       il=\E[%p1%dL, il1=\E[L, ind=^J, initc@, 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,
于 2017-04-26T08:44:58.080 回答
0

我在完全不同的情况下遇到了同样的问题。

通过输入 infocmp,我得到了无法打开 terminfo 的消息。但它也告知了它试图获得的路径。我所做的只是用正确的术语(xterm-256color)创建那条路径。使用 find * 我在另一个目录中找到它并复制到新目录。

于 2021-05-09T15:25:29.920 回答
-2

您只需复制/usr/share/terminfo/x/xterm-256color到您要连接的服务器。

于 2017-04-26T03:20:05.060 回答
-2

如果您导出变量,请不要忘记刷新终端源...

source ~/.bashrc 或者只是打开一个新终端。可能是原始海报无法导出的原因。

于 2020-06-17T01:03:34.020 回答