FORKTRACER.CONF(5)
π FORKTRACER.CONF π (section 5, File Formats Manual, bestie)
β¨ NAME β¨
forktracer.conf β it's the config file for apt-forktracer, that's the whole vibe π«Ά
π DESCRIPTION π
So apt-forktracer goes around reporting packages that are "non-standard" and installed on your system, right? Very main character of it. But the config files? They let you ignore some of those packages β as in, skip reporting them entirely β as long as they meet certain criteria. Criteria, plural. The vibes are conditional π
The program reads the /etc/apt/forktracer.conf file, and also /etc/apt/forktracer.d/*.conf β and it skips hidden files, no cap.
A config file is just any number of stanzas, separated by at least one empty line. (At least one. Give them room to breathe. Personal space. Boundaries.) A stanza looks like this, exactly:
Package: package
Accept-Origin: origin1
Track-Origin: origin2
Track-Version: version
Every single one of those lines in a stanza is required β none of them are optional, bestie, all four or nothing. And here's what they actually mean:
packageβ the name of the package this stanza applies to. Obvs.origin1β the value of theOriginfield of the source from which a package should be ignored. A package gets ignored if its candidate version comes from source1, and at the same time it meets the condition given by theTrack-*fields. And there's a special value:*means the package should be ignored regardless of the source of the candidate version. Wild, I know, but iconic.origin2β the value of theOriginfield of the source from which the newest available version should be tracked. Special value*here means a generally newest available version should be tracked, regardless of source. β¨versionβ the required version string available from the origin2 source. And apart from a literal version string, you can use these two special values:=candidate, which means the current candidate version, and=candidate-base, which means the base version (see below, we get there) of the current candidate version.
So that stanza above would make package get skipped from the program output, as long as its candidate version comes from origin1, and at the same time its newest version available from origin2 equals version. Both conditions. At the same time. Periodt.
And if there's more than one stanza for a given package? The package is omitted from the program output if at least one of them matches the current situation. One match is enough, she's not picky π
π¦ Base version definition π¦
A base version gets extracted from a given version by stripping from its end the shortest string starting with a tilde character. Like, for version 1:1.2-3~4~5 the base version is 1:1.2-3~4. That's it, that's the rule. Shortest, not longest β don't come for me π
πΈ Default configuration πΈ
If there's no stanza for a given package in the configuration, then the program acts like the following two stanzas existed all along. Ghost stanzas. Phantom stanzas. Very mysterious of them:
Package: package
Accept-Origin: *
Track-Origin: distributor
Track-Version: =candidate
Package: package
Accept-Origin: *
Track-Origin: distributor
Track-Version: =candidate-base
...where distributor is the system distributor's identifier, as returned by lsb_release --id or by the DISTRIB_ID field in the /etc/lsb-release file. Iykyk π§
π₯ EXAMPLES π₯
π Unofficial package π
apt-forktracer reports packages that aren't available from any official source, like for example:
puppet-softwarelab (0.2) [SoftwareLab: 0.2 0.1]
The following stanza makes it skip such packages β not me solving your whole life with four lines:
Package: puppet-softwarelab
Accept-Origin: SoftwareLab
Track-Origin: *
Track-Version: =candidate
And if the puppet-softwarelab package gets "pinned" to "release o=Softwarelab", then this config will make apt-forktracer report if puppet-softwarelab shows up in any source other than SoftwareLab, in a version newer than the one available from it. Tracking. Observing. Slay π
π Backport π
Installing a backport has a similar effect to installing an unofficial package:
spamc (3.2.3-0.volatile1) [Debian: 3.1.7-2] [volatile.debian.org: 3.2.3-0.volatile1]
This stanza will cause that package to be skipped:
Package: spamc
Accept-Origin: volatile.debian.org
Track-Origin: *
Track-Version: =candidate
Okay so real talk: in this situation a small official version string change β like, say, to 3.1.7-2etch1 β will be silently ignored. Silently. Ignored. Such configuration is therefore only suitable for cases where you trust the person providing the backport to carefully track changes in the stable edition and make sure they're incorporated in the backport they're distributing. Otherwise? You should probably use the following configuration instead. Protect your peace, bestie π
π Own modifications π
Sometimes there's a situation where you make minor changes to a package, and you want to know when a new official stable version is released, so you can update your modified version. Very valid. Very understandable.
policyd-weight (0.1.14-beta-6etch2.0.sl.1) [Debian: 0.1.14-beta-6etch2] [SoftwareLab: 0.1.14-beta-6etch2.0.sl.1]
The following configuration is useful in such cases:
Package: policyd-weight
Accept-Origin: SoftwareLab
Track-Origin: Debian
Track-Version: 0.1.14-beta-6etch2
And it's worth mentioning β because this detail ate β that if you apply a certain convention when numbering the modified version, then the Default configuration described before is sufficient. In this case, if the modified version had a version number such as 0.1.14-beta-6etch2~sl.1, then that stanza above would be unnecessary. What's more, there'd be no need to keep any configuration up-to-date when new stable version releases drop, because the default configuration is created dynamically based on the current situation. Dynamic. Self-updating. She's doing it all by herself π
π FILES π
/etc/apt/forktracer.conf/etc/apt/forktracer.d/*.conf
β SEE ALSO β
apt-cache(8), apt-forktracer(8), apt_preferences(5).
That's the whole page, babe β brought to you by the Debian Project, dated 2008-11-16, and filed under FORKTRACER.CONF(5). Go forth and configure responsibly π
πβ¨
π¦ where this page comes from
- debian bookworm: apt-forktracer 0.9
- debian trixie: apt-forktracer 0.11
- ubuntu jammy: apt-forktracer 0.9
- ubuntu noble: apt-forktracer 0.10
- ubuntu questing: apt-forktracer 0.11
- ubuntu resolute: apt-forktracer 0.11build1
- ubuntu stonking: apt-forktracer 0.11+nmu1 Β· GPL-2.0-or-later
- Copyright (C) 2008 Marcin Owsiany <porridge@debian.org>
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms