一、问题
(一)问题展示
在学习ros中,需要尝试安装语音控制相关功能包,查询到一篇博客需要安装python-gsto.10功能包。
在终端中输入下面命令过后
sudo apt-get install python-gsto.10
发现如下的问题
问题显示,当我安装python-gst0.10功能包的时候,发现其需要的依赖都无法正常满足。在尝试查询功能包的版本时候,无法找到相关功能包的版本。
(二)延伸问题
当上述出现依赖关系未被满足时候,除去功能包无法正常使用之外,还可能导致Ubuntu系统下其余安装无法使用。
例如,当我在未解决相关依赖问题时候,我尝试安装aptitude时候,会发生如下的情况:
在想要安装其余的功能包时候,也无法安装,系统会提示存在依赖关系未被解决的问题存在。
二、问题解决
(一)删除原有功能包
因为原来安装的功能包存在依赖关系的问题,会导致无法正常安装其余功能包,因而,我们首先选择删除这个功能包。
在终端中输入下面命令,调用remove命令删除。
sudo apt-get remove python-gst0.10
(二)问题解决概述
在删除原来存在问题的功能包后,我们重新解决问题。
在查询不少网络资料后,发现一篇博客(Ubuntu下安装依赖包问题总结_libprotobuf-dev-CSDN博客)中详细介绍了相关的问题。按照其方法进行尝试,我成功解决了这些问题。
(三)问题分析
Depends: libjack-dev
Depends: libportaudio2 (= 19.6.0-1build1) but it is not going to be installed
终端中报出it is not going to be installed的原因是这个功能包所需要的功能包版本低于当前系统中已经存在的功能包,所以会导致需要安装的功能包无法正常依赖。
(四)安装aptitude
面对上述问题,我们可以考虑使用aptitude install <programname>命令的工具进行解决。
首先需要在终端中下载aptitude
sudo apt-get install aptitude
在此时需要注意的是,要保证先将原来存在问题的功能包删除,否则会因为原来功能包的依赖存在问题,而导致aptitude无法正常安装。
(五)aptitude安装功能包
使用aptitude的优势在于安装某些功能包的时候,可以安装这个功能包底版本的一些依赖,其操作相比较与apt-get这个命令来说,显得更为智能,我们可以依据安装过程中间的提示来进行操作。例如,以安装portaudio19-dev为例进行说明。
在终端中输入
sudo aptitude install portaudio19-dev
在安装的过程中,需要我们依据提示选择一些解决方案。我们一共需要做出三个选择。
1.第一个选择
我们需要选择是否接受未安装方案,这里我们选择n
2.第二个选择
我们需要选择是否接受降级安装方案,意思是是否安装较低版本的依赖。这里我们选择y
3.第三个选择
我们选择y,进行安装。
按照此方法,经过相关尝试,可以解决问题。