Slackware tagfiles
What are Slackware tagfiles? What purpose do they serve these days? Essentially tagfiles provide a list of all packages in a Slackware package series (a, ap, d, e, etc) and the installation preference (add, skip, recommended or optional) of each package. If you are doing the suggested "full" or "terse" installation, then all packages are installed without regard for the tagfile preferences.
Tagfiles have two main purposes:
- Determines the prompt when doing an interactive installation using the "newbie" prompting mode.
- Controls the packages to install when doing a non-interactive installation using the "custom" or "tagpath" prompting modes.
Internally, the Slackware installer also uses the tagfile format for the "menu" and "expert" prompting modes where the choices you make for which packages to install in each package series are used to create custom tagfiles that then direct the actual installation.
In olden times, when package counts were in the mere hundreds, doing an
interactive installation was manageable but as of 2025, Slackware-current has
over 1700 packages so the "newbie" prompting mode is pretty much unusable.
Today, the simplest installation method is to use the "full" or "terse" mode,
perhaps having excluded select package series such as for KDE, Emacs (e),
texlive (t), kernel source (k), etc. After a full install, I use
slackpkg remove-template to remove a list of packages to clean up my
installation by deleting some packages I know I will never use.
So why use tagfiles? The case that made me look into using tagfiles was trying to install Slackware onto a device (Asus Eee PC 701) with only 4 GB of storage (and of that 4 GB, I wanted some usable space left over). By preparing a set of tagfiles with a minimal working installation and using the "custom" or "tagpath" prompting mode, I could perform the installation without having to manually choose packages and without filling the disk.
Another use case for tagfiles is if you want to semi-automate a non-full installation of Slackware to multiple machines. I imagine there are better ways to fully automate this process.
Tagfile format
Each of the 15 Slackware package series has a tagfile.
a/tagfile ap/tagfile d/tagfile e/tagfile f/tagfile k/tagfile kde/tagfile l/tagfile n/tagfile t/tagfile tcl/tagfile x/tagfile xap/tagfile xfce/tagfile y/tagfile
Each line of a tagfile has the format package_name:tag where "package_name" is the base name of the package and the "tag" is the installation preference for the package. The tag values are:
- ADD — Mandatory package to be added.
- SKP — Package to be skipped.
- REC — Recommended package, but not mandatory.
- OPT — Optional package.
aaa_base:ADD aaa_glibc-solibs:ADD aaa_libraries:ADD aaa_terminfo:REC acl:ADD acpid:REC attr:ADD bash:ADD bcachefs-tools:ADD bin:ADD btrfs-progs:REC bzip2:ADD coreutils:ADD cpio:ADD cpufrequtils:OPT cracklib:ADD cryptsetup:OPT dbus:REC ...
When using the installation "menu", "expert", "custom" or "tagpath" prompting modes, the "ADD" and "SKP" tags are used to non-interactively add or skip packages, and the "REC" and "OPT" tags will prompt the user whether to install the package or not. Note that there are no packages tagged with "SKP" by default.
Using the "custom" prompting mode
TBD
Using the "tagpath" prompting mode
TBD