Windows 不合法的缓存路径导致 TeX Live 安装失败

在 Windows 上安装 TeX Live 时可能遇到由于缓存路径名称不合法, 即 不是纯英文的无空格的路径, 而安装错误的情况.

错误

在使用 GUI 界面安装时, 出现的错误形如下图

命令行安装时不会出现问题, 具体安装方法请查看啸行的install-latex-guide-zh-cn

原因

这是因为 TeX Live 安装的时候需要使用环境变量 TEMPTMP 来释放临时文件, 但是路径名不合法会导致调用失败.

解决方法

  1. 永久修改 TEMPTMP 环境变量的值. 知道了问题在哪就容易解决了, 首先 右键此电脑→属性→高级系统设置→环境变量→用户环境变量 找到 TEMPTMP, 如果没有刻意设置的话其值应该都为
1
%USERPROFILE%\AppData\Local\Temp

中文用户名便会导致 %USERPROFILE% 中含有无法识别的中文字符, 我们可以修改这个路径改为合法路径, 如

1
C:/Temp

再启动安装程序即可安装成功.

  1. 临时修改 TEMPTMP 环境变量的值. 在 cmd 中执行
1
2
3
mkdir C:\temp
set TEMP=C:\temp
set TMP=C:\temp

即可临时修改这两个环境变量的值, 然后继续在 cmd 中执行安装程序即可. 关闭 cmd 窗口时这两个环境变量将恢复为原始状态.

另一些事情

在使用中发现中文的用户名还会影响到 biber 制作参考文献. 报错如下

1
2
3
4
5
6
7
Process started: biber.exe "main"

Use of uninitialized value in anonymous hash ({}) at C:\Users\凌霄\AppData\Local\Temp\par-c1e8cff6\cache-485d9ee7398586ce889a97f1d7a34ff027ca8881\inc\lib/Win32/Unicode/File.pm line 337. Odd number of elements in anonymous hash at C:\Users\凌霄\AppData\Local\Temp\par-c1e8cff6\cache-485d9ee7398586ce889a97f1d7a34ff027ca8881\inc\lib/Win32/Unicode/File.pm line 337.
Empty String at C:\Users\凌霄\AppData\Local\Temp\par-c1e8cff6\cache-485d9ee7398586ce889a97f1d7a34ff027ca8881\inc\lib/Biber/LaTeX/Recode.pm line 116.
INFO - This is Biber 2.16
INFO - Logfile is 'main.blg'
Process exited with error(s)

这个问题同样可以通过修改环境变量 %USERPROFILE%\AppData\Local\Temp 来解决

后续

但是中文用户名带来的问题不仅仅是安装 TeX Live 失败. 所以最好可以拥有一个英文无空格的用户名, 首先最推荐的就是重装系统, 重新设置用户名. 如果无法或不愿重装系统, 可以尝试修改用户名, 但是直接修改用户名可能会导致严重的后果, 操作之前要做好数据备份以及心理准备, 下面放上可供参考的修改方法及知乎上的问题:

可供参考的方法

知乎上的问题

微软社区的技术支持1

微软社区的技术支持2