How to fix Breaks: package-name but version is to be installed in APT
This error occurs when apt detects a package conflict where a package "breaks" (is incompatible with) another package that is currently being installed. It typically happens with version mismatches in multiarch systems or when different package versions have incompatible dependencies, and can be resolved by installing matching versions or using aptitude for smarter conflict resolution.
Quick fix
Fixes Breaks: package-name but version is to be installed
sudo apt update- Update package lists and check the current package state
- Check available versions of the conflicting packages
- Install matching versions of both packages
- Use aptitude for smarter dependency resolution
sudo apt updateBreaks: package-name but version is to be installed
What this error means
The "Breaks" relationship in Debian/Ubuntu packages specifies that a package is fundamentally incompatible with specific versions of another package. When apt attempts to install a package that has a "Breaks" declaration against an already-installed package, it refuses to proceed because the installation would create an unstable system state. This is a safety mechanism that prevents incompatible packages from coexisting. The error message indicates that the version of the package you are trying to install "breaks" the package that is currently installed, and apt cannot resolve this without either upgrading the broken package to a compatible version or removing one of them.
Typical symptoms
- apt install or apt upgrade fails with the "Breaks: package-name but version is to be installed" message
- Package installation is blocked even though dependencies appear to be available
- Multiarch (32-bit and 64-bit) package installations fail with breaks conflicts
- Upgrading a package fails because it would break an already-installed package
- Different versions of the same package (e.g., amd64 and i386) are incompatible
Common causes
- Attempting to install a package version that is declared incompatible with an already-installed package
- Version mismatch in multiarch systems where amd64 and i386 versions of the same package require different dependency versions
- Third-party repositories providing packages with conflicting "Breaks" declarations against official packages
- Partial or interrupted upgrades leaving the system with incompatible package versions
- Installing multiple architectures of the same package without ensuring compatible versions across architectures
How to fix "Breaks: package-name but version is to be installed"
Start by updating your package lists to ensure you have the latest information:
sudo apt updateThen check what version of the conflicting package is currently installed:
apt show package-name
apt show package-name:archReplace "package-name" with the actual package name and "arch" with the architecture (e.g., i386, amd64) if applicable.
View all available versions of both the package you want to install and the package that is already installed:
apt policy package-name
apt policy other-package-nameThis will show you which versions are available and which one is currently installed. Look for versions that might be compatible.
Try installing both packages with specific versions that are compatible. First, find a version of the breaking package that does not conflict:
sudo apt install package-name=1.2.3 other-package-name=4.5.6Replace the version numbers with actual versions from your apt policy output. If both packages are available in compatible versions, apt should allow the installation.
If apt fails to resolve the conflict, try aptitude, which has a more sophisticated conflict resolver:
sudo aptitude install package-nameWhen aptitude encounters a conflict, it will suggest alternative solutions. You can accept the suggested solution by pressing "y" or explore other options. Aptitude may suggest upgrading the conflicting package to a compatible version, which apt would not consider.
If you are working with multiarch packages (e.g., both amd64 and i386 versions), ensure both versions are compatible:
sudo apt install package-name:amd64=VERSION-A package-name:i386=VERSION-BMake sure VERSION-A and VERSION-B are versions that do not break each other. Check the package metadata to see if the breaks declaration is version-specific.
If no compatible version exists, you may need to remove the conflicting package and reinstall both packages from scratch:
sudo apt remove --purge package-name other-package-name
sudo apt autoremove
sudo apt install package-name other-package-nameThis ensures a clean installation without version conflicts. Only use this approach if compatible versions cannot be found.
Some packages may be held (marked to prevent automatic updates), which can contribute to breaks conflicts:
sudo apt-mark showholdIf the conflicting packages are held, unhold them to allow upgrades:
sudo apt-mark unhold package-nameThen retry the installation or upgrade.
Advanced notes
The "Breaks" relationship is stricter than "Conflicts" in Debian packaging. While Conflicts allows dpkg to replace the old package with the new one, Breaks prevents installation entirely unless the breaking package explicitly replaces the broken one. This is why apt refuses to proceed. In multiarch systems, version compatibility is critical because both the amd64 and i386 versions of a package often share libraries through the dependency tree. If their breaks declarations are incompatible, apt cannot satisfy both architectures simultaneously. When investigating breaks conflicts, examine the package metadata using "apt show" or check the Debian package database at packages.debian.org to understand the exact version constraints. Sometimes, waiting for a newer version of the conflicting package to be released will resolve the issue. In enterprise environments with held packages or custom repositories, breaks conflicts are more common and may require pinning specific versions in /etc/apt/preferences or /etc/apt/preferences.d/ to maintain system stability.
Frequently asked questions
- What does "Breaks: package-name but version is to be installed" mean?
- The "Breaks" relationship in Debian/Ubuntu packages specifies that a package is fundamentally incompatible with specific versions of another package. When apt attempts to install a package that has a "Breaks" declaration against an already-installed package, it refuses to proceed because the installation would create an unstable system state. This is a safety mechanism that prevents incompatible packages from coexisting.
- How do I fix "Breaks: package-name but version is to be installed"?
- This error occurs when apt detects a package conflict where a package "breaks" (is incompatible with) another package that is currently being installed. It typically happens with version mismatches in multiarch systems or when different package versions have incompatible dependencies, and can be resolved by installing matching versions or using aptitude for smarter conflict resolution.
- What causes "Breaks: package-name but version is to be installed"?
- Attempting to install a package version that is declared incompatible with an already-installed package Version mismatch in multiarch systems where amd64 and i386 versions of the same package require different dependency versions Third-party repositories providing packages with conflicting "Breaks" declarations against official packages
- Is the "Breaks: package-name but version is to be installed" error serious?
- It is a medium-severity error โ more of a blocker than a risk. The steps above resolve it.
Official resources & further reading
- ๐APT Official Documentation
- ๐Debian Policy Manual - Package Relationships(Official Docs)