![如何覆盖缺失的依赖项?](https://linux22.com/image/1030579/%E5%A6%82%E4%BD%95%E8%A6%86%E7%9B%96%E7%BC%BA%E5%A4%B1%E7%9A%84%E4%BE%9D%E8%B5%96%E9%A1%B9%EF%BC%9F.png)
我安装了一个使用包,dpkg --force-depends -i
因为它需要libidn11
不再提供。
然后我创建了一个从libidn.so.11
到libidn.so.12
(自动安装)的符号链接,现在该包运行良好。
但是,我无法再使用更新系统,apt full-upgrade
因为我得到了
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
icaclient : Depends: libidn11 but it is not installable
...
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
唉,apt --fix-broken install
只是删除icaclient
不是一个选择。
那么,有没有办法apt
可以忽略特定包的所有问题并假装满足其所有依赖关系?
答案1
我感觉自己像个骗子,但这就是我所做的,并且apt upgrade
不再抱怨:
- 在 Emacs 中打开
icaclient.deb
。获取存档缓冲区:
M Mode Size Date&time Filename
- ---------- -------- ---------------- ----------------
-rw-r--r-- 4 2020-04-16 08:18 debian-binary
-rw-r--r-- 53421 1969-12-31 19:00 control.tar.gz
-rw-r--r-- 72952536 2020-04-16 08:20 data.tar.xz
- ---------- -------- ---------------- ----------------
73005961 3 files
- 打开
control.tar.gz
(点击Enter它),获取一个tar
缓冲区:
drwxr-xr-x root/root 0 ./
-rw-r--r-- root/root 54528 ./md5sums
-rw-r--r-- root/root 921 ./control
-rwxr-xr-x root/root 160 ./postrm
-rwxr-xr-x root/root 918 ./preinst
-rw-r--r-- root/root 879 ./conffiles
-rwxr-xr-x root/root 70411 ./prerm
-rwxr-xr-x root/root 70579 ./postinst
打开
control
(再次点击Enter它),编辑文本文件,用libidn11
替换libidn12
。保存
control
(点击C-x C-s)。保存
control.tar.gz
(切换到它并点击C-x C-s)。以 root
apt --fix-broken install
身份接受删除icaclient
。作为 root,
dpkg -i icaclient.deb
没有警告,没有错误!以 root 身份
cd /usr/lib/x86_64-linux-gnu; ln -s libidn.so.12 libidn.so.11
。
我确信有一种方法可以在不使用 Emacs 的情况下做到这一点,但我也非常确信这需要更多的击键。