35

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.
<read *> 

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.
11
  • 6
    The code has been moved to a dedicated package. Install the l3backend package. Commented Jul 8, 2019 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
    Commented Jul 8, 2019 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
    Commented Jul 8, 2019 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
    Commented Jul 8, 2019 at 19:52
  • That might explain it (that it was missing from a collection) as I always install everything
    – daleif
    Commented Jul 8, 2019 at 19:53

3 Answers 3

28

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)

! LaTeX Error: File `l3backend-<driver-name>.def' not found.

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.

14
  • 2
    The package was already installed but I still get the error... I'm using texlive 2019 on Linux... Commented Jul 17, 2019 at 15:01
  • 1
    @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? Commented Jul 17, 2019 at 19:57
  • 1
    @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 :-) Commented Jul 18, 2019 at 20:52
  • 1
    @Taekwondavide Hm... try running mktexlsr to generate the filename database for kpathsea. Run kpsewhich -a l3backend-pdfmode.def again after that. Commented Jul 18, 2019 at 23:14
  • 1
    @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 :-). Commented Jul 18, 2019 at 23:37
55

For Windows:

  1. Open the MikTeX Console
  2. Check for Update
  3. Updates > Update Now
  4. Search l3backend package
  5. Install the package
5
  • 4
    This is exactly what I was looking for. :D
    – Octfx
    Commented Jul 12, 2019 at 8:42
  • 3
    Solved it for me perfectly. Thanks!
    – liamcomp
    Commented Aug 22, 2019 at 14:54
  • 1
    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
    Commented Sep 25, 2019 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
    Commented Nov 5, 2019 at 10:51
  • Similar process for Mac (High Sierra): 1. Press CMD + Space Bar to search 2. Serach & Open MikTeX Console 3. Click "Reopen as Administrator" 4. Check for Updates 5. Updates > Update Now. I personally didn't need to install anything additional. Commented Apr 20, 2020 at 20:12
0

For MikTeX under Linux (Ubuntu), all that is required to

  1. sudo miktex-console

  2. Choose Switch to MiKTeX administrator mode

  3. Choose Check for updates under Updates.

MiKTeX will automatically install l3backend and other missing packages when needed.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .