本文的背景是需要树莓派上安装声卡阵列,为了验证声卡阵列的可用,需要在树莓派安装OSDA,然后另外找服务器安装ODSA_Web,然后通过OSDA发送监听到的声音到OSDA_Web作为呈现。
操作Reference: https://respeaker.io/4_mic_array/
当安装ODSA时碰到以下问题,原因是libasaound2-dev当前是依赖于libasound2这个库的1.0.28-1版本,但树莓派上已经有了另一个更新的版本1.0.28-1+rpi2
pi@raspberrypi:~ $ sudo apt-get install libasound2-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:
下列软件包有未满足的依赖关系:
libasound2-dev : 依赖: libasound2 (= 1.0.28-1)
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
解决思路是使用aptitude这个命令安装,他可以智能地分析库之间的依赖关系,并给出调整建议。如下面的日志所示,按他的建议把libasound2这个库从1.0.28-1-rpi2版本降级到1.0.28-1版,即可成功安装libasaound2-dev(请注意11及15行的输入)
pi@raspberrypi:~/odas/build $ sudo aptitude install libasound2-dev
下列“新”软件包将被安装。
libasound2-dev{b}
0 个软件包被升级,新安装 1 个,0 个将被删除, 同时 2 个将不升级。
需要获取 94.9 kB 的存档。解包后将要使用 389 kB。
下列软件包存在未满足的依赖关系:
libasound2-dev : 依赖: libasound2 (= 1.0.28-1) 但是 1.0.28-1+rpi2 已安装。
下列动作将解决这些依赖关系:
保持 下列软件包于其当前版本:
1)libasound2-dev [未安装的]
是否接受该解决方案?[Y/n/q/?] n // **在这里否决维持现状的方案**
下列动作将解决这些依赖关系:
降级 下列软件包:
1)libasound2 [1.0.28-1+rpi2 (now) -> 1.0.28-1 (oldstable)]
是否接受该解决方案?[Y/n/q/?] Y // **在这里选择降级的方案**
下列软件包将被“降级”:
libasound2
下列“新”软件包将被安装。
libasound2-dev
0 个软件包被升级,新安装 1 个,1 个被降级,0 个将被删除, 同时 2 个将不升级。
需要获取 411 kB 的存档。解包后将要使用 329 kB。
您要继续吗?[Y/n/?] Y
读取: 1 https://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ jessie/main libasound2 armhf 1.0.28-1 [316 kB]
读取: 2 https://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ jessie/main libasound2-dev armhf 1.0.28-1 [94.9 kB]
已下载 411 kB,耗时 0秒 (440 kB/s)
dpkg:警告:即将把 libasound2:armhf 从 1.0.28-1+rpi2 降级到 1.0.28-1
(正在读取数据库 ... 系统当前共安装有 119680 个文件和目录。)
正准备解包 .../libasound2_1.0.28-1_armhf.deb...
正在将 libasound2:armhf (1.0.28-1) 解包到 (1.0.28-1+rpi2) 上 ...
正在选中未选择的软件包 libasound2-dev:armhf。
正准备解包 .../libasound2-dev_1.0.28-1_armhf.deb...
正在解包 libasound2-dev:armhf (1.0.28-1) ...
正在处理用于 libc-bin (2.19-18+deb8u10) 的触发器 ...
正在设置 libasound2:armhf (1.0.28-1) ...
正在设置 libasound2-dev:armhf (1.0.28-1) ...
正在处理用于 libc-bin (2.19-18+deb8u10) 的触发器 ...
【通过apt-get安装软件时碰到某个依赖包的版本和已有版本冲突的解决方法】最后检查一下是否成功安装
pi@raspberrypi:~ $ dpkg -s libasound2-dev
Package: libasound2-dev
Status: install ok installed
Priority: optional
Section: libdevel
Installed-Size: 380
Maintainer: Debian ALSA Maintainers
Architecture: armhf
Multi-Arch: same
Source: alsa-lib
Version: 1.0.28-1
Provides: libasound-dev
Depends: libasound2 (= 1.0.28-1)
Suggests: libasound2-doc
Description: shared library for ALSA applications -- development files
This package contains files required for developing software
that makes use of libasound2, the ALSA library.
.
ALSA is the Advanced Linux Sound Architecture.
Homepage: http://www.alsa-project.org/
推荐阅读
- Linux|109 个实用 shell 脚本
- linux笔记|linux 常用命令汇总(面向面试)
- Linux|Linux--网络基础
- linux|apt update和apt upgrade命令 - 有什么区别()
- linux|2022年云原生趋势
- Go|Docker后端部署详解(Go+Nginx)
- 开源生态|GPL、MIT、Apache...开发者如何选择开源协议(一文讲清根本区别)
- GitHub|7 款可替代 top 命令的工具