Chrome 如何打包Chromium和所有依赖项以进行部署

cuxqih21  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(243)

从JasperServer 7.1.0更新到7.9.1后, Jmeter 板的PDF导出不再起作用。仔细研究一下,我发现由于PhantomJS的弃用,Chromium是必要的,因此我需要为服务器提供一个Chrome二进制文件。
我们无法在JasperServer主机上安装应用程序-即使是jasperserver部署也是通过复制构建的包而不是运行安装程序来完成的。因此,我不能在主机上安装Chrome。我也不能让主机在部署时从外部URL下载文件,只能从本地工件存储访问文件。
我尝试的第一个解决方法是从https://commondatastorage.googleapis.com/chromium-browser-snapshot下载chromium并将zip文件存储在本地工件存储中,然后在部署时提取它。这会让Chrome进入服务器,但它错过了Chrome需要的几个依赖项。
我的下一个想法是使用yum install -install-root=将缺少的依赖项下载到Chrome文件夹<CHROME_DIRECTORY>中<MISSING_REPO>,然后压缩包含依赖项的文件夹。然而,尝试这样做仍然失败-它创建了指向lib和lib 64目录的符号链接,但实际上并没有将文件放在Chrome目录中。此外,Chrome仍然会因为缺少文件而抛出错误,即使它需要的文件位于lib 64文件夹中或与Chrome可执行文件位于同一文件夹中。
我现在看到的错误是error while loading shared libraries: libatk-1.0.so.0: cannot open shared object file: No such file or directory
在Chrome上运行ldd,我看到以下缺少的库:

libatk-1.0.so.0 => not found
        libatk-bridge-2.0.so.0 => not found
        libcups.so.2 => not found
        libxkbcommon.so.0 => not found
        libatspi.so.0 => not found
        libXcomposite.so.1 => not found
        libXdamage.so.1 => not found
        libgbm.so.1 => not found
        libasound.so.2 => not found

如何将Chrome及其依赖项打包在一起,以便只需将它们解压缩到相关的存储库中即可进行部署?

1mrurvl1

1mrurvl11#

解决方案如下:
生成一个好的Chrome版本,方法是提取要在与JasperServer主机具有相同操作系统的第二台机器上使用的版本,并正常安装任何依赖项。
通过将Chrome解压缩到JasperServer主机上,将LD_LIBRARY_PATH设置为您的chrome目录,并运行ldd <chrome_path> | grep not来识别缺少的依赖项。将它们添加到Chrome存档中。重复此操作,直到没有识别出其他依赖项(缺少依赖项)。
最后,重新配置jasperserver以从提供的chrome-wrapper可执行文件运行Chrome,或者将其设置为使用仅设置LD_LIBRARY_PATH然后将所有参数传递给chrome的自定义wrapper。

相关问题