15.3 Metapackages and Custom Repositories

Key Takeaways

  • A metapackage is an essentially empty package whose Depends list pulls in a whole toolset — installing kali-linux-large is really installing its dependency tree
  • kali-linux-default is the toolset of a standard Kali install, kali-linux-large adds most other well-maintained tools, kali-linux-everything installs every package Kali ships, and kali-tools-top10 pulls in the ten most popular tools
  • equivs-build turns a hand-written control file into a proper .deb, the fastest way to build an internal metapackage
  • reprepro hosts a custom APT repository from a directory of .deb files using a conf/distributions config, and can auto-process uploads through an incoming queue
  • An internal metapackage plus an internal reprepro repository lets you version and deploy your organization's standard Kali toolset like any other package
Last updated: July 2026

Kali packages 600+ tools, but a default install ships only a subset of them and no two engagements need the same set. A wireless team wants kali-tools-wireless; a stripped-down cloud box wants far less than the full desktop. Kali solves this with metapackages, and the exam expects you to know what they are, the names of the major ones, and how to build and host your own.

What a Metapackage Is

A metapackage is a package that contains (almost) no files of its own. Its entire payload is the Depends: line in its control metadata: installing it forces APT to install everything it depends on, and removing it lets apt autoremove clean the whole set back out. Inspect one yourself:

apt-cache depends kali-linux-default
apt-cache show kali-linux-default | grep -E '^(Package|Depends)'

You will see a long dependency list and no meaningful file list. This is pure package-management leverage: one name stands in for a curated toolset.

The kali-linux-* and kali-tools-* Families

MetapackageContents
kali-linux-coreMinimal base toolset for chroots, containers, WSL
kali-linux-headlessThe default toolset minus anything needing a GUI — the layer that carries most of the CLI tools
kali-linux-defaultheadless plus kali-tools-top10 and the GUI tools — what the standard desktop image installs, and the baseline most people mean by "Kali"
kali-linux-largeDefault plus the majority of Kali's other maintained tools; used for the fuller offline images
kali-linux-everythingEvery package Kali ships — huge; for mirrors and throwaway analysis VMs, not laptops
kali-tools-top10The ten most popular tools (nmap, Metasploit, Burp Suite, etc.)
kali-tools-<category>Per-category sets: kali-tools-web, kali-tools-wireless, kali-tools-forensics, kali-tools-gpu, and more

Two exam angles here. First, know the ordering: core ⊂ headless ⊂ default ⊂ large ⊂ everything. Second, know the practical use: a minimal install (kali-linux-core) plus exactly the category sets you need is the standard recipe for slim, purpose-built Kali machines, and installing kali-linux-large is the one-command answer to "my ISO is missing tools."

Building Your Own Metapackage with equivs

Your organization will want its own set — say, the corporate toolset plus internal scripts. The equivs package exists precisely for building dependency-only packages without learning full Debian packaging:

apt install -y equivs
equivs-control acme-kali-tools

This writes a template control file. Edit it:

Section: misc
Priority: optional
Standards-Version: 4.5.0
Package: acme-kali-tools
Version: 1.0
Maintainer: SecOps <secops@example.com>
Depends: kali-linux-default, kali-tools-web, openssh-server
Description: Acme Corp standard Kali toolset
 Metapackage pulling in the approved toolset for engagement machines.

Build and install:

equivs-build acme-kali-tools          # produces acme-kali-tools_1.0_all.deb
apt install ./acme-kali-tools_1.0_all.deb

Because it is a real package, it shows up in dpkg -l, upgrades cleanly when you bump Version:, and its dependencies are enforced by APT. The lower-level alternative is dpkg-deb --build against a directory tree containing a hand-written DEBIAN/control file — same result, more manual steps. Know that both exist. Note that Kali Linux Revealed itself does not use equivs: its worked example builds a package the full Debian way, creating the payload directory, running dh_make --native (package type indep), editing debian/control, listing what goes where in debian/<package>.install, and building with dpkg-buildpackage -us -uc.

Hosting a Custom Repository with reprepro

Copying .deb files around with dpkg -i scales as badly as SSH loops do. The professional move is an internal APT repository: one server holds your packages, and every Kali box installs them with plain apt. The book's tool for this is reprepro, which manages a repository as a plain directory tree you can serve with any web server.

apt install -y reprepro apache2
mkdir -p /srv/repo/conf

Create /srv/repo/conf/distributions:

Origin: Acme Corp
Label: acme-internal
Codename: kali-rolling
Architectures: amd64 all
Components: main
Description: Acme internal Kali packages
SignWith: ABCD1234

Codename anchors the suite your clients will request (matching kali-rolling keeps things simple); Architectures and Components define the repo layout; SignWith names the GPG key reprepro uses to sign the Release file, because clients will (and should) verify signatures just as they do against Kali's own GPG-signed repositories.

Add packages and publish:

reprepro -b /srv/repo includedeb kali-rolling acme-kali-tools_1.0_all.deb
reprepro -b /srv/repo list kali-rolling

reprepro copies the .deb into a pool, regenerates the Packages index, and re-signs Release. Point Apache at /srv/repo (excluding conf/ and db/) and clients consume it with a line in /etc/apt/sources.list.d/acme.list:

deb http://repo.acme.internal/ kali-rolling main

plus your public key in their keyring (modern style: a signed-by= option pointing at a keyring file). One apt update && apt install acme-kali-tools on any machine now deploys your entire standard toolset.

The Incoming Queue

For teams, reprepro supports an incoming queue: a drop directory where CI systems or developers upload packages, processed automatically according to conf/incoming:

Name: default
IncomingDir: incoming
TempDir: tmp
Allow: kali-rolling

reprepro -b /srv/repo processincoming default validates each upload (checksums, signatures if required) and files it into the named distribution — no one needs shell access to the repository layout itself.

APT Pinning: Preferring Your Repository

One last operational detail: when your internal repo carries a forked package that also exists in Kali's repositories, APT normally picks the highest version number. To guarantee your repository wins (or to keep your metapackages from being shadowed), use APT pinning in /etc/apt/preferences.d/acme:

Package: *
Pin: origin repo.acme.internal
Pin-Priority: 900

The default priority is 500, so 900 makes your origin authoritative; verify the result with apt-cache policy somepackage, which shows the candidate version and every pin that influenced the choice. Pinning plus the kali1 version suffix gives you two independent levers — version ordering and priority — for controlling exactly which build of a package your fleet runs.

Putting It Together

The pattern to remember for the exam: metapackage defines the toolset, reprepro distributes it, APT enforces it. Version 1.1 of acme-kali-tools that adds a new tool becomes a fleet-wide upgrade via a routine apt upgrade — the same mechanism Kali itself uses to evolve the kali-linux-default set on the rolling release.

Test Your Knowledge

Your team needs a single apt-installable unit that pulls in kali-linux-default plus your approved category toolsets, with no files of its own. What should you build?

A
B
C
D
Test Your Knowledge

In reprepro, what is the purpose of the conf/distributions file?

A
B
C
D