是否可以在Heroku上运行xvfb?

时间:2015-02-24 02:15:37

标签: heroku xvfb

我想在Heroku上运行xvfb。在我的Mac上,我使用dmg来安装它。有谁会知道如何在Heroku上进行此操作?

我遇到了这些构建包(http://github.com/douglasjsellers/heroku-xvfb-buildpack) - 但是按照说明似乎没有解决问题,因为xvfb仍未正确安装。此外,我尝试安装xvfbwrapper(https://pypi.python.org/pypi/xvfbwrapper/0.1.0),但它还没有在Heroku上工作(为可能的noob问题道歉)。

以下是我在Heroku日志中出现的错误:

2015-02-24T02:09:16.035298+00:00 app[web.6]: cmd=['Xvfb', '-help']
2015-02-24T02:09:16.035564+00:00 app[web.6]: Program install error! 
2015-02-24T02:09:16.035302+00:00 app[web.6]: OSError=[Errno 2] No such file or directory

以下是代码:

temp = tempfile.mkstemp(suffix='.html')
html = os.fdopen(temp[0], "r+")
html.write(cv)
html.seek(0, 0)

display = Display(visible=0, size=(800, 600))
display.start()

# Open the file on Selenium to load the JavaScript
driver = webdriver.Firefox()
driver.get("file://" + temp[1])

3 个答案:

答案 0 :(得分:4)

我在研究如何为Cedar-14更新Xvfb时发现了这个问题,我设法让#2工作。所以这里有:

  1. 我使用buildpack-apt来安装x11-xkb-utils xvfb x11-xkb-utils xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic libxfont1 xvfb

  2. 运行apt buildpack之后,需要修补一下Xvfb以使一切顺利进行。为此,我使用了自己的run-bash buildpack,但是在Heroku编译期间允许你运行bash脚本的所有东西都可以使用。这是我用来修补Xvfb并为字体编制索引的脚本:https://gist.github.com/fxtentacle/960cdb96ece01add8686

  3. 现在,您可以使用heroku run bashXAUTHORITY=/tmp/xvfb-run.2NG0xl/Xauthority Xvfb ":99" -screen 0 1280x1024x24 -nolisten tcp核对Xvfb正在运作。

答案 1 :(得分:4)

是的,这是可能的,但很复杂。我跟着fxtentacle所做的一些事情(在他们的回答中),但这可能更简单。这些指令提供了最小的Xvfb设置;它仍会打印出一堆警告。

使用heroku-buildpack-apt安装xvfblibnotify4 debian软件包。然后使用此buildpack来修复/usr/bin/xkbcomp问题: https://github.com/captain401/heroku-buildpack-xvfb

然后您可以使用xvfb-run $PROGRAM来运行您的应用程序。

答案 2 :(得分:2)

我想知道同样的事情。好像你已经找到了this guy's issue。提到的所有构建包都已有1年多的历史了,不再适用了。

两种可行的看似选择:

  1. 编译一个自包含的xvfb二进制文件la https://github.com/kenshin23/xvfb-portable-binary,它运行在Heroku当前的操作系统和体系结构上,在更新时进行重建。

  2. 将apt包管理器中的所有依赖项安装到像〜/ .apt这样的地方,并从那里运行,如最新的buildpack-apt。对我来说,这个选项随sh: 1: /usr/bin/xkbcomp: not found而死。 Xvfb正在寻找/,而apt则将命令安装到~/.apt/usr/bin/xkbcomp。 Haven没弄明白如何告诉Xvfb查看~/.apt/