MiKTeX supports the notion of a scalable TeX system: users install just the TeX packages they need for their authoring tasks.
Fresh MiKTeX installations on Linux and macOS start with just the executables and some support files. This is called a bare TeX installation.
MiKTeX has the ability to install missing files on-the-fly. You can configure this feature in MiKTeX Console, or in a terminal window:
initexmf --set-config-value=[MPM]AutoInstall=yes
If you want to turn it on for all users:
sudo initexmf --admin --set-config-value=[MPM]AutoInstall=yes
From now on, whenever a package is required which hasn't been installed yet, the package installer comes into play.
For example, if you run a TeX engine (pdflatex
, xelatex
, lualatex
) the first time, you will see something like this:
...
======================================================================
starting package maintenance...
installation directory: ~/miktex/texmfs/user/install
package repository: https://ctanmirror/ctan/systems/win32/miktex/tm/packages/next/
visiting repository https://ctanmirror/systems/win32/miktex/tm/packages/next/...
repository type: remote package repository
loading lightweight database...
downloading https://ctanmirror/systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma...
173544 bytes, 459.29 KB/Sec
lightweight database digest: a59926f76b83fcc2ac8f84b6d3d792de
going to download 9376605 bytes
going to install 209 file(s) (1 package(s))
downloading https://ctanmirror/systems/win32/miktex/tm/packages/next/ltxbase.tar.lzma...
9376605 bytes, 4152.76 KB/Sec
extracting files from ltxbase.tar.lzma...
======================================================================
...
Here the LaTeX base package (ltxbase
) is downloaded and installed while you process a LaTeX document.