在Ubuntu系统中在安装新的包时,有时会报错连环依赖问题,常见的报错为:下列软件包有未满足的依赖关系:XXX依赖XXX 但是它不会被安装
E: 有未能满足的依赖关系。请尝试不指明软件包的名字来运行“apt --fix-broken install”(也可以指定一个解决办法)。
这样的问题遇到就会比较头疼,因为当你安装上面的提示安装依赖包时,又会出现新的依赖包问题,本人遇到过两次,现在此记录。
本人报错如下:
$ sudo apt install ros-noetic-velodyne
[sudo] lyf 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
您也许需要运行“apt --fix-broken install”来修正上面的错误。
下列软件包有未满足的依赖关系:
gnupg : 依赖: dirmngr (>= 2.2.19-3ubuntu2.4)
依赖: gnupg-utils (>= 2.2.19-3ubuntu2.4)
依赖: gpg (>= 2.2.19-3ubuntu2.4)
依赖: gpg-agent (>= 2.2.19-3ubuntu2.4)
依赖: gpg-wks-server (>= 2.2.19-3ubuntu2.4)
依赖: gpgsm (>= 2.2.19-3ubuntu2.4)
依赖: gpgv (>= 2.2.19-3ubuntu2.4)
破坏: dirmngr (< 2.2.19-3ubuntu2.4)
破坏: dirmngr:i386 (< 2.2.19-3ubuntu2.4)
gpg-wks-client : 依赖: dirmngr (= 2.2.19-3ubuntu2.4)
依赖: gpg (= 2.2.19-3ubuntu2.4)
依赖: gpg-agent (= 2.2.19-3ubuntu2.4)
ros-noetic-velodyne : 依赖: ros-noetic-velodyne-driver 但是它将不会被安装
依赖: ros-noetic-velodyne-laserscan 但是它将不会被安装
依赖: ros-noetic-velodyne-msgs 但是它将不会被安装
依赖: ros-noetic-velodyne-pointcloud 但是它将不会被安装
sunloginclient : 依赖: libgconf-2-4 但是它将不会被安装
推荐: libgconf-2-4 但是它将不会被安装
推荐: libwebkit2gtk-4.0.37 但无法安装它
推荐: libwebkitgtk-3.0-0 但无法安装它
E: 有未能满足的依赖关系。请尝试不指明软件包的名字来运行“apt --fix-broken install”(也可以指定一个解决办法)。
当安装提示使用“sudo apt --fix-broken install”时,根本无法解决问题,因为又会有新的报错出现:
$ sudo apt --fix-broken install
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
正在修复依赖关系... 完成
下列软件包是自动安装的并且现在不需要了:
linux-headers-5.15.0-67-generic linux-hwe-5.15-headers-5.15.0-67 linux-image-5.15.0-67-generic linux-modules-5.15.0-67-generic linux-modules-extra-5.15.0-67-generic
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
dirmngr gconf-service gconf-service-backend gconf2-common gnupg-utils gpg gpg-agent gpg-wks-server gpgconf gpgsm gpgv libgconf-2-4
建议安装:
tor scdaemon
下列【新】软件包将被安装:
gconf-service gconf-service-backend gconf2-common libgconf-2-4
下列软件包将被升级:
dirmngr gnupg-utils gpg gpg-agent gpg-wks-server gpgconf gpgsm gpgv
升级了 8 个软件包,新安装了 4 个软件包,要卸载 0 个软件包,有 548 个软件包未被升级。
有 4 个软件包没有被完全安装或卸载。
需要下载 859 kB/3,015 kB 的归档。
解压缩后会消耗 8,096 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 https://mirrors.aliyun.com/ubuntu focal/universe amd64 gconf2-common all 3.2.6-6ubuntu1 [698 kB]
获取:2 https://mirrors.aliyun.com/ubuntu focal/universe amd64 libgconf-2-4 amd64 3.2.6-6ubuntu1 [84.8 kB]
获取:3 https://mirrors.aliyun.com/ubuntu focal/universe amd64 gconf-service-backend amd64 3.2.6-6ubuntu1 [58.6 kB]
获取:4 https://mirrors.aliyun.com/ubuntu focal/universe amd64 gconf-service amd64 3.2.6-6ubuntu1 [17.4 kB]
已下载 859 kB,耗时 1秒 (1,085 kB/s)
(正在读取数据库 ... 系统当前共安装有 339983 个文件和目录。)
准备解压 .../0-gpgsm_2.2.19-3ubuntu2.4_amd64.deb ...
正在解压 gpgsm (2.2.19-3ubuntu2.4) 并覆盖 (2.2.19-3ubuntu2.2) ...
dpkg: 处理归档 /tmp/apt-dpkg-install-nicV0t/0-gpgsm_2.2.19-3ubuntu2.4_amd64.deb (--unpack)时出错:
无法在安装新的版本前,为 ./usr/bin/gpgsm 做一个符号链接备份: 不允许的操作
准备解压 .../1-gpg-wks-server_2.2.19-3ubuntu2.4_amd64.deb ...
正在解压 gpg-wks-server (2.2.19-3ubuntu2.4) 并覆盖 (2.2.19-3ubuntu2.2) ...
dpkg: 处理归档 /tmp/apt-dpkg-install-nicV0t/1-gpg-wks-server_2.2.19-3ubuntu2.4_amd64.deb (--unpack)时出错:
无法在安装新的版本前,为 ./usr/bin/gpg-wks-server 做一个符号链接备份: 不允许的操作
准备解压 .../2-gpg_2.2.19-3ubuntu2.4_amd64.deb ...
正在解压 gpg (2.2.19-3ubuntu2.4) 并覆盖 (2.2.19-3ubuntu2.2) ...
dpkg: 处理归档 /tmp/apt-dpkg-install-nicV0t/2-gpg_2.2.19-3ubuntu2.4_amd64.deb (--unpack)时出错:
无法在安装新的版本前,为 ./usr/bin/gpg 做一个符号链接备份: 不允许的操作
准备解压 .../3-gnupg-utils_2.2.19-3ubuntu2.4_amd64.deb ...
正在解压 gnupg-utils (2.2.19-3ubuntu2.4) 并覆盖 (2.2.19-3ubuntu2.2) ...
dpkg: 处理归档 /tmp/apt-dpkg-install-nicV0t/3-gnupg-utils_2.2.19-3ubuntu2.4_amd64.deb (--unpack)时出错:
无法在安装新的版本前,为 ./usr/bin/gpg-zip 做一个符号链接备份: 不允许的操作
由于已经达到 MaxReports 限制,没有写入 apport 报告。
dpkg-deb: 错误: 粘贴 子进程被信号(断开的管道) 终止了
准备解压 .../4-dirmngr_2.2.19-3ubuntu2.4_amd64.deb ...
正在解压 dirmngr (2.2.19-3ubuntu2.4) 并覆盖 (2.2.19-3ubuntu2.2) ...
dpkg: 处理归档 /tmp/apt-dpkg-install-nicV0t/4-dirmngr_2.2.19-3ubuntu2.4_amd64.deb (--unpack)时出错:
无法在安装新的版本前,为 ./usr/bin/dirmngr 做一个符号链接备份: 不允许的操作
由于已经达到 MaxReports 限制,没有写入 apport 报告。
dpkg-deb: 错误: 粘贴 子进程被信号(断开的管道) 终止了
准备解压 .../5-gpgconf_2.2.19-3ubuntu2.4_amd64.deb ...
正在解压 gpgconf (2.2.19-3ubuntu2.4) 并覆盖 (2.2.19-3ubuntu2.2) ...
dpkg: 处理归档 /tmp/apt-dpkg-install-nicV0t/5-gpgconf_2.2.19-3ubuntu2.4_amd64.deb (--unpack)时出错:
无法在安装新的版本前,为 ./usr/bin/gpg-connect-agent 做一个符号链接备份: 不允许的操作
由于已经达到 MaxReports 限制,没有写入 apport 报告。
准备解压 .../6-gpg-agent_2.2.19-3ubuntu2.4_amd64.deb ...
正在解压 gpg-agent (2.2.19-3ubuntu2.4) 并覆盖 (2.2.19-3ubuntu2.2) ...
dpkg: 处理归档 /tmp/apt-dpkg-install-nicV0t/6-gpg-agent_2.2.19-3ubuntu2.4_amd64.deb (--unpack)时出错:
无法在安装新的版本前,为 ./usr/bin/gpg-agent 做一个符号链接备份: 不允许的操作
由于已经达到 MaxReports 限制,没有写入 apport 报告。
准备解压 .../7-gpgv_2.2.19-3ubuntu2.4_amd64.deb ...
正在解压 gpgv (2.2.19-3ubuntu2.4) 并覆盖 (2.2.19-3ubuntu2.2) ...
dpkg: 处理归档 /tmp/apt-dpkg-install-nicV0t/7-gpgv_2.2.19-3ubuntu2.4_amd64.deb (--unpack)时出错:
无法在安装新的版本前,为 ./usr/bin/gpgv 做一个符号链接备份: 不允许的操作
由于已经达到 MaxReports 限制,没有写入 apport 报告。
在处理时有错误发生:
/tmp/apt-dpkg-install-nicV0t/0-gpgsm_2.2.19-3ubuntu2.4_amd64.deb
/tmp/apt-dpkg-install-nicV0t/1-gpg-wks-server_2.2.19-3ubuntu2.4_amd64.deb
/tmp/apt-dpkg-install-nicV0t/2-gpg_2.2.19-3ubuntu2.4_amd64.deb
/tmp/apt-dpkg-install-nicV0t/3-gnupg-utils_2.2.19-3ubuntu2.4_amd64.deb
/tmp/apt-dpkg-install-nicV0t/4-dirmngr_2.2.19-3ubuntu2.4_amd64.deb
/tmp/apt-dpkg-install-nicV0t/5-gpgconf_2.2.19-3ubuntu2.4_amd64.deb
/tmp/apt-dpkg-install-nicV0t/6-gpg-agent_2.2.19-3ubuntu2.4_amd64.deb
/tmp/apt-dpkg-install-nicV0t/7-gpgv_2.2.19-3ubuntu2.4_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
出现了一堆的报错,主要的意思是指需要依赖的包虽然已经下载打算安装了,但是由于符号链接备份的问题,导致无法安装。
解决方案
上面所有需要安装的deb包其实系统都有下载,只不过无法安装而已,这时候就需要我们去手动安装才可以。
1、打开/var/cache/apt/archives,可以看到很多deb包。
2、安装报错的顺序,逐个找到对应的deb,以及其下面报错的目标,如我这个报错的第一个就是/usr/bin/gpgsm,使用chatter进行赋权:
sudo chatter -i /usr/bin/gpgsm
3、安装对应的deb包:
sudo dpkg -i --force-all /var/cache/apt/archives/gpgsm_2.2.19-3ubuntu2.4_amd64.deb
如果出现了新的依赖问题,循环赋权并安装相应的deb包,直到再次运行“sudo apt --fix-broken install”不报错就可以了。
以上就是本人对于上述问题的解决方案,已经解决了本人的问题,希望对诸位也同样有用。