由于 AWS Lambda 支持运行二进制文件,我想pdflatex
在 AWS Lambda 中运行,但我偶然发现了一些问题。我已经成功运行了其他二进制文件,但是pdflatex
有许多共享的操作系统库依赖项,我不知道如何使它工作。
示例代码如下所示:
'use strict';
let exec = require('child_process').exec;
exports.handler = (event, context, callback) => {
const child = exec('LD_LIBRARY_PATH=bin/ ./pdflatex my-file.tex', (error) => {
callback(error, 'Process complete!');
});
child.stdout.on('data', console.log);
child.stderr.on('data', console.error);
};
ZIP 文件如下所示:
index.js -------------- where the above code is
pdflatex -------------- binary from my OS
my-file.tex ----------- a sample LaTeX document
bin/ ------------------ folder with shared OS libraries
上传的 ZIP 文件包含上述所有内容。
我生成了pdflatex
with cp $(which pdflatex) pdflatex
。
- 这是上传
pdflatex
它的正确方法吗?这种方法有问题吗?有没有更好的办法?
第一次尝试运行后,AWS Lambda 抱怨lib_____.so
缺少很多,所以我将它们从我的机器复制到bin/
ZIP 内的文件夹中。我曾经ldd $(which pdflatex)
寻找pdflatex
's 的依赖关系。
然而,正如我想象的那样,它们与运行 AWS Lambda 的 Linux 版本不兼容,所以我启动了一个 CentOS 并将文件复制到lib______.so
文件bin/
夹中,但这也不起作用。
有没有办法“转储”一个
pdflatex
包含所有必需依赖项的自包含版本,并且无需共享操作系统库即可运行?我需要
pdflatex
在 Amazon Linux 实例中编译吗?如果我在 64 位架构上编译它并且代码在 32 位架构上运行,它不会失败吗?