屏幕:找不到'xterm-256color'的terminfo条目

时间:2012-09-10 05:13:14

标签: terminal osx-lion

当我跑步时

screen

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

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

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

export TERM=xterm-color

对我来说不起作用。

请帮忙。

13 个答案:

答案 0 :(得分:52)

找出支持哪个TERM:

ls /usr/share/terminfo/x

这将为您提供支持的TERM列表,即

xterm
xterm-xfree86

设置环境变量:

export TERM=xterm-xfree86

并运行屏幕:

TERMINFO='/usr/share/terminfo/' screen

答案 1 :(得分:13)

在您用于ssh的终端应用中,转到偏好设置 - >高级 - >将终端声明为: - > xterm-color(或xterm-256color之外的东西)

这个答案来自对这篇文章的评论,该评论有另一个解决方案: http://marcoschuh.de/wp/?p=873

答案 2 :(得分:4)

我能够从菜单中更改Mac OSX(10.7.5)终端(v2.2.3,303.2)仿真 终端>设定>设置>高级>仿真 将终端声明为xterm-color

打开新的终端ssh连接启用了新设置。

答案 3 :(得分:4)

如果是我的Buffalo Linkstation,我就这样解决了:

cd /lib/terminfo/x
ln -s xterm-color xterm-256color

答案 4 :(得分:3)

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

我尝试添加一行:

export TERM=screen-256color

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

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

所以我承认并下载了iTerm2,这允许我通过在纯文本字段中键入(而不是从有限的下拉菜单中选择)来更改屏幕256色设置。这可以直接使用,甚至无需关闭并重新打开控制台

总而言之,我建议使用iTerm2而不是默认的Mac终端(它似乎不允许更改你需要的$ TERM。)

答案 5 :(得分:3)

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

答案 6 :(得分:2)

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

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

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

答案 7 :(得分:0)

在问题中,用户的配置要求提供不是默认 screen 的终端说明。这最终由Apple的更新修复。在问题中引用的版本中,Apple没有提供该终端描述。他们现在这样做(自2015年以来)。为了记录,这里是一个目录列表,显示了MacPorts(在/opt/local),本地构建的ncurses(在/usr/local中)和/usr/share中的Apple / system文件的相关条目:< / p>

-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%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,

答案 8 :(得分:0)

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

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

您可以更改ENV变量TERM,以请求远程计算机确实具有的终端仿真。例如:export TERM=vt220,但是这将假定您的遥控器具有vt220 terminfo文件,并且您不会获得漂亮的颜色,并且您还必须做其他乏味的工作才能使其保持不变。更好...

如果您的本地计算机上有terminfo文件,而远程计算机却没有,例如,与QNAP / QNAS / busybox / rpi / router / modem / IOTdevice通讯的linux / macos,则...

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

[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决定了它应该尝试模拟的终端,并且同名文件提供了实现所有目标的魔术代码。

答案 9 :(得分:0)

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

Terminfo xterm-256colour的格式已更改,因此screen无法恢复上一个会话。

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

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

答案 10 :(得分:0)

我在完全不同的环境中遇到了同样的问题。

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

答案 11 :(得分:-2)

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

答案 12 :(得分:-2)

如果导出变量,别忘了刷新终端源...

source ~/.bashrc 或只是打开一个新终端。可能就是为什么原始海报在导出时遇到问题。