如何打包Chromium及其所有依赖以用于JasperServer部署
解决方案:打包可移植Chromium及其依赖用于JasperServer PDF导出
前提条件
- 一台与目标JasperServer宿主机系统版本完全一致的机器/容器(用于打包,需能联网下载依赖包)
步骤1:下载Chromium及缺失依赖
- 下载对应系统架构的Chromium二进制包(如x86_64),解压到临时目录,记为
/tmp/chrome - 安装
yum-utils工具(用于下载rpm包):yum install -y yum-utils - 下载所有缺失依赖对应的rpm包:
yumdownloader --resolve atk at-spi2-atk cups libxkbcommon at-spi2-core libXcomposite libXdamage libgbm alsa-lib注:上述包名对应你列出的缺失库,比如
libatk-1.0.so.0来自atk包,libatk-bridge-2.0.so.0来自at-spi2-atk包,以此类推
步骤2:提取文件到统一可移植目录
- 创建最终打包目录:
mkdir -p /tmp/chrome-portable/chrome - 将Chromium解压后的所有文件复制到
/tmp/chrome-portable/chrome - 遍历所有下载的rpm包,提取文件到
/tmp/chrome-portable:
此命令会将rpm中的lib、lib64等目录内容直接合并到for rpm in *.rpm; do rpm2cpio "$rpm" | cpio -idmv -D /tmp/chrome-portable; donechrome-portable目录下
步骤3:配置启动脚本
在/tmp/chrome-portable目录下创建启动脚本chrome-headless.sh:
#!/bin/bash # 设置依赖库路径,指向当前目录的lib和lib64 export LD_LIBRARY_PATH=$(pwd)/lib:$(pwd)/lib64:$LD_LIBRARY_PATH # 调用Chromium无头模式执行PDF导出 ./chrome/chrome --headless --disable-gpu --no-sandbox --print-to-pdf "$@"
给脚本添加执行权限:
chmod +x /tmp/chrome-portable/chrome-headless.sh
步骤4:验证与打包
- 在打包机器上验证依赖是否完整:
确保无任何"not found"的输出cd /tmp/chrome-portable ldd ./chrome/chrome | grep "not found" - 打包整个目录:
tar -czf chrome-portable.tar.gz -C /tmp chrome-portable
步骤5:部署到目标服务器
- 将
chrome-portable.tar.gz上传到本地制品仓库 - 在目标JasperServer宿主机上,从本地制品仓库下载包并解压到任意目录(如
/opt/jasper/chrome-portable) - 修改JasperServer配置,将PDF导出的Chrome执行路径设置为
/opt/jasper/chrome-portable/chrome-headless.sh
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

