如何添加缺失的RANDR扩展

33

我已在我的无头服务器上设置了xvfb服务器,当我运行DISPLAY=:99 firefox时,出现了缺少RANDR扩展的异常。

许多人建议从xorg.conf文件中禁用某些xinerna,但在我的情况下,这个文件没有被创建。

因此,我正在寻找如何添加缺失的RANDR扩展。

3个回答

25

当我通过 xvfb 使用 Selenium 运行 Firefox headless 时,我看到了这个错误消息。结果证明这个消息对我来说是一个误导。该消息只是一个警告,而不是错误。它不是 Firefox 没有正确启动的原因。

Firefox 没有为我启动的原因是它已经更新到一个不再兼容我使用的 Selenium 驱动程序的版本。 我将 Selenium 驱动程序升级到最新版本,Firefox 再次可以正常启动(即使出现了关于 RANDR 的此警告消息)。

新版本的 Firefox 通常只与一两个版本的 Selenium 兼容。 偶尔会发布与< strong >没有 Selenium 兼容版本的 Firefox。 当发生这种情况时,可能需要一两个星期才能发布 Selenium 的新版本。 因此,我现在保留一个已知与我安装的 Selenium 版本兼容的 Firefox 版本。 除了由我的软件包管理器更新的 Firefox 版本之外,我还在 /opt/ 中安装了一个版本(例如 / opt / firefox31 / )。 Selenium Java API 需要提供 Firefox 二进制文件的位置参数。 缺点是旧版本的 Firefox 存在已知的安全漏洞,不应与不受信任的内容一起使用。


你帮我省了几个小时的时间 :) - ramigg
在加载webdriver时,您可以传递您喜欢的二进制文件位置。这包括自定义安装、便携式安装或任何您指向的位置。 - m3nda
你现在使用的是哪一对?4.43和29吗? - Buffalo
我目前正在使用Firefox 31和Selenium 2.43.1(Java驱动程序)。 - Stephen Ostermiller
@CoreyGoldberg 在问题中看到的错误消息是Firefox Selenium启动失败时最突出的事情。我猜那个提问者甚至只是在打错了树。他们不需要添加randr扩展,但是没有其他错误或警告消息可以让他们集中注意力。 - Stephen Ostermiller
显示剩余2条评论

17

首先,Xvfb不能从xorg.conf读取配置。Xvfb是KDrive X服务器的变体之一,像该系列的所有成员一样,它从命令行获取配置。

确实,XRandR和Xinerama是互斥的,但在Xvfb的情况下,首先不存在Xinerama。您可以使用以下至少命令行选项启动Xvfb以启用XRandR扩展。

Xvfb +extension RANDR [further options]

1
至少在树莓派操作系统上,Xvfb似乎没有RANDR支持。是否有替代方案? - Black
2
@Black:你总是可以使用自己的定制配置从源代码构建。我强烈建议在Raspbian系统上安装工具链并进行编译。幸运的是,Xvfb并不是非常复杂,对于树莓派来说是一个可管理的任务;如果可以避免的话,你绝对不想经历设置兼容的交叉编译工具链的困扰。 - datenwolf
@DenisShevchenko:执行 strings $(which Xvfb) | grep -i randr 的结果是什么? - datenwolf
1
@datenwolf 空结果。实际上,我使用 xvfb-run - Denis Shevchenko
@DenisShevchenko:xvfb-runXvfb不是同一个东西。你必须将参数传递给Xvfb,而且很可能xvfb-run会丢弃额外的命令行参数。 - datenwolf
显示剩余4条评论

2

我在使用Firefox 30 + Selenium 2.49 + Ubuntu 15.04时遇到了同样的问题。

Ubuntu 14上它可以正常工作,但升级到15.04后,我遇到了相同的RANDR警告,并且在使用Xfvb启动Firefox时出现了问题。

添加+extension RANDR后,它又可以正常工作了。

$ vim /etc/init/xvfb.conf

#!upstart
description "Xvfb Server as a daemon"

start on filesystem and started networking
stop on shutdown

respawn

env XVFB=/usr/bin/Xvfb
env XVFBARGS=":10 -screen 1 1024x768x24 -ac +extension GLX +extension RANDR +render -noreset"
env PIDFILE=/var/run/xvfb.pid

exec start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE --exec $XVFB -- $XVFBARGS >> /var/log/xvfb.log 2>&1

你是在Ubuntu 14.04或14.10上工作吗?因为我正在尝试在14.04上运行,但当我尝试运行Chromium浏览器时出现“缺少RANDR扩展”消息...好的,这可能是Chromium的问题。 - zabumba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接