Windows RPM Package Metadata Calculator Tool
Project description
winDNF
A DNF-like RPM simulator for Windows and other non-Linux systems.
winDNF allows you to download RPM packages and their dependencies from standard repositories without requiring a Linux environment. It is still a work in progress, and many things are not working as they should (see TODO. It is stable for basic usage though. It works by syncing multiple RPM repositories metadata and querying a single, local DB file in order to resolve packages metadata.
All configuration files and the internal database are stored in your
home directory at ~/.config/windnf/ by default:
- Config file:
~/.config/windnf/windnf.conf - Database:
~/.config/windnf/windnf.sqlite
These paths are editable in the configuration file. winDNF automatically creates this folder and the default config file on first run.
It also timidly tries to be NEVRA compliant, although with limited success (for now).
Installation
winDNF is distributed as a pip package:
pip install windnf
Simple as. No further configuration required.
Usage
windnf <command> [options] [arguments]
Run windnf <command> --help for command-specific help.
Common Commands
Repositories
- repoadd (ra) — Add or update a repository.
- repolink (rlk) — Link a source repository to a binary repository.
- repolist (rl) — List configured repositories.
- reposync (rs) — Download and refresh repository metadata.
- repodel (rd) — Remove one or more repositories.
Packages
- search (s) — Search for packages by name or pattern.
- info (i) — Show detailed package information (NEVRA).
- resolve (rv) — Resolve dependencies for one or more packages.
- download (dl) — Download packages or source RPMs.
Options (Overview)
Many commands support these common options:
-r, --repo, --repoid— Limit the operation to specific repositories-R, --recursive [DEPTH]— Perform recursive dependency resolution- Used without a value, resolves the full dependency tree
- When a number is provided, limits recursion depth (e.g.
--recursive 1for direct dependencies only)
--arch <arch>— Target a specific architecture (not yet supported)
Use --help with any command to see all available options.
Configuration
By default, winDNF stores all configuration and the database in:
~/.config/windnf/
Contents include:
windnf.conf— main configuration filewindnf.sqlite— internal package/repo database
Configurable options in windnf.conf:
downloader— method used to download packages (default:powershell)skip_ssl_verify— skip SSL verification when downloading (default: true)db_path— path to the internal database (default:~/.config/windnf/windnf.sqlite)download_path— default directory for downloaded packages (default:.)
You can edit these paths in the config file. winDNF creates missing folders and files automatically.
Environment
WINDNF_DEBUG=1
Enable verbose debug output and full tracebacks.
Notes
- winDNF does not modify your system.
- It reads repository metadata, resolves dependencies, and downloads RPMs only.
- Designed primarily for Windows or non-Linux systems where traditional package managers are not available.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file windnf-1.1.2.tar.gz.
File metadata
- Download URL: windnf-1.1.2.tar.gz
- Upload date:
- Size: 40.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cedc64133d3015c366db438b60424c26e87ce2664a25df4410bddb1ced510ba0
|
|
| MD5 |
7e3a63d3c156f79ba8a0f4835d823c3b
|
|
| BLAKE2b-256 |
d504cf935981a7aa82582f3694b2c5ffba3c72ebf720cdc2579f0b9bcfb7f2ef
|
Provenance
The following attestation bundles were made for windnf-1.1.2.tar.gz:
Publisher:
release.yml on maulusck/windnf
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
windnf-1.1.2.tar.gz -
Subject digest:
cedc64133d3015c366db438b60424c26e87ce2664a25df4410bddb1ced510ba0 - Sigstore transparency entry: 867740692
- Sigstore integration time:
-
Permalink:
maulusck/windnf@61193d351e0f5d158b052c7a3ae11dfdec1ccd09 -
Branch / Tag:
refs/tags/v1.1.2 - Owner: https://github.com/maulusck
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@61193d351e0f5d158b052c7a3ae11dfdec1ccd09 -
Trigger Event:
push
-
Statement type:
File details
Details for the file windnf-1.1.2-py3-none-any.whl.
File metadata
- Download URL: windnf-1.1.2-py3-none-any.whl
- Upload date:
- Size: 26.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c5475164f7b211a82c20b5d104826d769b1ba7d8127640766d2fa3440fad34f
|
|
| MD5 |
2968f18d9255ac03bf60191554ed31c1
|
|
| BLAKE2b-256 |
56d4c8c26078b87efe532e5a38ddeec4009b8f13e8210e03e16fc7d4e8b86d25
|
Provenance
The following attestation bundles were made for windnf-1.1.2-py3-none-any.whl:
Publisher:
release.yml on maulusck/windnf
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
windnf-1.1.2-py3-none-any.whl -
Subject digest:
9c5475164f7b211a82c20b5d104826d769b1ba7d8127640766d2fa3440fad34f - Sigstore transparency entry: 867740698
- Sigstore integration time:
-
Permalink:
maulusck/windnf@61193d351e0f5d158b052c7a3ae11dfdec1ccd09 -
Branch / Tag:
refs/tags/v1.1.2 - Owner: https://github.com/maulusck
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@61193d351e0f5d158b052c7a3ae11dfdec1ccd09 -
Trigger Event:
push
-
Statement type: