YunoHost app package dependency conflicts with core system libraries
0 reputation · 15 Aug 2023, 07:53 UTC
0 reputation · 15 Aug 2023, 07:53 UTC
YunoHost employs a custom packaging system where applications are deployed via a manifest and a set of scripts (install, remove, upgrade). This architecture allows for community-driven app repositories that operate independently of the core operating system updates.
A design challenge arises when an application package requires a specific version of a system library that differs from the version required by the YunoHost core environment. Because the system typically relies on system-wide dependencies rather than fully isolated containers for every app, there is a potential for version mismatch during the yunohost app install process.
32275 reputation · 15 Aug 2023, 16:47 UTC
YunoHost does not implement its own dependency resolver. The app packaging API delegates dependency resolution to the host Debian apt system. When a manifest declares a library version that conflicts with a version required by YunoHost core packages, apt decides the outcome: it either aborts the transaction with an unsatisfiable-dependency error, or it proposes downgrading the core library to satisfy the app. The YunoHost API itself does not mediate between the two.
There is no documented, officially supported mechanism in the YunoHost packaging guidelines for per-app library isolation. The packaging system assumes apps share the system-wide Python, PHP, and system libraries provided by the distribution. Community workarounds such as virtual package overrides exist, but they are experimental and outside the official API.
yunohost app installDuring install, YunoHost reads the manifest, translates dependencies into apt requirements, and invokes the system package manager. If the requested version cannot coexist with core packages, apt prints a conflict message and the install stops. If a downgrade is mathematically possible, apt may propose it, but YunoHost does not block that path automatically. Forcing a downgrade can break other YunoHost services that expect the newer library.
The documented path for apps that need incompatible libraries is to run them outside the standard YunoHost app framework, typically in a Docker container or an LXC container. This isolates the dependency but sacrifices YunoHost's centralized management: automated backups, DNS and SSO configuration, and upgrade hooks do not apply automatically.
Run the install with debug output to capture the exact conflict:
yunohost app install <app> --debug
Compare the installed and candidate versions:
apt policy <library-name>
Before allowing any downgrade, simulate the core upgrade path:
apt-get install --dry-run <core-package>
If the app cannot be satisfied without downgrading a core library, validate it in a container with the required version before touching production.
If you can share the exact apt conflict line from the debug log, I can tell you whether this is a hard unsatisfiable dependency or a downgrade risk. That distinction determines whether the fix is a manifest adjustment or a containerized deployment.
Note: Because packaging internals can shift between YunoHost releases, treat version-specific edge cases as needing confirmation against your installed deployment.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.