2015-02-24 138 views
4

我想在Heroku上运行xvfb。在我的Mac上,我使用了dmg来安装它。有没有人有任何想法如何在Heroku上做这件事?可以在Heroku上运行xvfb吗?

我遇到了这些buildpack(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]) 
+0

我也被卡住了。昨天我很容易地在亚马逊上工作,但它不会在heroku上发展。 – freeall 2015-12-10 08:58:05

回答

2

我想知道同样的事情。好像你已经找到了this guy's issue。提到的所有buildpack都有1年以上的历史,不再工作了。

两个看似可行的选择:

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

  2. 将apt软件包管理器的所有依赖关系安装到〜/ .apt之类的位置,并从那里运行,如最新的buildpack-apt。对我来说,这个选项与sh: 1: /usr/bin/xkbcomp: not found一起死亡。 Xvfb正在寻找/,同时安装了命令~/.apt/usr/bin/xkbcomp。还没有想出如何告诉Xvfb看看~/.apt/

4

我在研究如何更新雪松-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 bash检查与XAUTHORITY=/tmp/xvfb-run.2NG0xl/Xauthority Xvfb ":99" -screen 0 1280x1024x24 -nolisten tcp的XVFB正在工作。

4

是的,这是可能的,但很复杂。我跟着一些fxtentacle做的(在他们的回答中),但这可能更简单。这些说明提供了最低限度的Xvfb设置;它仍然打印出一堆警告。

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

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

+0

使用上面的指令我能够运行xvfb-run。不幸的是,electron会因为:加载共享库时出错:libnotify.so.4:无法打开共享目标文件:没有这样的文件或目录。 通过'bash'手动运行它并没有给出任何错误。 libnotify4 _is_已安装 - 在'/ app/.apt'下。我想知道为什么节点进程没有选择'LD_LIBRARY_PATH' env var。 – neofreko 2016-02-13 14:08:48

+0

啊,这个在上个月有所变化 - 你是否已经通过Aptfile安装libnotify4 for heroku-buildpack-apt?我还必须添加它(除了xvfb)。你可以通过运行'heroku run bash'来获得一个shell来检查你的'LD_LIBRARY_PATH'。 – yoz 2016-02-14 16:42:30

+0

是的,我通过Aptfile安装。在bash上用'xvfb-run'调用电子并没有给我带来任何问题。但是,通过nodejs过程来做它从来没有为我工作:(我甚至试图从Heroku配置中设置'LD_LIBRARY_PATH',没有运气 - 它是'libnotify4'问题 – neofreko 2016-02-20 10:16:01