用于论文编译的 dockerized 构建工具
项目描述
texbld
尽管我们希望 LaTeX 编译是一个声明性过程(源到 PDF),但大型项目的编译最终需要大量自定义外部程序和依赖项。例如,编译步骤可能需要运行用 haskell 编写的脚本,将输出通过管道传输到 pandoc,然后将所有内容放入 LaTeX 文件中以使用pdflatex. 祝你在生产系统中安装所有这些程序(尤其是讨厌的 ghc 依赖项)好运!
此外,不同的 LaTeX 发行版的输出会略有不同(尤其是在使用 biblatex 时),这是可重复性的问题。
解决这些问题的第一个方法是 mktex。尽管它解决了一些依赖问题,但它会遇到使用预先构建的 docker 镜像所带来的各种脆弱性和可重复性问题。此外,由于其设计,这些图像被迫成为单一、臃肿且最终不灵活的图像。每个构建都应该具有它所需的依赖项,仅此而已!
texbld旨在通过提供构建图像完全可复制和可共享的环境来解决这些问题。它使用 docker 来实现绝对的系统可重现性以及在它支持的所有平台(MacOS、其原生 Linux 和 Windows(未经测试))上的使用。
图像哈希用于确保任何 docker 图像是完全不可变的,防止依赖修改问题。
用户可以在一个简单的 TOML 文件(连同相关文件)中指定他们的构建镜像,然后将它们上传到 github,其他人可以在自己的项目中继承和使用它。
图像可以从本地文件系统、GitHub 或 Docker 中的包继承。
安装
该项目在pypi上运行。
此处介绍了各种安装方法。
尼克斯操作系统
检查发布分支中的 nix 表达式并进行相应的配置。
为了构建主分支,运行nix-build或nix build(使用薄片)。
设置此项目
尼克斯操作系统
跑步nix develop 应该设置一切。但是请注意,生成的诗歌虚拟环境将安装在 中
~/.cache/pypoetry/virtualenvs,因此它并不完全基于 nix。
非 NixOS
这个项目使用诗歌作为它的依赖管理器。只需在项目目录中运行poetry install
并poetry shell进入,您就应该进入一个包含所有依赖项的虚拟环境。
测试
为了在虚拟环境中运行测试,运行pytest.
当地环境
项目配置文件应该在 中(project root)/texbld.toml,而本地图像配置应该在$HOME/.config/texbld/packages.
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。