执行"font actual system"时出现 tkdiff 空白错误消息



我正在尝试使用现在久负盛名的tkdiff工具,但是遇到了一个障碍。我有两个Linux系统。第一个系统,一个Redhat EL 6.4工作站,运行tkdiff非常好——我可以整天diff文件。

在第二个系统,CentOS release 6.6服务器上,tkdiff失败,并显示以下堆栈跟踪:

Error in startup script: 
    while executing
"font actual system"
    invoked from within
"set sysfont [font actual system]"
    (file "<path...>/bin/tkdiff" line 122)

我不知道为什么它不给我一个错误信息之间的":"one_answers"while execution "…很奇怪。

我对这个很挠头,我试过一些东西,比如:

  • #!/usr/bin/wish
  • 代替!#/bin/sh
  • package require Tk语句更新到8.5
  • 运行wish,然后从wish内部找到tkdiff:奇怪的是,这没有错误!但是这是不实际的,因为指定diff文件并以这种方式运行会非常麻烦。

我猜我可能错过了一些其他依赖于我的CentOS服务器?

更新:

好吧,这绝对是一个依赖关系。我的大脑在细节上有点模糊,但我记得在从wish提示采购时与仅运行脚本时存在一些微妙的差异,就错误处理而言。根似乎可能是缺少的字体依赖项,如本实验所示:

$ wish
% font actual system
% puts $errorInfo
    while executing
"font actual system"
% puts $errorCode
NONE
% 

显然它对font actual system不满意。奇怪的是,$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: X显示服务器(RHEL本地工作站)上的系统字体没有安装在运行wish的X客户端(CentOS服务器)上。

我认为问题是,至少在一定程度上,由于我在CentOS服务器上运行tkdiff程序并通过X显示到我原来的RedHat工作站。我对根本原因(while executing "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服务器,因为它是通过X显示到我的RHEL盒子,将试图使用相同的系统字体。通过快速搜索,我找到了适合这个字体的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现在运行良好!

相关内容

  • 没有找到相关文章

最新更新