Ubuntu23.10下处理libncurses5-dev包的安装问题
- 导语
- 环境准备
- 问题和解决方案
- 总结
- 参考文献
导语
使用Ubuntu23.10的时候,遇到需要termios的场景,结果发现无论是codeblocks还是系统本身的gcc都无法找到term.h和curse.h,网上找了很多解决方案都不适用,因为自己遇到的情况比较特殊,但好在最后用aptitude包解决了依赖问题,这里记录一下解决的流程,方便以后他人使用
环境准备
首先是Ubuntu的版本,具体如下
其次是由于网络问题,建议把对应的下载源换成国内的,我选择的是阿里云
问题和解决方案
换好源之后,我首先执行了 sudo apt-get update命令,这个命令会把系统内所有的包都更新,但问题也在这里,libncurses5-dev其实有更新的版本,这条命令会使得系统安装libncurses5-dev更新的版本,最新版本并不和codeblocks适用,原先的-lcurses命令也无法用在最新的版本上
如果这个时候尝试直接安装libncurses5-dev,可能会出现下面的提示
会发现无法安装,然后如果尝试卸载现有的最新版本也可能卸载失败,原因是最新版本和其他的包已经相互形成了复杂的依赖关系,系统并不支持删除
对于这种情况,就需要将最新版本删除并重新安装,直接用rm是不行的,这里就需要安装aptitude管理包,它可以有效且自动的管理包之间的依赖关系和管理关系
首先是安装,命令和结果如下
安装完之后使用aptitude强制回退libncurse的版本
但这里需要注意的是,aptitude有很多方案,我们不能直接选择默认方案,那样是无效的
这里不接受第一个
第二个也不接受
接受第三个方案,这样就能强制降级libncurse到指定的版本了
可以简单写个要用到termios的程序试试,如果上面这行命令执行没有出错就代表安装成功了
总结
Linux系统里包之间的依赖关系非常复杂,有时候并不是最新的就最好,当遇到需要使用指定版本的包时可以通过aptitude来自动实现,但前提是选对方案
参考文献
- ubuntu无法修正错误,因为您要求某些软件包保持现状…解决办法
- Ubuntu更换阿里云镜像源
- 百度AI助手