如果您安装的程序依赖于一些尚未安装的其他软件包,则会apt-get
自动安装这些依赖项。在几乎所有情况下,这都是所需的行为。
但是有时我会遇到这样的情况,我不想安装一个标记为必需的包,但是这个包对于使用我真正想要安装的程序来说并不是真正需要的。
例子:
- 我想安装该程序
logwatch
- 该
logwatch
软件包依赖于邮件传输代理 (MTA) 的安装 logwatch
无需 MTA 即可使用- 我不想安装 MTA
我知道我可以从源代码安装程序。但我想知道是否apt-get
提供了一种方法来阻止依赖项的安装(而不会破坏整个包管理系统)。
答案1
我认为,如果不以某种方式侵入包管理系统,这是不可能的。
原因是logwatch
声明postfix
,或者mail-transport-agent
作为依赖性,而不是作为推荐。如果该包在没有 MTA 的情况下也能工作,那么这种强依赖性可能是一个错误。
通过安装也无法解决,因为被忽略的依赖项会在下次操作dpkg
时继续弹出。apt-get
一种可能的方法是下载并修改软件包以删除冒犯依赖关系。这并不难实现,但如果你感兴趣的话,我会给你详细说明。
答案2
我还没有尝试过这个logwatch
,但通常忽略依赖关系是这样的:
sudo dpkg -i --ignore-depends=postfix the_package.deb
apt
据我所知没有其他方法可以做到这一点。
编辑:恩佐替布是正确的,apt
稍后会抱怨缺少依赖项。apt-pinning或者改变包中的依赖项deb
可能是更好的方法。