[Tex/LaTex] Module ‘pdftexcmds’ not found after update

luatextikz-pgf

Yesterday I updated my distribution (tlmgr update --all) and now I cannot use TikZ with lualatex anymore.

Minimal working example:

\documentclass{article}
\usepackage{tikz}
\begin{document}
a
\end{document}

Compilation output:

> lualatex a
This is LuaTeX, Version 1.10.0 (TeX Live 2019)                                                                                                                                                                       
 restricted system commands enabled.                                                                                                                                                                                 
(./a.tex                                                                                                                                                                                                             
LaTeX2e <2019-10-01> patch level 3                                                                                                                                                                                   

luaotfload | main : initialization completed in 0.098 seconds                                                                                                                                                        
(/opt/texlive/2019/texmf-dist/tex/latex/base/article.cls                                                                                                                                                             
Document Class: article 2019/10/25 v1.4k Standard LaTeX document class                                                                                                                                               
(/opt/texlive/2019/texmf-dist/tex/latex/base/size10.clo))                                                                                                                                                            
(/opt/texlive/2019/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty                                                                                                                                                   
(/opt/texlive/2019/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty                                                                                                                                                       
(/opt/texlive/2019/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty            

...

(/opt/texlive/2019/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
(/opt/texlive/2019/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.
code.tex)
(/opt/texlive/2019/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex)

(/opt/texlive/2019/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikz
librarytopaths.code.tex)))
No file a.aux.
ABD: EveryShipout initializing macros
(/opt/texlive/2019/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
) (/opt/texlive/2019/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty[\direc
tlua]:1: module 'pdftexcmds' not found:
        no field package.preload['pdftexcmds']
        [kpse lua searcher] file not found: 'pdftexcmds'
        [kpse C searcher] file not found: 'pdftexcmds'
stack traceback:
        [C]: in function 'require'
        [\directlua]:1: in main chunk.
l.165       \directlua{require("pdftexcmds")}

? 

It seems that a Lua package is missing.

Is this a bug?
Am I missing a package?

Best Answer

There is currently ongoing work in making the massive oberdiek bundle, which contains many useful and widely-used packages, more maintainable. In particular the plan is to split off packages from the main bundle, so they can be updated separately without updating the whole collection. While this is happening you will gradually see packages disappear from https://github.com/ho-tex/oberdiek and reappear as stand-alone repositories in https://github.com/ho-tex.


A few days ago the package pdftexcmds was split from the oberdiek bundle, so it is now available as a stand-alone package in TeX live and MikTeX.

If you get any errors about missing pdftexcmds you probably got a new version of the oberdiek bundle that doesn't include pdftexcmds any more.

If you are a TeX live user, just run

tlmgr install pdftexcmds

This will install the new pdftexcmds stand-alone package.

If you are a MikTeX user you need to install pdftexcmds via the MikTeX Console. To avoid issues with MikTeX's on-the-fly installation feature you should make sure to run and update in User and Admin mode afterwards and should then update the package database (MikTeX Console > Tasks > Update package database) again once in Admin and once in User mode.


These package splits only affect users who are not using a complete TeX installation, but installed only selected packages. With TeX live it is usually recommended to get a complete installation with all packages that is what many people use and they will not notice any changes since the new package will get installed automatically.

As Ulrike mentioned in the comments, more packages are going to be split off in the coming weeks. Indeed just tonight kvoptions was split off and is now a stand-alone package (see for example here), so you may need to install kvoptions as well after tonight.


Note that any updates to the oberdiek package are announced in on the ctan-ann mailing list, with the message linked from the ctan oberdiek page. The last announcement is archived here

https://ctan.org/ctan-ann/id/mailman.1835.1575146287.2586.ctan-ann@ctan.org

and ends with a list of packages that may need to be installed:

If you install a minimal tex installation that previously installed oberdiek then to install the equivalent set of package's you may now need to install

attachfile2 epstopdf-pkg grffile hobsub iftex inputenx kvoptions luacolor magicnum makerobust oberdiek pdfcolmk pdftexcmds stringenc transparent zref

This list will be updated at each announcement if more packages are split off.