我如何覆盖 apt-get 删除依赖包?

我如何覆盖 apt-get 删除依赖包?

我想在我的 Ubuntu 测试服务器上用 exim4 替换 postfix,以反映我在生产服务器上的设置,但 apt-get 和 aptitude(可以理解)坚持删除依赖于邮件堆栈的几个软件包。但是,在这种情况下,我准备推翻 apt-get 的无可置疑的明智之举,因为 exim 应该满足依赖软件包的所有要求,为我的应用程序提供邮件和发送邮件功能。我不想删除依赖软件包,因为已经投入了数月的努力,尽管备份了,但要正确重建将非常麻烦。

答案1

我已成功安装 exim4 来代替 postfix。我做了:

    dpkg --force-all -r postfix
    apt-get purge postfix

我忽略了该建议,apt-get -f install因为它试图重新安装 postfix。然后:

    aptitude install exim4-daemon-heavy sa-exim

现在我可以继续配置我的测试服务器的 MTA,就像我的生产服务器一样。

答案2

通常情况下,您只需要求 aptitude 安装新的邮件服务器:

   aptitude installl exim4

在我看来,它是这样的:

datacompboy@nuuzerpogodible:~$ LANG=C sudo aptitude install postfix
The following NEW packages will be installed:
  postfix{b} 
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 1565 kB of archives. After unpacking 3479 kB will be used.
The following packages have unmet dependencies:
 postfix : Conflicts: mail-transport-agent which is a virtual package.
 exim4-daemon-light : Conflicts: mail-transport-agent which is a virtual package.
 exim4-config : Conflicts: postfix but 2.9.1-2 is to be installed.
The following actions will resolve these dependencies:

     Remove the following packages:
1)     exim4                       
2)     exim4-base                  
3)     exim4-config                
4)     exim4-daemon-light          



Accept this solution? [Y/n/q/?] y
The following NEW packages will be installed:
  postfix 
The following packages will be REMOVED:
  exim4{a} exim4-base{a} exim4-config{a} exim4-daemon-light{a} 
0 packages upgraded, 1 newly installed, 4 to remove and 0 not upgraded.
Need to get 1565 kB of archives. After unpacking 417 kB will be freed.

这是正确的行为:没有 PITA 的系统中只能存在一个 MTA

如果它试图删除比你想要的更多的软件包,你应该检查

aptitude 为什么使用 somepackage

获取有关软件包安装原因的信息。现在,您应该做出决定。如果删除策略为 {a} —— 这意味着软件包由于自动依赖关系而安装,您可以删除它自动安装的事实,并将其设置为手动,使用

aptitude unmarkauto 某些软件包

此后,某些软件包将被视为手动安装,并且仅在发生冲突时才会被删除,而不是因为它不再使用。

相关内容