构建deb软件包,在删除或清除的情况下卸载另一个软件包。

我尝试构建一个软件包,如果我的软件包需要卸载,它可以卸载另一个软件包。

我已经在控制文件中尝试了"Depends"和"Pre-Depends"策略。但是并不必要的,第二个软件包在我的软件包安装之前并不一定要安装。这就是为什么我不想要这些策略的原因。

此外,我还试图在'postrm'文件中卸载另一个软件包。但是这也行不通,因为dpkg上的锁文件是由我软件包的卸载程序设置的。

总结: 在我的软件包被移除或清除时如何清除另一个软件包?

从理论上讲,在postrm文件中删除另一个软件包对我来说已经足够了。

或者,如果我可以将另一个软件包标记为不再需要,但如果dpkg在删除我的软件包时同时卸载两个软件包将是最好的。

1个回答

当你删除或清除我的软件包时,如何立即清除另一个软件包?
事实并非如此。假设你的软件包(A)依赖于另一个软件包(B),当你手动安装A时,B将自动从存储库中安装。
当你删除A时,dpkg/apt不会自动删除B。
你需要手动运行sudo apt autoremove命令来删除B和其他作为依赖项安装的软件包,这些软件包不再需要。
如果你想一次完成两个操作,可以运行以下命令:
sudo apt remove A && sudo apt autoremove

其中A是主要包的名称。


好的,谢谢。虽然这不是我想要的解决方案,但如果没有其他办法,那么我只能接受了。 :D - NETFLOX
5如果用户在安装您的A之前或之后决定安装B,会怎么样?如果包C依赖于B,又会怎样?如果C在您的A安装之前或之后被安装,又会怎样?如果自动卸载B,可能会导致许多问题,这就是为什么apt工作方式如此的原因。 - Guntram Blohm
@Guntram Blohm 你说得对,我没有想得那么远。 - NETFLOX