Linux tkdiff执行时出现空白错误消息";字体实际系统“;
我正试图使用现在备受尊敬的工具,但遇到了一个障碍。我有两个Linux系统。第一个系统是Redhat EL 6.4工作站,运行tkdiff非常好——我可以整天区分文件 在第二个系统上,CentOS 6.6版服务器出现以下堆栈跟踪故障:Linux tkdiff执行时出现空白错误消息";字体实际系统“;,linux,tcl,tk,Linux,Tcl,Tk,我正试图使用现在备受尊敬的工具,但遇到了一个障碍。我有两个Linux系统。第一个系统是Redhat EL 6.4工作站,运行tkdiff非常好——我可以整天区分文件 在第二个系统上,CentOS 6.6版服务器出现以下堆栈跟踪故障: Error in startup script: while executing "font actual system" invoked from within "set sysfont [font actual system]" (fi
Error in startup script:
while executing
"font actual system"
invoked from within
"set sysfont [font actual system]"
(file "<path...>/bin/tkdiff" line 122)
显然,它对字体实际系统不满意。奇怪的是,$errorCode
是NONE
。以前安装过libXft和fontconfig软件包。我刚刚安装了以下附加的yum软件包:
xorg-x11-utils
libXv
libXxf86dga
libdmx
tk-devel (which installed fontconfig-devel and a bunch of other dependancies)
tcl-devel
TL;DR:运行wish的X客户端(CentOS服务器)上未安装X显示服务器(本地RHEL工作站)上的系统字体
我认为问题至少部分是由于我在CentOS服务器上运行tkdiff
程序,并通过X显示到我原来的RedHat工作站。我在执行“font actual system”
时获取了根本原因的tcl堆栈跟踪(),并使用它来缩小问题的范围。在RedHat工作站上,我启动了wish并执行了该命令以获得以下响应:
RedHat>$ wish
% font actual system
-family {DejaVu Sans} -size 12 -weight normal -slant roman -underline 0 -overstrike 0
%
我推断CentOS服务器会尝试使用相同的系统字体,因为它在我的RHEL框上显示X。快速搜索无法找到适合此字体的yum软件包,因此我安装了它
sudo yum install dejavu-sans-mono-fonts
瞧!在CentOS上,我现在得到:
CentOS>$ wish
% font actual system
-family {DejaVu Sans Mono} -size 12 -weight normal -slant roman -underline 0 -overstrike 0
%
最后的测试:tkdiff
现在运行正常 从wish内部寻找tkdiff时,它起作用的事实似乎是一个关键线索。从shebang运行时,配置与从完整环境运行时有所不同。然而,我对CentOS一无所知,也不知道为什么它会有所不同。尝试查看TCLLIB环境变量在各种.login/.rc文件中的设置位置,看看是否有线索。祝你好运Tk尝试很少依赖于其他包,因此更容易构建它并在其上构建。但是,8.5确实依赖于fontconfig和Xft。此外,一些语言的Tk嵌入部分是通过设置环境变量完成的,这可能会中断正常的Tk运行。我不知道这些是否对您有帮助……嗯,百胜告诉我我的CentOS box安装了fontconfig.x86_64和libXft.x86_64。我再戳一点,解决了!感谢@DonalFellows并提供了缩小范围的线索!
CentOS>$ wish
% font actual system
-family {DejaVu Sans Mono} -size 12 -weight normal -slant roman -underline 0 -overstrike 0
%