You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS下LaTeX异常:pdflatex与kpsewhich仅sudo下可用

针对你在macOS下使用Homebrew安装的TeX Live遇到的非sudo模式无法编译问题,以下是具体的原因分析和解决步骤:

核心原因分析
  1. 环境变量差异:root用户的PATH或TeX相关环境变量(如TEXMF)包含了TeX Live的资源路径,而普通用户的环境变量未正确配置,导致命令找不到核心类文件。
  2. 缓存权限问题:曾用sudo运行过TeX命令,生成了root权限的缓存文件(比如~/.texlive2023目录),普通用户无法读取这些缓存,导致路径查找失败。
  3. 上层目录权限遗漏:虽然/usr/local/texlive/2023/bin和texmf-dist权限正常,但/usr/local/texlive或/usr/local本身的权限可能限制了普通用户的访问。
LaTeX目录权限的关键要求
  • 系统级TeX目录(如/usr/local/texlive/2023及其子目录):需保证普通用户有读+执行权限(权限位为r-xr-xr-x或drwxr-xr-x),无需写权限(除非要安装宏包)。
  • 用户级TeX目录(默认~/Library/texmf):需要读写执行权限,用于存放自定义宏包或配置。
  • 禁止用root权限运行TeX编译命令,否则会生成root所属的缓存文件,后续普通用户无法正常使用。
分步排查与解决方法

1. 检查普通用户的环境变量

先对比普通用户和root的环境变量差异:

# 普通用户下执行
echo $PATH
kpsewhich --show-path=tex

# sudo下执行
sudo echo $PATH
sudo kpsewhich --show-path=tex

如果普通用户的PATH里没有/usr/local/texlive/2023/bin/universal-darwin,或者kpsewhich输出的路径不包含/usr/local/texlive/2023/texmf-dist,需要手动添加:
编辑~/.zshrc(如果用bash就是~/.bash_profile),添加:

export PATH="/usr/local/texlive/2023/bin/universal-darwin:$PATH"
export TEXMFLOCAL="/usr/local/texlive/texmf-local"
export TEXMFDIST="/usr/local/texlive/2023/texmf-dist"

然后执行source ~/.zshrc生效。

2. 修复缓存目录权限

如果之前用sudo运行过TeX命令,会生成root权限的缓存目录,执行以下命令修复:

# 删除普通用户下的TeX缓存(如果存在)
rm -rf ~/.texlive2023

# 检查系统级缓存权限,确保普通用户可读
sudo chown -R johnterry:staff /usr/local/texlive/2023/texmf-var
sudo chmod -R u+rwx,g+rwx,o+rx /usr/local/texlive/2023/texmf-var

3. 验证上层目录权限

检查/usr/local/texlive和/usr/local的权限:

ls -ld /usr/local
ls -ld /usr/local/texlive

确保权限为drwxr-xr-x,如果不是,执行:

sudo chmod 755 /usr/local
sudo chmod 755 /usr/local/texlive

4. 更新TeX文件名数据库

普通用户下执行:

mktexlsr

该命令会更新TeX的文件名索引,确保能找到article.cls等核心文件。

5. 重置TEXMFHOME(如果之前设置错误)

之前将TEXMFHOME设为/usr/local/texlive/texmf-local是错误的,TEXMFHOME应该是用户个人的TeX目录,执行:

unset TEXMFHOME
# 或者设置为默认路径
export TEXMFHOME="$HOME/Library/texmf"

如果该目录不存在,创建它:

mkdir -p ~/Library/texmf
验证解决方案

普通用户下执行以下命令测试:

kpsewhich article.cls
# 正常输出应为:/usr/local/texlive/2023/texmf-dist/tex/latex/base/article.cls
pdflatex test.tex # 新建一个包含article类的测试tex文件

内容的提问来源于stack exchange,提问作者T-Ray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 01:12:05