我正在尝试使用现在可敬的tkdiff工具,但遇到了一个麻烦。 我有2个Linux系统。 第一个系统,一个红帽EL 6.4工作站,运行tkdiff完全正常 – 我可以整天差异文件。
在第二个系统上,一个CentOS版本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)
我不知道为什么它没有给我之间的“:”和“执行”之间的错误信息…非常奇怪。
我在这个问题上摸不着头脑,我尝试了一些东西,比如:
#!/usr/bin/wish
replace!#/bin/sh
shebang package require Tk
语句到8.5 我猜我可能会错过我的CentOS服务器上的其他依赖项?
更新:
好的,这绝对是一个依赖性的东西。 我的大脑在细节上有点模糊,但是我记得在从wish
提示中获取资源时只是在运行脚本时存在一些细微差别,至于error handling。 根似乎可能是缺less的字体依赖,因为这个实验显示:
$ 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工作站)上的系统字体未安装在希望运行的X客户端(CentOS服务器)上。
我认为问题至少部分是因为我在CentOS服务器上运行tkdiff
程序,并通过X显示到我原来的RedHat工作站。 我采取了根本原因( while executing "font actual system"
)的tcl堆栈跟踪,并用它来缩小问题。 在RedHat的崇拜中,我发起了这个愿望,并执行了这个命令,得到如下回应:
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
现在运行良好!