I updated my TeXlive distribution a couple times in the past week, and now I get this error when I include package expl3 (or any other package that includes it, such as fontspec). Before the updates it was working fine. Am I missing any package that should be installed? I tried searching for l3backend-pdfmode.def, but I found no results.

\documentclass{article}
\usepackage{expl3}
\begin{document}
Hi
\end{document}

λ lualatex a
This is LuaTeX, Version 1.10.0 (TeX Live 2019)
restricted system commands enabled.
(./a.tex
LaTeX2e <2018-12-01>

luaotfload | main : initialization completed in 0.042 seconds
(/opt/texlive/2019/texmf-dist/tex/latex/base/article.cls
Document Class: article 2018/09/03 v1.4i Standard LaTeX document class
(/opt/texlive/2019/texmf-dist/tex/latex/base/size10.clo))
(/opt/texlive/2019/texmf-dist/tex/latex/l3kernel/expl3.sty
(/opt/texlive/2019/texmf-dist/tex/latex/l3kernel/expl3-code.tex)

! LaTeX Error: File l3backend-pdfmode.def' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: def)

Enter file name:
! Emergency stop.

l.282   }

379 words of node memory still in use:
2 hlist, 1 rule, 1 dir, 3 kern, 1 glyph, 4 attribute, 48 glue_spec, 4 attrib
ute_list, 1 write nodes
avail lists: 2:9,3:3,4:1,5:2,7:2,9:2
!  ==> Fatal error occurred, no output PDF file produced!
Transcript written on a.log.

• The code has been moved to a dedicated package. Install the l3backend package. – Ulrike Fischer Jul 8 '19 at 9:18
• That works. I tried to tlmgr search l3backend but I forgot that it only searches locally by default, and I did not find anything. – Claudio Jul 8 '19 at 9:33
• May I ask how you update your texlive? Whenever I update I also get all the new packages, and thus aren't missing stuff like this module split. – daleif Jul 8 '19 at 17:01
• @daleif tlmgr update --all, possibly also tlmgr update --self if it complains. However, this was a minimal installation, so maybe that package should have been pulled in by some collection that was not installed (I am assuming, I am not sure how tlmgr works exactly) – Claudio Jul 8 '19 at 19:52
• That might explain it (that it was missing from a collection) as I always install everything – daleif Jul 8 '19 at 19:53

Since the July 1st, 2019 release of the LaTeX3 kernel, the driver-specific code contained in the l3backend module was moved to a dedicated package in CTAN, and now l3backend is a dependency of l3kernel.

The description of l3backend on CTAN says:

The func­tions here are de­fined dif­fer­ently de­pend­ing on the en­gine in use. As such, these are dis­tributed sep­a­rately from l3k­er­nel to al­low this code to be up­dated on an in­de­pen­dent sched­ule.

So if you updated l3kernel only without installing l3backend as well you'll get an error like this:

(\$TEXMFROOT/texmf-dist/tex/latex/l3kernel/expl3-code.tex)

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: def)

Enter file name:


and the solution is to install the missing l3backend package.

• The package was already installed but I still get the error... I'm using texlive 2019 on Linux... – Taekwondavide Jul 17 '19 at 15:01
• @Taekwondavide If l3backend is correctly installed the error should disappear. How did you install the package? What happens if you type tlmgr info l3backend in a terminal? – Phelype Oleinik Jul 17 '19 at 19:57
• @Taekwondavide Did you update with tlmgr update --all? If you didn't, try it: it should update all packages and install missing ones. Does kpsewhich -a l3backend-pdfmode.def return something? If nothing works, I suggest you ask a new question, more people will see it :-) – Phelype Oleinik Jul 18 '19 at 20:52
• @Taekwondavide Hm... try running mktexlsr to generate the filename database for kpathsea. Run kpsewhich -a l3backend-pdfmode.def again after that. – Phelype Oleinik Jul 18 '19 at 23:14
• @Taekwondavide Great :D I don't use the --gui much, so I don't know what it does, but apparently it didn't (for some reason) run mktexlsr after updating. mktexlsr generates the filename database which kpsewhich uses to locate the files in TeXLive. I imagined this was the problem after you said the file was there but kpsewhich didn't find it (just parroting for future readers: I'm afraid this problem will keep happening for some time :-). – Phelype Oleinik Jul 18 '19 at 23:37

For Windows:

1. Open the MikTeX Console
2. Check for Update
• When I update, I get something went wrong while checking for update. Invalid argument: path="C:\Users\id917977\AppData\Local\MiKTeX\2.9\miktex/data/le\df2c24cb21984fa85003c1ecc818ff83.fndb" – aan Sep 25 '19 at 13:27
• Does adding \usepackage{l3backend} to the preamble of your document tell MikTeX what it should be looking for to avoid manual package installation? – rbrignall Nov 5 '19 at 10:51