【发布时间】:2017-07-16 20:35:19
【问题描述】:
我的目标是创建一个 Amazon Lambda 函数,通过 python 使用 pdflatex 工具将 .tex 文件编译成 .pdf。
我已经使用 Amazon 的 AMI 构建了一个 EC2 实例并使用 yum 安装了 pdflatex:
yum install texlive-collection-latex.noarch
这样,我可以使用 pdflatex 并且我的 python 代码可以正常工作,按照我想要的方式将我的 .tex 编译成 .pdf。
现在,我需要创建一个包含 pdflatex 工具的 .zip 文件包; latexcodec(我用过的一个python库,这个没问题);和我的 python 文件:处理程序(lambda 函数处理程序)和 worker(编译我的 .tex 文件)。
此捆绑包是将我的代码和库上传到 Amazon Lambda 所需的部署包。
问题是:pdflatex 有很多依赖项,我必须将所有内容收集在一个地方。我找到了一个可以为我执行此操作的脚本:
http://www.metashock.de/2012/11/export-binary-with-lib-dependencies/
我已设置我的 PATH 以在新目录中查找 pdflatex 二进制文件,以便我可以使用它,但我遇到了一个问题:pdflatex 找不到某些依赖项。我可以通过将环境变量设置为脚本将所有内容移至的文件夹来修复它:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/ec2-user/lambda/local/lib64:/home/ec2-user/lambda/local/usr/lib64"
此时,我正在通过 bash 直接运行 pdflatex。但是我的 python 脚本在尝试使用 pdflatex 时出错:
mktexfmt: No such file or directory
I can't find the format file `pdflatex.fmt'!
我还能够通过将 pdflatex.fmt 和 texmf.cnf 文件移动到我的捆绑文件夹并设置一些环境变量来解决这个问题:
export TEXFORMATS=/home/ec2-user/lambda/local/usr/bin
现在,我当前的问题,python 脚本不断抛出以下错误:
---! /home/ec2-user/lambda/local/usr/bin/pdflatex.fmt doesn't match pdftex.pool
(Fatal format file error; I'm stymied)
我找到了一些可能的解决方案;删除 .texmf-var 文件夹,在我的情况下,该文件夹不存在;使用 fmtutil,我的 AMI 映像中没有它...
1 - 我是否遗漏了任何环境变量?
2 - 或者以错误的方式移动我的 pdflatex 二进制文件及其所有依赖项?
3 - 是否有任何正确的方法可以移动二进制文件及其所有依赖项,以便可以在其他机器上使用(考虑到环境变量)?
【问题讨论】: