【问题标题】:Getting XHProf visualization (issues with Graphviz and dot) working让 XHProf 可视化(Graphviz 和 dot 的问题)工作
【发布时间】:2015-07-31 08:00:14
【问题描述】:

我安装了XHProf 并希望看到调用图可视化。我点击View Full Callgraph 并首先收到以下消息:

执行 cmd 失败:“dot -Tpng”。 stderr: `sh: dot: command not found '

经过一番谷歌搜索,我发现这是由于未安装Graphviz引起的。然后我安装了它:

$ yum install graphviz

然后再试一次。现在我收到以下错误消息:

执行 cmd 失败:“dot -Tpng”。标准错误:`错误:/usr/lib64/graphviz/config6 大小为零,或其他读取错误。

错误:/usr/lib64/graphviz/config6 大小为零,或其他读取错误。

“点”不支持布局引擎

也许需要运行“dot -c”(使用安装程序的权限)来注册插件?

'

确实执行dot -c 会导致错误:

$ dot -c
Error: /usr/lib64/graphviz/config6 is zero sized, or other read error.
Warning: Could not load "/usr/lib64/graphviz/libgvplugin_pango.so.6" - file not found
Warning: Could not load "/usr/lib64/graphviz/libgvplugin_xlib.so.6" - file not found
Segmentation fault

但是文件libgvplugin_pango.so.6libgvplugin_xlib.so.6 在那里并且位于/usr/lib64/graphviz/

$ ls -l /usr/lib64/graphviz
total 724
...
lrwxrwxrwx 1 root root     26 May 19 13:58 libgvplugin_pango.so.6 -> libgvplugin_pango.so.6.0.0
-rwxr-xr-x 1 root root  22408 Sep 19  2012 libgvplugin_pango.so.6.0.0
lrwxrwxrwx 1 root root     25 May 19 13:58 libgvplugin_xlib.so.6 -> libgvplugin_xlib.so.6.0.0
-rwxr-xr-x 1 root root  15656 Sep 19  2012 libgvplugin_xlib.so.6.0.0

好吧,作为符号链接。但这应该没关系。反正我也测试过这个案例:

mv /usr/lib64/graphviz/libgvplugin_pango.so.6 /usr/lib64/graphviz/libgvplugin_pango.so.6_DEACT
mv /usr/lib64/graphviz/libgvplugin_xlib.so.6 /usr/lib64/graphviz/libgvplugin_xlib.so.6_DEACT
cp /usr/lib64/graphviz/libgvplugin_pango.so.6.0.0 /usr/lib64/graphviz/libgvplugin_pango.so.6
cp /usr/lib64/graphviz/libgvplugin_xlib.so.6.0.0 /usr/lib64/graphviz/libgvplugin_xlib.so.6

没有效果,还是一样的错误。

这里出了什么问题以及如何使它工作?

环境:VirtualBox VM 使用 CentOS 6 作为客户系统。

【问题讨论】:

标签: php profiling graphviz dot xhprof


【解决方案1】:

我终于搞定了。


简答

我猜想 yum update 或/以及 ann-libs 安装 可能是决定性的步骤 (-s)。但这只是一个假设,因此我描述了所有可能很重要的步骤(如下所示)。


详细解答

首先我尝试使用相关软件包安装graphviz

$ yum install 'graphviz*'

但是安装没有成功:

Error: php56w-common conflicts with php-common-5.3.3-46.el6_6.x86_64
 You could try using --skip-broken to work around the problem
** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:
cairo-1.8.8-3.1.el6.x86_64 has missing requires of libpixman-1.so.0()(64bit)

然后我尝试了相同的方法,但之前将graphviz-rhel.repo 添加到了存储库中:

$ cd /etc/yum.repos.d/
$ wget http://www.graphviz.org/graphviz-rhel.repo
$ yum list available 'graphviz*'
$ yum install 'graphviz*'

由于另一个错误而失败:

Error: Package: graphviz-2.38.0-1.el6.x86_64 (graphviz-stable)
           Requires: libANN.so.1()(64bit)
 You could try using --skip-broken to work around the problem
** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:
cairo-1.8.8-3.1.el6.x86_64 has missing requires of libpixman-1.so.0()(64bit)

正如预期的那样,--skip-broken 也没有成功。

之后我做了很多事情:yum clean allyum erase 'graphviz*'ann-libs 安装和yum update

$ yum clean all
$ yum install 'graphviz*'
$ yum erase 'graphviz*'
$ cd ~/temp/
$ wget http://dl.fedoraproject.org/pub/epel/6/x86_64/ann-libs-1.1.1-4.el6.x86_64.rpm
$ rpm -i ann-libs-1.1.1-4.el6.x86_64.rpm 
$ yum update

现在可以了。

【讨论】:

    【解决方案2】:

    在某些 RHEL 6 系统上遇到了同样的问题,结果发现问题在于 Graphviz 插件对某些 X11 库的隐藏依赖项,我可以通过安装以下 rpm 来安装它们:

    • libXau
    • libxcb
    • libXext

    所以,这解决了我的问题:yum install gtk2 libXau libxcb libXext

    【讨论】:

      猜你喜欢
      • 2019-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 2023-03-30
      • 2016-07-04
      相关资源
      最近更新 更多