Some checks failed
Comprehensive CI/CD Pipeline / Build and Test (push) Failing after 2m1s
Comprehensive CI/CD Pipeline / Security Audit (push) Successful in 46s
Comprehensive CI/CD Pipeline / Package Validation (push) Successful in 1m7s
Comprehensive CI/CD Pipeline / Status Report (push) Has been skipped
7.4 KiB
7.4 KiB
Debian Dependency Analysis: deb-mock vs Fedora mock
Overview
This document analyzes the dependency structure of our deb-mock packages compared to Fedora's mock packages, showing how Debian's dependency system works.
Fedora Mock Dependencies (Your Analysis)
Core Package Dependencies
$ dnf repoquery --requires mock
/usr/bin/bash
/usr/bin/python3
coreutils
createrepo_c # Repository metadata generation
mock-configs
mock-filesystem = 6.1-1.fc42
mock-filesystem = 6.3-1.fc42
pigz
procps-ng
python(abi) = 3.13
python3-backoff
python3-distro
python3-jinja2
python3-pyroute2
python3-requests
python3-rpm
python3-templated-dictionary >= 1.5
shadow-utils
systemd
systemd-container
tar
usermode
util-linux
Subpackage Dependencies
$ dnf repoquery --requires mock-filesystem
shadow-utils
$ dnf repoquery --requires mock-scm
mock = 6.1-1.fc42
mock = 6.3-1.fc42
python(abi) = 3.13
$ dnf repoquery --requires mock-rpmautospec
mock = 6.1-1.fc42
mock = 6.3-1.fc42
python(abi) = 3.13
python3-rpmautospec-core
$ dnf repoquery --requires mock-lvm
lvm2
mock = 6.1-1.fc42
mock = 6.3-1.fc42
python(abi) = 3.13
Debian deb-mock Dependencies
1. deb-mock (Core Package)
Depends: ${python3:Depends}, ${misc:Depends},
python3-click (>= 8.0.0),
python3-yaml (>= 6.0),
python3-jinja2 (>= 3.0.0),
python3-requests (>= 2.25.0),
sbuild, schroot, debootstrap,
systemd-container,
deb-mock-filesystem,
deb-mock-configs
Recommends: deb-mock-plugins, ccache,
python3-pytest, python3-pytest-cov
Dependency Analysis:
${python3:Depends}- Automatic Python 3 dependencies (equivalent topython(abi) = 3.13)${misc:Depends}- Miscellaneous dependencies (equivalent tocoreutils,tar, etc.)python3-click- CLI framework (equivalent to Fedora'spython3-click)python3-yaml- YAML processing (equivalent to Fedora'spython3-yaml)python3-jinja2- Template engine (equivalent to Fedora'spython3-jinja2)python3-requests- HTTP library (equivalent to Fedora'spython3-requests)sbuild- Debian build tool (equivalent to Fedora's build tools)schroot- Chroot management (equivalent to Fedora's chroot tools)debootstrap- Bootstrap tool (equivalent to Fedora's bootstrap tools)systemd-container- Container management (same as Fedora)deb-mock-filesystem- Our filesystem package (equivalent tomock-filesystem)deb-mock-configs- Our configs package (equivalent tomock-configs)
2. deb-mock-filesystem (Filesystem Package)
Depends: ${misc:Depends}, shadow-utils
Dependency Analysis:
${misc:Depends}- Basic system dependenciesshadow-utils- User/group management (same as Fedora)
3. deb-mock-configs (Configuration Package)
Depends: ${misc:Depends}, deb-mock
Dependency Analysis:
${misc:Depends}- Basic system dependenciesdeb-mock- Depends on core package (equivalent tomock = 6.1-1.fc42)
4. deb-mock-plugins (Plugin Package)
Depends: ${misc:Depends}, deb-mock, python3-click
Dependency Analysis:
${misc:Depends}- Basic system dependenciesdeb-mock- Depends on core package (equivalent tomock = 6.1-1.fc42)python3-click- CLI framework for plugin commands
5. deb-mock-dev (Development Package)
Depends: ${misc:Depends}, deb-mock, python3-dev
Dependency Analysis:
${misc:Depends}- Basic system dependenciesdeb-mock- Depends on core package (equivalent tomock = 6.1-1.fc42)python3-dev- Python development headers (equivalent topython(abi) = 3.13)
6. deb-mock-cache (Cache Package)
Depends: ${misc:Depends}, deb-mock, ccache
Recommends: deb-mock-plugins
Dependency Analysis:
${misc:Depends}- Basic system dependenciesdeb-mock- Depends on core package (equivalent tomock = 6.1-1.fc42)ccache- Compiler cache (equivalent to Fedora'sccache)deb-mock-plugins- Recommended for full functionality
Dependency Comparison Table
| Fedora Package | Debian Equivalent | Dependencies |
|---|---|---|
| mock | deb-mock | Core dependencies + subpackages |
| mock-filesystem | deb-mock-filesystem | shadow-utils only |
| mock-scm | deb-mock-plugins | mock + python(abi) |
| mock-rpmautospec | deb-mock-plugins | mock + python(abi) + specific libs |
| mock-lvm | deb-mock-plugins | lvm2 + mock + python(abi) |
Key Differences
1. Dependency Types
- Fedora: Uses
Requires:for all dependencies - Debian: Uses
Depends:(required) andRecommends:(optional)
2. Automatic Dependencies
- Fedora: Lists all dependencies explicitly
- Debian: Uses
${python3:Depends}and${misc:Depends}for automatic dependency resolution
3. Version Constraints
- Fedora: Uses
= 6.1-1.fc42for exact versions - Debian: Uses
>= 8.0.0for minimum versions
4. Subpackage Relationships
- Fedora: Subpackages depend on specific versions of main package
- Debian: Subpackages depend on main package without version constraints
Dependency Resolution Examples
Installing Core Package
# Fedora
dnf install mock
# Installs: mock + mock-filesystem + mock-configs + all dependencies
# Debian
apt install deb-mock
# Installs: deb-mock + deb-mock-filesystem + deb-mock-configs + all dependencies
Installing with Plugins
# Fedora
dnf install mock mock-scm mock-rpmautospec mock-lvm
# Installs: mock + all subpackages + specific dependencies
# Debian
apt install deb-mock deb-mock-plugins
# Installs: deb-mock + deb-mock-plugins + all dependencies
Minimal Installation
# Fedora
dnf install mock mock-filesystem
# Installs: core + filesystem only
# Debian
apt install deb-mock deb-mock-filesystem
# Installs: core + filesystem only
Build Dependencies
Fedora Build Dependencies
BuildRequires: python3-setuptools
BuildRequires: python3-pytest
BuildRequires: python3-yaml
# ... etc
Debian Build Dependencies
Build-Depends: debhelper (>= 13), dh-python, python3-all,
python3-setuptools, python3-pytest, python3-yaml,
python3-click, python3-jinja2, python3-requests
Dependency Chain Analysis
Fedora Chain
mock → createrepo_c → createrepo_c-libs → libmodulemd
mock → mock-filesystem → shadow-utils
mock → mock-scm → mock + python(abi)
Debian Chain
deb-mock → deb-mock-filesystem → shadow-utils
deb-mock → deb-mock-configs → deb-mock
deb-mock → deb-mock-plugins → deb-mock + python3-click
deb-mock → sbuild → build-essential
deb-mock → schroot → shadow-utils
Conclusion
Yes, all Debian control files have dependencies! The dependency system in Debian is:
- More Flexible: Uses
Depends:andRecommends:instead of justRequires: - More Automatic: Uses
${python3:Depends}and${misc:Depends}for common dependencies - More Version-Friendly: Uses
>=constraints instead of exact versions - More Modular: Subpackages can depend on main package without version constraints
Our deb-mock packaging successfully mirrors Fedora's dependency structure while leveraging Debian's more flexible dependency system!