Occasionally, when I'm installing stuff, I get an error like the following:
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
package1 : Depends: package2 (>= 1.8) but 1.7.5-1ubuntu1 is to be installed
E: Unable to correct problems, you have held broken packages.
How can I resolve this?
APT is a package management system for Debian and other Linux distributions based on it, such as Ubuntu. For the most part, APT is easy to use for installing, removing, and updating packages. In rare instances, often when you are mixing in third-party dependencies, there is a chance that
apt-get
may end up giving you an error telling you that a package installation could not be completed.Solutions:
It is always a good idea to back up configuration files like
/etc/apt/sources.list
, so you can revert the changes if needed.If the
error
shows something like this:<some-package>: Depends: <other-package> (= version) but this-version is to be installed
Then make sure that the
restricted
anduniverse
repositories are enabled. Hit Alt+F2, typesoftware-properties-gtk
and hit Enter.Under
Ubuntu Software
tab, enable all the repositories.One possible cause of unmet dependencies could be corrupted package database, and/or some packages weren’t installed properly. To fix this problem, hit Alt+Ctrl+T to open terminal and try to run one of the following commands:
or,
apt-get clean
clears out the local repository of retrieved package files (the .deb files). It removes everything but the lock file from /var/cache/apt/archives/ and /var/cache/apt/archives/partial/.apt-get autoclean
clears out the local repository of retrieved package files, but unlikeapt-get clean
, it only removes package files that can no longer be downloaded, and are largely useless.One of the most basic fixes to resolve dependencies problems is to run:
The
-f
here stands for “fix broken”.Apt
will attempt to correct broken dependencies. If you manually installed a package that had unmet dependencies,apt-get
will install those dependencies, if possible, otherwise it may simply remove the package that you installed in order to resolve the problem.Then run:
Then run this again:
If the output is:
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
That means it failed.
Next solution is to run:
If it shows any held packages, it is best to eliminate them. Packages are held because of dependency conflicts that
apt
cannot resolve. Try this command to find and repair the conflicts:If it cannot fix the conflicts, it will exit with:
0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.
Delete the held packages one by one, running
dist-upgrade
each time, until there are no more held packages. Then reinstall any needed packages. Be sure to use the--dry-run
option, so that you are fully informed of consequences:Since removing the package you are trying to install may not be ideal, you might also try finding a repository that has the packages you need to satisfy the dependencies.
Finally, if all else fails, you can attempt to satisfy the dependencies yourself, either by finding and installing the necessary packages, or by installing them from source and then creating “deb” packages for them.
Disable/Remove/Purge PPAs:
PPAs (Personal Package Archive) are repositories hosted on Launchpad. You can use PPAs to install or upgrade packages that are not available in the official Ubuntu repositories.
One of the most common causes of unmet dependencies are PPAs, especially when used to upgrade the existing package in Ubuntu repositories. To solve the problem you have three options: disable, purge (revert back to original package in Ubuntu repositories) or remove PPA.
Disable:
Disabling a PPA means no more updates for the packages installed from that PPA. To disable a PPA: Open
Software Center > Edit > Software Sources
Or,Hit Alt+F2 and run
software-properties-gtk
.Click on
Other Software
tab, you'll see that each PPA have two lines here, one for the compiled packages and one for the source,Uncheck
both lines to disable a PPA. Here you can also add and remove PPAs.Purge:
Purging a PPA means, downgrading the packages in the selected PPA to the version in the official Ubuntu repositories and disabling that PPA. PPA Purge does exactly that. To install PPA Purge run the following command:
But, considering the question
apt
is broken, the above command will fail. So use this commandTo use PPA Purge:
If 'ppa-purge' command fails for some reason, you can't run 'ppa-purge' again unless you re-enable the PPA (To enable the PPA follow the same steps as disabling a PPA and
Check
the both lines of a particular PPA to enable it).Note:
PPA Purge
doesn't remove PPAs (may be in future), So you'll have to manually remove the PPA.Remove:
If the package installed from a PPA doesn't exist in official Ubuntu repositories then using
PPA Purge
is not recommended, because there's nothing to be downgraded andPPA Purge
wouldn't delete it either. To remove a PPA and installed packages run the following commands: (Ignore the first command if you don't want to remove the installed packages)Alternatively you can use
Y PPA Manager
to disable/remove/purge PPA's (Details at the end of answer).Preventive Measures:
So how can we avoid this from happening in the first place?
Keep Ubuntu Up to date. Ubuntu automatically notifies when updates are available, you can also check for available updates by clicking on
Session Indicator
in Unity panel:Or, Hit Alt+Ctrl+T to open terminal and run following commands:
Update: Synchronizes your list of available packages with the servers in source repositories. Upgrade: Downloads & installs any newer versions of your installed packages.
Remove duplicate PPAs.
Y PPA Manager
(installation guide at the end of answer) can easily scan and remove duplicate PPAs.y-ppa-manager
to open Y PPA Manager.Advanced
.Scan and remove duplicate PPAs
and click OK.Getting Help:
When asking for help on Askubuntu or any other help forum, you should include the output of the following commands in your question:
Output of actual error:
This will show your sources.list:
This will show the list of PPAs (If any):
Additional Sources:
Y PPA Manager: Y PPA Manager is an one stop shop for all of your PPA needs.
Here are some of its features:
To install
Y PPA Manager
, open terminal by hitting Alt+Ctrl+T and run following commands:Considering the question,
apt
is broken, so use these commands insteadand
32 Bit:
64 Bit:
Is it really broken?
Try running the following command and try to reinstall the software you were trying to install
Pre-Perfomance Steps
Backing up
Back up the following files:
/etc/apt/sources.list
/var/lib/dpkg/status
To do so, use these commands
and
Clearing your apt-cache
apt
keeps a cache of recently downloaded packages to save bandwidth when it is required to be installed. This can be counter-productive in some casesNow, to clean it, you have two options
This will remove all cached packages belonging to the folder
/var/cache/apt/archives/
and/var/cache/apt/archives/partial
except the .lock files. This is recommendedThis scans the folders
/var/cache/apt/archives/
and/var/cache/apt/archives/partial
and checks if the package is still in the repositories and removes the ones that aren'tFixing dependencies
Using apt's fix-broken mode
This will cause apt to scan for missing dependencies and fix them from the repositories
If the output states that nothing new was installed or upgraded, it has failed.
Checking if all required sources are enabled
Type
gksu software-properties-gtk
and you'll get this windowMake sure all sources are enabled.
next, go to the Other software tab and check if the required PPAs for the software to be installed are there and are enabled. Also, try disabling some PPAs which might be having broken packages
now, run
sudo apt-get update
Try installing the software now
Selecting a better server to download from
Type
gksu software-properties-gtk
and you'll get this windowClick the Download from the Dropdown box and select other
Click Select Best Server
Run
sudo apt-get update
Try installing the software
also, try using
sudo apt-get install -f
PPA Purge
This is a tool used to purge broken/unwanted ppa's and their applications along with it
To install it, run
But, Considering the question
apt
is broken so the above command will fail. So use this commandNow use ppa purge
Y-PPA Manager
Y-PPA Manager is a gui app that helps you manage PPA's and various problems assosiated with it
To install it
and
and
Considering the question,
apt
is broken so, use these command insteadand
32 Bit:
64 Bit:
Now type in
y-ppa-manager
You'll be presented with this window
Double click on advanced, and you'll get this window
Do the following Tasks outlined in black
Prevention is better than cure
It is better to prevent than to search for this question on AskUbuntu :D
So, here are the guidelines to keep you safe
Keep your system up-to-date
always run the following command regularly
or, you can always use Update Manager with this command
Using only trusted PPA's
Only use PPA's meant to be used on Ubuntu also, only use PPA's with trusted sources. Infact, the package might already be in the ubuntu repositories
Backing up when things are good and restoring it later
For this you need Y-PPA-Manager. The steps to install it are given above.
Run this command to open Y-PPA-Manager
You'll be presented with this window
Double click on advanced, and you'll get this window
Run this:
You'll be asked to save a tar.gz file with a dialog similar to the one below. Save it in another partition or a safe place
Later, when you need to restore it again, follow similar steps and when you get to the advanced dialog,Click on this:
You'll be asked to restore from the previous backup which you saved before with a dialog similar to the one below
Still not working?
Package dependency errors are not always generic and depends on the package to be installed.
If following all the steps given to fix the error does not work for you, you can always ask on Ask Ubuntu
Here are some commands which you need to post the output of
and
and
(Thanks to Basharat Sial)
There are also other files/commands that you need the output of that might be error specific, and users will probably prompt you in the comments to post the file/command.
These answers so far are focused on how to help the system automagically resolve such an issue, mostly hoping that it resolves itself, but not focused on understanding how to investigate dependencies. It's important to try making sure your package lists are up to date first; always make sure a simple update or clearing of the cache doesn't resolve the issue before digging deeper. If everything behind the scenes is working as it should, however, it's paramount to understand dependencies. Sometimes the layers of dependencies can seem overwhelming, but the concept is simple and key to understanding how software is installed/uninstalled in an Ubuntu system.
I highly recommend aptitude to anyone using a .deb based system, such as Debian, Kali, Ubuntu or any of its derivatives. It provides an interface to browse through layers of dependencies, including recommended and suggested packages. It is an invaluable tool for when apt-get doesn't offer a solution to a conflict and for visualizing dependencies in general. (Synaptic is also available in Ubuntu.)
Aptitude's conflict resolver will walk you through the possible combinations of installed/removed/upgraded/etc packages that satisfy your requested actions without conflict. This can often be successful even when apt is unable to find a solution. As an Ubuntu user, situations don't normally arise that require you to investigate why a particular package is being installed or causing a conflict, but it's almost inevitable as you use the system more.
package1 : Depends: package2 (>= 1.8) but 1.7.5-1ubuntu1 is to be installed
Explanation of the message:
Fix
There is NO single right answer for this question and there is NO simple answer.
There are many scenarios why this can happen and one has to investigate all options and try to solve the preconditions that lead to this error.
Scenario A:
All the repositories that you have access to don't have package2 in version >= 1.8, so you will have to find a repository that does. If you are not able to find a repository with versions >=1.8 then you might have to build and install package2 from source. And then try to install package1.
If you want to know how to build a package from source, check other questions/answers or post a new one.
Scenario B:
The repositories do include package2 in a version >= 1.8 but the package manager still wants to install an older version (1.7.5).
The reason for this may be that the later versions of package2 where built by some newer technology that is not supported by other packages that you already have installed.
This might not be possible to fix at all. You can try to use apt or synaptic and look for all versions of the package2 that are available in the repositories, and try to install a specific version >= 1.8
If you have other incompatible packages and you do this, you will get a list of similar error messages for all the other packages that prevent the installation of package2>=1.8.
In this case, you have a bigger problem. You wanted to install package1, which needs package2 to be >= 1.8, but package2 in version >=1.8 requires package3 to be in version >= 6.7 and you have package3 version 6.3
The thing is that the package manager (APT) tries to solve all these dependencies automatically if it is possible. When it says that it is not possible (and issues a message like in the question), then you should trust it.
If you decide not to trust the package manager and if you are sure that you will not have problems, then you can try to force install the specific needed versions of all packages, one by one, and hope to be OK.
Beware, doing this for system packages can create serious problems. You can lock yourself out of the system, block critical services etc.
Scenario C:
No matter the reasons for the problem, you can always setup for manual compilation and build the needed package and all of it's dependencies in the exact needed versions from source. With this option you can keep what you built in a separate directory and out of the system path so that it will not create conflicts with the system. This is probably the cleanest solution, and sometimes can be faster to do.
Scenario D:
Package manager has access to out-dated information about packages and therefor cannot find a solution. Look in the other answers.
Scenario E:
Package manager has a bug in the dependency resolution code.
You have to investigate that this is really the case, and then issue a bug request.
...
Scenario Z:
There might be other scenarios.
For example package maintainers could have been wrong and did not check that package1 would work even with version of package2 < 1.8 and in the specification they set wrong dependencies.
These methods need to be followed whenever you get eror regarding Unmet Dependencies
After following the instructions try installing the software. Atleast one of these methods should work for you
1. Before trying any new command or adding any new ppa try this
Cleaning up of the apt cache:
Cleaning up of any unused dependencies:
Updating apt-cache
This will remove all the cache and will download a fresh cache. This should be done to get fresh cache packages and newer updates.
2. Try
sudo apt-get install -f
.It will probably give some suggestions about removing and installing packages, do what seems reasonable.
3. Change the
Download Server
fromSoftware Sources
Because sometimes the files on a server are corrupted.4. This also happens if you before added an external ppa for the broken dependency.Try removing that ppa by
sudo add-apt-repository --remove ppa:someppa/ppa
and then manually removing the ppa installed files/librariesor
purging a ppa (this removes the installed files also)
5. If no 4 is not your case then atleast try to remove the package that is being shown as a broken dependency.Then try again installing.This is reported to have workeed for quite a few people.
6. Always add the stable version of a repository/PPA.
7 Also make sure you have all the official repositories enabled (In
Software Sources
)Please do not enable the
Proposed Updates
as they are meant for testing/developers.As told by doug:
Additionally not noted is that in many, if not most cases, "<whatever> is to be installed" really means "<whatever> is installed" and should be tried to be removed if nothing else works (as in point 5).
I'll keep adding more things ill find to fix
unmet dependencies
.For most cases,installing the package through
aptitude
will resolve unmet dependencies.By defaultaptitude
package was not installed on your pc.So first install it by running,then,
For Example,
Installing the package through
aptitude
My answer is similar to rick's above.
Using
apt-get clean
,apt-get autoclean
,apt-get autoremove
,apt-get upgrade
,apt-get update
,apt-get -u dist-upgrade
, etc. all didn't work for me.I finally resolved this issue by descending into the dependency tree via
apt-get install
, illustrated with an example below. In my case, I wanted to installlibmagickwand-dev
:I got this error:
So, I ran
apt-get install
for one of the failing dependencies:I descended further down the tree:
with another error:
Once more deeper down the tree:
Fore some strange reason, this succeeded, and I was able to install the original package I wanted with
apt-get install libmagickwand-dev
:Excellent answers! But today my case seems different from yours. Here's my advice.
Problem:
I failed to install apache2 in ubuntu 10.10.
Solution:
My way is add the depended package into install list.
If 'sudo apt-get install apache2' failed, try 'sudo apt-get install apache2 apache2.2-common'.
See? apache2.2-common comes from error log of previous step.
At last I found there's a dependency chain like this:
For the first 3 packages, apt-get log told me ' is not going to be installed',
but for the last package, it shows 'libaprutil1-ldap : Depends: libaprutil1 (= 1.3.9+dfsg-3build1) but 1.3.9+dfsg-3ubuntu0.10.10.1 is to be installed'
I have a different version existing in my lib, so:
Now it's ok.
what is unmet dependencies Error
On Ubuntu packages are the primary way that software is built, deployed, and installed. Very simply, packages are an alternative to downloading, building, and installing software from scratch. They offer a host of advantages in terms of installation, removal, monitoring, and handling interactions between pieces of software over the standard "build from source" model. Ubuntu uses centralized packaging system ,Ie Every package is depends to some other packages .When we installs a package it's dependencies will be installed ,The unmet dependencies error occurs when the the dependencies of the package is not available for installation
Possible causes
Let's TRy to solve it
Make sure that all the default repositories are enabled
->You can easily add them in the
Software Center
->Edit->Software Sources->Other Sources->Add"-> Start the
Software Center
.->. In the panel go to
Edit
and selectSoftware Sources
.->Make sure all the repositories are checked
Update the software catalog
click on the top right icon and chose update-available Entry in the menu
and press check button
4.type ctrl+alt+t to open terminal and type
sudo apt-get install -f
5.Purge the recently added ppa using ppa-purge ppa-purge
Syntax
Example
Else type ctrl+alt+t to open terminal and type
sudo apt-get install -f
and follow the onscreen instructionsIf still error occurs, Feel free to to ask it in askbuntu
...dont forget about `build-dep`
In addition to those answers above -- I have to admit I am surprised that nobody have mentioned this approach which, is what I have always used as a "silver bullet" at any time I encountered apt-get conflicts or unresolved packages (or even if the system is being stubborn....ha!).
EDITED: using
sudo dpkg -r [package]
is encouraged as it has pretty powerful removal function. Sinceapt-get
works alongside withdpkg
, which meansapt-get
will obeydpkg
function.You call apt-get to purge the failed package you were trying to install in the system, and then you call build-dep command, which apt-get will grab and install dependencies individually belonging to this package, so that way they'll satisfy the package prior. Then finally, call the apt-get install:
....'Ugh! Let's twist your arm until you yell "Uncle!"'
This rarely happened during my long years of linux use, but I found myself using this approach seldomly and succeeded. This is an example for the recent struggle I had earlier a month ago with packages
mysql-client/mysql-server
. After a dozen failed attempts to reset my root password with mysql-server (even via --skip-grant-tables techqiue but yet failed), I finally succeed in 'twisting Linux's arm until it yelled "Uncle!"':apt-get autoclean
is the key in this solution