如何覆盖缺失的依赖项?

如何覆盖缺失的依赖项?

我安装了一个使用包,dpkg --force-depends -i因为它需要libidn11不再提供。

然后我创建了一个从libidn.so.11libidn.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不再抱怨:

  1. 在 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
  1. 打开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
  1. 打开control(再次点击Enter它),编辑文本文件,用libidn11替换libidn12

  2. 保存control(点击C-x C-s)。

  3. 保存control.tar.gz(切换到它并点击C-x C-s)。

  4. 以 rootapt --fix-broken install身份接受删除icaclient

  5. 作为 root,dpkg -i icaclient.deb没有警告,没有错误!

  6. 以 root 身份cd /usr/lib/x86_64-linux-gnu; ln -s libidn.so.12 libidn.so.11

我确信有一种方法可以在不使用 Emacs 的情况下做到这一点,但我也非常确信这需要更多的击键。

相关内容