DNF5.CONF-VENDORPOLICY-V1_0(5)
π dnf5.conf-vendorpolicy-v1_0 β DNF5 Vendor Change Policy File Reference - v1.0 π
okay bestie, sit down, hydrate, and let's talk about dnf5.conf-vendorpolicy-v1_0(5) β the manual page for the v1.0 flavour of the DNF5 vendor change policy config files. this is the glow-up era of vendor policy files, and you're gonna understand every single line of it. no cap. π¦
β¨ DESCRIPTION β¨
so like, this doc describes the structure and syntax of DNF5 Vendor Change Policy configuration files β specifically the ones using the version 1.0 format. that's it, that's the assignment. π
and if you want the general tea about vendor change policy files overall (not just the v1.0 specifics), that lives in DNF5 Vendor Change Policy File Reference <#dnf5-vendor-change-policy-label>. go read that too, bestie, it's giving context. π
πΈ FILE STRUCTURE πΈ
π Required Fields
version
it's a String. a little stringy string. π
this is the configuration file format version.
for this format, it must be set to "1.0". not "1.1", not "2.0", not vibes. "1.0". periodt.
this field is mandatory and must be specified at the top level of the TOML file. don't be shy with it, don't nest it, just put it up top where everyone can see it.
Example:
version = '1.0'
Note: for the configuration file to have any effect on vendor change policy, it must define vendor mappings using one of the allowed configurations (see below). if the file contains no vendor lists, it will still be loaded and its version will still be validated β but it won't define any rules and won't affect vendor manager behavior. so like... it shows up, it gets checked at the door, and then it just stands there. π
π§ Vendor Mapping Definition
the file can use one of the following vendor definition methods. only one method can be used. pick your lane, bestie, you cannot have both. π
Option 1: Separate Lists (outgoing + incoming)
[[outgoing_vendors]]
an Array of tables.
list of vendors from which changes are allowed (the outgoing package vendors β the ones getting swapped out π).
[[incoming_vendors]]
an Array of tables.
list of vendors to which changes are allowed (the incoming package vendors β the ones sliding in β¨).
Note:outgoing_vendorsandincoming_vendorsmust be either both present or both missing. it's a package deal. literally. π«Ά
Important: a vendor change during package replacement is allowed only if both conditions are met simultaneously: - The vendor of the outgoing (installed) package is listed inoutgoing_vendors- The vendor of the incoming (new) package is listed inincoming_vendors
Option 2: Equivalent Vendors
[[equivalent_vendors]]
an Array of tables.
list of vendors that are mutually equivalent. changes are allowed in both directions between all vendors in this list. reciprocal. iconic. π
Note: you cannot combineequivalent_vendorswithoutgoing_vendorsorincoming_vendors. however,equivalent_vendorsis actually just a shorthand notation β it's equivalent to listing the same vendors in bothoutgoing_vendorsandincoming_vendors. so it's not special, it's just efficient. main character energy but make it DRY. π
π Vendor Entry Fields
each entry in [[outgoing_vendors]], [[incoming_vendors]], or [[equivalent_vendors]] can contain the following fields:
vendor β String
Required field. no skipping, no negotiating.
the vendor name or pattern for matching. π
comparator β String
Optional field.
the matching method to use when comparing vendor strings.
Default: "EXACT"
supported values:
"EXACT"- exact match (case-sensitive)"IEXACT"- exact match (case-insensitive)"GLOB"- glob pattern (case-sensitive)"IGLOB"- glob pattern (case-insensitive)"REGEX"- regular expression (case-sensitive)"IREGEX"- regular expression (case-insensitive)"CONTAINS"- contains string (case-sensitive)"ICONTAINS"- contains string (case-insensitive)"STARTSWITH"- starts with (case-sensitive)"ISTARTSWITH"- starts with (case-insensitive)"ENDSWITH"- ends with (case-sensitive)"IENDSWITH"- ends with (case-insensitive)"NOT_EXACT","NOT_IEXACT","NOT_GLOB","NOT_IGLOB","NOT_CONTAINS","NOT_ICONTAINS"- negated variants
the I prefix is your bestie for "case-insensitive" and NOT_ is your bestie for "literally the opposite." memorize the pattern and you're set. π§ β¨
exclude β Boolean
Optional field.
if true, the vendor is excluded from the rule. this is useful for defining exceptions to more general rules. π₯
rules (vendor entries) are processed in the order they are defined. this means an exclude rule must appear before the rules from which the vendor should be excluded. order matters, bestie, this is not a democracy. π
Default: false
π EXAMPLES π
Example 1: Allow change from "VendorA" to "VendorB"
this example shows the minimal required configuration, allowing a change from "VendorA" to "VendorB", but not the reverse.
version = '1.0'
[[outgoing_vendors]]
vendor = 'VendorA'
[[incoming_vendors]]
vendor = 'VendorB'
one-way street. gorgeous. π¦
Example 2: Allow change from any vendor to "My Trusted Vendor"
this example shows allowing a change from any vendor to "My Trusted Vendor", but not the reverse (requires an explicit rule for allowing all vendors).
version = '1.0'
[[outgoing_vendors]]
vendor = ''
comparator = 'CONTAINS'
[[incoming_vendors]]
vendor = 'My Trusted Vendor'
yes, that empty string '' with comparator = 'CONTAINS' is how you say "literally everyone." it's giving chaos but make it intentional. π
Example 3: Equivalent vendors
this example shows vendors that are mutually equivalent, allowing changes in both directions.
version = '1.0'
# All following vendors are mutually equivalent
[[equivalent_vendors]]
vendor = 'Fedora Project'
[[equivalent_vendors]]
vendor = 'Red Hat'
comparator = 'ISTARTSWITH'
[[equivalent_vendors]]
vendor = 'CentOS'
comparator = 'ISTARTSWITH'
friend group energy. everyone's cool with everyone. π«Ά
Example 4: Equivalent vendors with an exclusion
this example shows a vendor policy for SUSE-related vendors with an exclusion for openSUSE Build Service.
version = '1.0'
# All following vendors are mutually equivalent except excluded ones
[[equivalent_vendors]]
vendor = 'openSUSE Build Service'
comparator = 'ISTARTSWITH'
exclude = true
[[equivalent_vendors]]
vendor = 'SUSE'
comparator = 'ISTARTSWITH'
[[equivalent_vendors]]
vendor = 'openSUSE'
comparator = 'ISTARTSWITH'
see how the exclude = true entry comes first? yeah. order. matters. the exclusion has to be declared before the rules it's excluding from. π₯
π SEE ALSO π
- DNF5 Vendor Change Policy File Reference <#dnf5-vendor-change-policy-label>
- DNF5 Vendor Change Policy File Reference - v1.1 <#dnf5-vendor-change-policy-v1-1-label>
dnf5.conf(5), DNF5 Configuration Reference <#dnf5-conf-label>
π Author
See AUTHORS.md in dnf5 source distribution. (yes bestie, go read the credits, they deserve it π)
π Copyright
Contributors to the dnf5 project.
and that's the whole page, bestie!! β¨ this was the dnf5 manual, DNF5.CONF-VENDORPOLICY-V1_0(5) β dated Sep 24, 2026, and honestly? iconic of it. go write some vendor policies and slay. π
πΈπ¦
π¦ where this page comes from
- fedora 44: dnf5 5.4.6.0-1.fc44 Β· GPL-2.0-or-later
- fedora 44: dnf5 5.4.6.0-1.fc44 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms