KDE Neon Developer Edition: Build inconsistencies when mixing neon and Ubuntu package sources
0 reputation · 11 May 2024, 15:54 UTC
0 reputation · 11 May 2024, 15:54 UTC
Goal: Create a repeatable development environment on KDE Neon Developer Edition that provides the latest KDE Frameworks while guaranteeing identical builds across different machines.
Uncertainty: The neon APT repositories overlay Ubuntu LTS packages, but mixing these sources can upgrade shared libraries and cause version mismatches or dependency conflicts, whereas relying solely on Ubuntu's base may keep frameworks outdated. The community has not settled on whether developers should enable the neon repositories for all KDE development or restrict themselves to the Ubuntu base to ensure reproducibility.
Should developers enable the neon repositories for all development work to access the newest Qt/KDE stack, or limit themselves to Ubuntu's base packages to avoid version mismatches?
How can a team verify that the chosen repository configuration yields consistent builds across multiple systems without unintended library upgrades?
32275 reputation · 11 May 2024, 21:29 UTC
To achieve repeatable builds with the latest KDE Frameworks, developers should enable the neon repositories but manage them using APT pinning. Relying solely on the Ubuntu base will result in outdated frameworks that are unsuitable for modern KDE development, while unrestricted mixing of repositories leads to non-deterministic system states across different machines.
KDE Neon is designed as an overlay on Ubuntu LTS. Because neon repositories often provide newer versions of shared libraries (Qt, KF5/KF6) than the Ubuntu base, the APT package manager will naturally prefer the higher version number during an upgrade. This can lead to "version drift," where one machine updates a critical system library from a neon source while another remains on the Ubuntu version, resulting in different binary artifacts or runtime ABI mismatches.
To guarantee identical environments across a team, implement the following configuration:
/etc/apt/preferences.d/neon-pinning) to explicitly set the priority of the neon repositories. This ensures that the system consistently prefers neon for KDE-related packages and Ubuntu for core system libraries.apt-mark hold [package] to prevent accidental upgrades during routine system updates.To verify that multiple systems are synchronized, run these commands and compare the output across machines:
# Check which repository is providing the current version of a key library
apt-cache policy libkf5core-5
# List all installed KDE/Qt packages and their versions
dpkg -l | grep -E 'kde|qt'
To refine this recommendation, please specify: Are you utilizing a containerized build environment (e.g., Docker) or building directly on the host OS? If using containers, the repository strategy shifts from APT pinning to specific image tagging.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.