构建 deb 包,在删除或清除时​​卸载另一个包

NET*_*LOX 3 package-management packaging dpkg 18.04 20.04

我尝试构建一个包,如果我的包应该被卸载,它可以卸载另一个包。

我已经尝试了控制文件中的“Depends”和“Pre-Depends”策略。但不一定要先安装第二个软件包,然后才能安装我的软件包。这就是我不想要这个政策的原因。

此外,我尝试卸载“postrm”文件中的其他软件包。但这也不起作用,因为 dpkg 上的锁定文件是从我的软件包中的卸载程序设置的。

总结:一旦我的包被删除或清除,如何才能清除另一个包?

理论上,我删除 postrm 文件中的其他包就足够了。

或者,如果我可以将另一个包标记为不再需要,但如果在删除我的包时 dpkg 卸载这两个包,那就更好了。

Arc*_*ahi 5

一旦我的包裹被删除或清除,如何可以清除另一个包裹。

但事实并非如此。假设您的软件包 ( A) 依赖于另一个软件包 ( B),当您手动安装 时,该软件包会自动从存储库安装A

当您删除时A,dpkg/apt 不会自动删除B

您必须手动运行sudo apt autoremove以删除B作为依赖项安装且不再需要的其他软件包。

如果您想一次性完成这两项操作,可以运行以下命令

sudo apt remove A && sudo apt autoremove
Run Code Online (Sandbox Code Playgroud)

其中A是主包的名称。

  • 如果用户决定在安装 A 之前或之后安装 B,该怎么办?如果包 C 依赖于 B 怎么办?如果 C 在 A 安装之前或之后安装会怎样?如果你自动卸载 B,就会有太多的方法来破坏东西,这就是 apt 如此工作的原因。 (5认同)