是否可以防止安装所需的包装?

如果您安装的程序依赖于许多未安装的其他软件包,那么apt-get自动安装这些依赖项。 在所有情况下,这都是理想的行为。

但偶尔我有一个案例,我不想安装一个标记为必需的包,但实际上并不需要使用我想要安装的程序。

例:

  • 我想安装程序logwatch
  • logwatch包依赖于邮件传输代理(MTA)的安装
  • logwatch可以在没有MTA的情况下使用
  • 我不想安装MTA

我知道我可以从源代码安装程序。 但我想知道apt-get提供了一种防止依赖安装的方法(不破坏整个包管理系统)。

我认为,如果不以某种方式进入软件包管理系统,就不可能实现。

原因是logwatch postfix或者mail-transport-agent声明为依赖项 ,而不是推荐 。 如果包没有MTA也可以工作,这种强烈的依赖可能是一个错误。

另外通过dpkg安装也无法解决,因为忽略的依赖关系将继​​续在下一个apt-get操作中弹出。

可能的方法是下载和修改程序包以删除违规依赖项。 这并不难实现,但如果你有兴趣我会详细说明。

我没有在logwatch本身上尝试这个,但通常忽略依赖关系是这样做的:

 sudo dpkg -i --ignore-depends=postfix the_package.deb 

我知道,没有办法做到这一点。

编辑: enzotib是对的, apt会在缺失依赖的后期抱怨。 Apt-pinning或更改deb包中的依赖项可能是更好的方法。