ubuntu版本不一样,或者源不一样都会出现下面这样的问题:
The following packages have unmet dependencies:
libopus-dev : Depends: libopus0 (= 1.1.2-1ubuntu1) but 1.2.1-1~16.04.york0 is to be installed
E: Unable to correct problems, you have held broken packages.
主要原因如下:
1、安装该软件包时它需要指定的版本才能安装上,如上面说的需要一个旧版本依赖才能正确安装。
2、要装A, 依赖B, 但是已经安装的软件C也依赖B, 但是A依赖的B的版本和C依赖的B的版本不一致, 导致了如果要安装B,那么C便不能正常运行了,所以系统报错。
遇到这类问题有一下几种解决办法:
第一种:
sudo apt-get -f install
sudo apt-get install 软件名称
通过上面命令安装,这个命令会针对当前不满足的依赖关系,下载正确版本的依赖库,如果还是出现上面的问题尝试下面解决方案。
第二种:
更新软件源。ubuntu自带的软件源比较旧,很多的软件版本较低,国内比较好用的源有阿里源,清华源等。
第三种:(这种我认为最靠谱的方式,简单方面快捷)
使用aptitude,先安装:
sudo apt-get install aptitude
aptitude与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude在处理依赖问题上更佳一些。举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。
sudo aptitude install libopus-dev
根据需要输入相应指令,运行后,不接受未安装方案,接受降级方案。搞定。
过程如下:
The following actions will resolve these dependencies:
Keep the following packages at their current version:
1) libopus-dev [Not Installed]
Accept this solution? [Y/n/q/?]
根据情况输入:Y,n,q
出现以下:
The following actions will resolve these dependencies:
Downgrade the following packages:
1) libopus0 [1.2.1-1~16.04.york0 (now) -> 1.1.2-1ubuntu1 (xenial)]
Accept this solution? [Y/n/q/?]
输入Y即可!!
第四种:
系统报错如下:
下列软件包有未满足的依赖关系:
subversion : 依赖: libsvn1 (= 1.8.8-1ubuntu3) 但是 1.8.8-1ubuntu3.1 正要被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
解决办法如下:
sudo apt-get install libsvn1=1.8.8-1ubuntu3 , 这样可以制定libsvn的版本安装,
安装成功后, 在运行sudo apt-get install subversion 就可以安装了。
OK!!!