meta_package_manager.managers.dnf module¶
- class meta_package_manager.managers.dnf.DNF[source]¶
Bases:
PackageManagerFedora’s RPM package manager.
mpmreads the inventory throughrepoqueryrather than the human-facing listing:--userinstalledfor packages installed on request (dependencies pulled in automatically are skipped) and--upgradesfor pending updates, both with a--queryformatthat joins the fields on a private___MPM___delimiter so summaries containing spaces stay splittable. Every call is forced--color=neverand--quietfor parseable output.Note
removerunsautoremove, so removing a package also drops the dependencies it leaves orphaned.searchmatches names only, with no exact or extended mode.The
DNF5andYUMsubclasses reuse everything here, differing only in the binary and forced arguments.Documentation:
Initialize
cli_errorslist.- maintenance_note: str | None = "DNF 4 is superseded by [dnf5](https://github.com/rpm-software-management/dnf5) (Fedora's default since Fedora 41) but stays maintained for the RHEL 8/9 family; mpm wraps `dnf5` as a separate manager."¶
A watch note about a still-maintained upstream whose activity is slowing or whose status is ambiguous, as a MyST markdown block.
Unlike
unmaintained, this is purely informational: the manager stays in the default selection and in the test matrices. It renders as a{note}admonition atop the manager’s documentation page, flagging upstreams worth keeping an eye on (a slow release cadence, superseded-but-still-shipped tools, a discontinued platform still under vendor support). May embed markdown links. Mutually exclusive withunmaintained: a confirmed-dead manager carries anunmaintained_messageinstead. Enforced bytest_maintenance_note.
- name: str = 'Fedora DNF'¶
Return package manager’s common name.
Default value is based on class name.
- homepage_url: str | None = 'https://github.com/rpm-software-management/dnf'¶
Home page of the project, only used in documentation for reference.
- logo: str | None = 'fedora'¶
Slug of the brand mark standing for this manager in the documentation.
Names an SVG vendored under
docs/assets/managers/, whose provenance and license are recorded indocs/assets/managers/logos.yaml. Inlined at the top of the manager’s page bymeta_package_manager._docs; a manager leaving it unset keeps the page’s default package glyph.Several managers legitimately share one slug, either because they wrap the same upstream (
brewandcask) or because the tool has no mark of its own and its ecosystem’s stands in (aptunder Debian’s swirl,cargounder Rust’s gear). Documentation-only, likehomepage_url: no CLI output reads it.
- platforms: frozenset[Platform] | Group | Platform | Iterable[Platform | Group] = frozenset({Platform(id='aix', name='IBM AIX'), Platform(id='almalinux', name='AlmaLinux'), Platform(id='alpine', name='Alpine Linux'), Platform(id='altlinux', name='ALT Linux'), Platform(id='amzn', name='Amazon Linux'), Platform(id='android', name='Android'), Platform(id='arch', name='Arch Linux'), Platform(id='buildroot', name='Buildroot'), Platform(id='cachyos', name='CachyOS'), Platform(id='centos', name='CentOS'), Platform(id='chromeos', name='ChromeOS'), Platform(id='clearlinux', name='Clear Linux OS'), Platform(id='cloudlinux', name='CloudLinux OS'), Platform(id='cygwin', name='Cygwin'), Platform(id='debian', name='Debian'), Platform(id='dragonfly_bsd', name='DragonFly BSD'), Platform(id='endeavouros', name='EndeavourOS'), Platform(id='exherbo', name='Exherbo Linux'), Platform(id='fedora', name='Fedora'), Platform(id='freebsd', name='FreeBSD'), Platform(id='generic_linux', name='Generic Linux'), Platform(id='gentoo', name='Gentoo Linux'), Platform(id='guix', name='Guix System'), Platform(id='haiku', name='Haiku'), Platform(id='hurd', name='GNU/Hurd'), Platform(id='ibm_powerkvm', name='IBM PowerKVM'), Platform(id='illumos', name='illumos'), Platform(id='kali', name='Kali Linux'), Platform(id='kvmibm', name='KVM for IBM z Systems'), Platform(id='linuxmint', name='Linux Mint'), Platform(id='mageia', name='Mageia'), Platform(id='mandriva', name='Mandriva Linux'), Platform(id='manjaro', name='Manjaro Linux'), Platform(id='midnightbsd', name='MidnightBSD'), Platform(id='netbsd', name='NetBSD'), Platform(id='nixos', name='NixOS'), Platform(id='nobara', name='Nobara'), Platform(id='openbsd', name='OpenBSD'), Platform(id='opensuse', name='openSUSE'), Platform(id='openwrt', name='OpenWrt'), Platform(id='oracle', name='Oracle Linux'), Platform(id='os400', name='IBM i'), Platform(id='parallels', name='Parallels'), Platform(id='pidora', name='Pidora'), Platform(id='pikaos', name='PikaOS'), Platform(id='raspbian', name='Raspbian'), Platform(id='rhel', name='RedHat Enterprise Linux'), Platform(id='rocky', name='Rocky Linux'), Platform(id='scientific', name='Scientific Linux'), Platform(id='slackware', name='Slackware'), Platform(id='sles', name='SUSE Linux Enterprise Server'), Platform(id='slitaz', name='SliTaz GNU/Linux'), Platform(id='solaris', name='Solaris'), Platform(id='sourcemage', name='Source Mage GNU/Linux'), Platform(id='sunos', name='SunOS'), Platform(id='tuxedo', name='Tuxedo OS'), Platform(id='ubuntu', name='Ubuntu'), Platform(id='ultramarine', name='Ultramarine'), Platform(id='void', name='Void Linux'), Platform(id='wsl1', name='Windows Subsystem for Linux v1'), Platform(id='wsl2', name='Windows Subsystem for Linux v2'), Platform(id='xenserver', name='XenServer')})¶
List of platforms supported by the manager.
Allows for a mishmash of platforms and groups of platforms. Will be normalized into a
frozensetofPlatforminstances at instantiation.
- default_sudo: bool = True¶
Built-in escalation default, used when
sudoisNone.Falseon the base: most managers install into user-writable trees and never need root. The system package managers whose privileged operations require root (apt,dnf,pacman,zypper, …) set this toTrueso theirbuild_cli(..., sudo=True)operations escalate out of the box, while staying switchable off throughsudo(--no-sudoor config) for rootless setups.
- requirement: str | None = '>=4.0.0'¶
Version requirement specifier.
Supports a comma-separated range of constraints (e.g.
">=1.20.0,<2.0.0"). A bare version string like"1.20.0"is treated as>=1.20.0.Parsed by
meta_package_manager.version.VersionRange.Defaults to
None, which deactivates version check entirely.
- DELIMITER = '___MPM___'¶
- property installed: Iterator[Package]¶
Fetch installed packages.
$ dnf repoquery --userinstalled --qf FORMAT acl___MPM___2.2.53-1.el8___MPM___Access control list utilities___MPM___x86_64 audit___MPM___3.0.7-4.el9___MPM___User space auditing tools___MPM___x86_64 audit-libs___MPM___3.0.7-4.el9___MPM___Dynamic auditing library___MPM___x86_64
- property outdated: Iterator[Package]¶
Fetch outdated packages.
$ dnf repoquery --upgrades --qf FORMAT acl___MPM___2.2.53-1.el8___MPM___2.6.53-1.el8___MPM___Access control list utilities___MPM___x86_64 audit___MPM___2.2.53-1.el8___MPM___2.5.53-1.el8___MPM___User space auditing tools___MPM___x86_64 audit-libs___MPM___2.2.53-1.el8___MPM___2.6.53-1.el8___MPM___Dynamic auditing library___MPM___x86_64
- property orphans: Iterator[Package]¶
Fetch packages installed as dependencies that nothing requires anymore.
$ dnf --color=never --quiet repoquery --unneeded libfoo-1.0.2-3.el9.x86_64 python3-extra-0:3.9.18-3.el9.noarch
- search(query, extended, exact)[source]¶
Fetch matching packages.
Caution
Search does not support extended or exact matching. So we return the best subset of results and let
meta_package_manager.manager.PackageManager.refiltered_search()refine them.$ dnf --color=never search usd Last metadata expiration check: 0:06:37 ago on Sun 03 Apr 2022. =================== Name Exactly Matched: usd ===================== usd.aarch64 : 3D VFX pipeline interchange file format =================== Name & Summary Matched: usd =================== python3-usd.aarch64 : Development files for USD usd-devel.aarch64 : Development files for USD ======================= Name Matched: usd ========================= lvm2-dbusd.noarch : LVM2 D-Bus daemon usd-libs.aarch64 : Universal Scene Description library
- install(package_id, version=None)[source]¶
Install one package.
$ sudo dnf --color=never --quiet --assumeyes install pip
- Return type:
- upgrade_all_cli()[source]¶
Generates the CLI to upgrade all outdated packages.
$ sudo dnf --color=never --quiet --assumeyes upgrade
- upgrade_one_cli(package_id, version=None)[source]¶
Generates the CLI to upgrade the provided package.
$ sudo dnf --color=never --quiet --assumeyes upgrade pip
- remove(package_id)[source]¶
Remove one package and one only.
$ sudo dnf --color=never --quiet --assumeyes remove pip
- Return type:
- remove_orphan(package_id)[source]¶
Remove one package, dropping dependencies it alone pulled in.
autoremovetargets the package plus the dependencies that were installed to satisfy it and are no longer required by anything else.$ sudo dnf --color=never --quiet --assumeyes autoremove pip
- Return type:
- cleanup_orphan()[source]¶
Remove every package installed as a dependency and no longer required.
$ sudo dnf --color=never --quiet --assumeyes autoremove
- Return type:
- cleanup_cache()[source]¶
Clear the cached packages and repository metadata.
$ sudo dnf --color=never --quiet clean all
- Return type:
- doctor_cli()[source]¶
Generates the CLI running the native self-diagnosis.
checkexamines the rpm database for problems (duplicates, obsoleted packages, unsatisfied dependencies) and exits non-zero when any is found.$ dnf --color=never --quiet check
- class meta_package_manager.managers.dnf.DNF5[source]¶
Bases:
DNFThe
dnf5rewrite of DNF, Fedora’s reference package manager since Fedora 41.Inherits every operation and parser from
DNF. Its forced arguments drop--color=never(dnf5rejects that option), keeping only--quiet.Initialize
cli_errorslist.- maintenance_note: str | None = None¶
A watch note about a still-maintained upstream whose activity is slowing or whose status is ambiguous, as a MyST markdown block.
Unlike
unmaintained, this is purely informational: the manager stays in the default selection and in the test matrices. It renders as a{note}admonition atop the manager’s documentation page, flagging upstreams worth keeping an eye on (a slow release cadence, superseded-but-still-shipped tools, a discontinued platform still under vendor support). May embed markdown links. Mutually exclusive withunmaintained: a confirmed-dead manager carries anunmaintained_messageinstead. Enforced bytest_maintenance_note.
- name: str = 'Fedora DNF5'¶
Return package manager’s common name.
Default value is based on class name.
- homepage_url: str | None = 'https://github.com/rpm-software-management/dnf5'¶
Home page of the project, only used in documentation for reference.
- logo: str | None = 'fedora'¶
Slug of the brand mark standing for this manager in the documentation.
Names an SVG vendored under
docs/assets/managers/, whose provenance and license are recorded indocs/assets/managers/logos.yaml. Inlined at the top of the manager’s page bymeta_package_manager._docs; a manager leaving it unset keeps the page’s default package glyph.Several managers legitimately share one slug, either because they wrap the same upstream (
brewandcask) or because the tool has no mark of its own and its ecosystem’s stands in (aptunder Debian’s swirl,cargounder Rust’s gear). Documentation-only, likehomepage_url: no CLI output reads it.
- pre_args: tuple[str, ...] = ('--quiet',)¶
Reset global options inherited from the
DNFabove.dnf5does not support--color=neverparameter.
- class meta_package_manager.managers.dnf.YUM[source]¶
Bases:
DNFYUM, the package manager DNF superseded.
On current Fedora and RHEL the
yumbinary is a wrapper arounddnf.mpmdrives it exactly asDNF, only the binary name differs.Initialize
cli_errorslist.- maintenance_note: str | None = 'The standalone [yum project is archived](https://github.com/rpm-software-management/yum); on modern RHEL and Fedora the `yum` command is a maintained compatibility alias for [dnf](https://github.com/rpm-software-management/dnf).'¶
A watch note about a still-maintained upstream whose activity is slowing or whose status is ambiguous, as a MyST markdown block.
Unlike
unmaintained, this is purely informational: the manager stays in the default selection and in the test matrices. It renders as a{note}admonition atop the manager’s documentation page, flagging upstreams worth keeping an eye on (a slow release cadence, superseded-but-still-shipped tools, a discontinued platform still under vendor support). May embed markdown links. Mutually exclusive withunmaintained: a confirmed-dead manager carries anunmaintained_messageinstead. Enforced bytest_maintenance_note.
- id: str = 'yum'¶
Package manager’s ID.
Derived by defaults from the lower-cased class name in which underscores
_are replaced by dashes-.This ID must be unique among all package manager definitions and lower-case, as they’re used as feature flags for the mpm CLI.
- name: str = 'Fedora YUM'¶
Return package manager’s common name.
Default value is based on class name.
- virtual: bool = False¶
Should we expose the package manager to the user?
Virtual package manager are just skeleton classes used to factorize code among managers of the same family.
- homepage_url: str | None = 'http://yum.baseurl.org'¶
Home page of the project, only used in documentation for reference.
- logo: str | None = 'fedora'¶
Slug of the brand mark standing for this manager in the documentation.
Names an SVG vendored under
docs/assets/managers/, whose provenance and license are recorded indocs/assets/managers/logos.yaml. Inlined at the top of the manager’s page bymeta_package_manager._docs; a manager leaving it unset keeps the page’s default package glyph.Several managers legitimately share one slug, either because they wrap the same upstream (
brewandcask) or because the tool has no mark of its own and its ecosystem’s stands in (aptunder Debian’s swirl,cargounder Rust’s gear). Documentation-only, likehomepage_url: no CLI output reads it.