我的 Debian 系统上有一个全新的 TeXLive vanilla 安装。在安装之前,我删除了所有 Debian TeX 软件包。texmf.cnf
安装中的仅包含注释,我没有动过它。
当我将某个文档转换为 pdftex 时,TeX 会开始按应有的方式生成新的字体文件并将它们放入其中,/home/username/.texlive2021
但是kpsewhich -var-value TEXMFHOME
报告称/home/username/texmf
用户没有TEXMFHOME
设置。
问题 1:/home/username/texmf
我原本期望字体会根据结果显示出来kpsewhich
。我的期望错了吗?使用的位置HOME/.texlive2021
来自哪里,在哪里/谁指定了字符串.texlive2021
?
问题2:我有一个 PHP 应用程序将 pdftex 连接到服务器接口。客户端GET
在 PHP 端点上创建一个,然后 PHP 启动 pdftex。现在 pdftex失败自行启动字体生成,但会missfont.log
在 pdftex 进程的当前工作目录中生成一个文件。为什么pdftex 在 PHP 设置中无法启动字体生成,而在手动 bash 设置中却可以正常工作。进程环境知道PATH
、TEXMFHOME
和HOME
变量。还有什么这里缺少什么?
问题3:当我现在手动执行字体命令时,missfont.log
字体的构造方式如上所述,/home/username/.texlive2021
如问题 1 中所述。当我再次使用 PHP 服务器端点时,pdftex 现在忽略环境TEXMFHOME
变量,而是选取HOME
环境变量,附加.texlive2021
并从之前的手动运行中找到字体。为什么pdftex 会忽略该TEXMFHOME
设置吗?如果不在,我该如何指定TEXMFHOME
?
结论:我需要让字体构建过程自动运行,以供 PHP 服务使用。在远程/服务器/PHP 设置中,我对各种错误消息的访问有点受限,这就是我将其与手动进程启动进行比较的原因。但是,shell 启动的进程 (1) 的行为与我认为它们应该的行为不同(问题 1 和 3),并且 (2) 的行为与 PHP 通过 exec 调用运行的进程不同(问题 2)。
后记:核心问题是 PHP 没有提供完全的环境。首先,它缺少变量,Ulrike Fischer 指出。其次,它缺少字体生成过程中所需的进一步 Linux 工具的路径。
答案1
关于你的第一个问题:
自动生成的东西被放入texmfvar
而texmfsysvar
不是texmfhome
。