![如何在 Ubuntu 上查找包更新的服务依赖项?](https://linux22.com/image/544716/%E5%A6%82%E4%BD%95%E5%9C%A8%20Ubuntu%20%E4%B8%8A%E6%9F%A5%E6%89%BE%E5%8C%85%E6%9B%B4%E6%96%B0%E7%9A%84%E6%9C%8D%E5%8A%A1%E4%BE%9D%E8%B5%96%E9%A1%B9%EF%BC%9F.png)
这个问题类似于这个。
安装软件包更新时,使用 很容易找出软件包依赖项apt-cache depends
,但是,我不知道如何找出可能受到影响的服务。在某些情况下,这是一个严重的问题;另一个问题的答案表明服务重启只需要几秒钟,但这并不总是正确的,例如一个大的 MySQL 实例可能需要几个小时才能关闭!假设有一个 php5-curl 更新。这取决于 libapache2-mod-php5,而后者又取决于 apache2-mpm-prefork。该包在 中的提供列表中有“apache2” aptitude show
,所以这告诉我它与该服务相关,但不一定需要重新启动。我怀疑单靠包依赖关系不足以解决这个问题——我可以想象类似的依赖链不需要重新启动服务(例如,如果服务动态加载这样的外部组件)。
当我执行 时aptitude full-upgrade
,我得到了很好的输出“以下软件包将被升级...”。我想要的是该输出中的一段内容“以下服务将被重新启动...”。我该如何获得它?
答案1
一种确定的方法是阅读软件包附带的安装(前/后)脚本。也许 grep“restart”就足够了。
另一种方法是拥有一个相同的测试系统,您可以在其中运行命令并查看会发生什么。
答案2
你必须创建一个脚本来查找系统更新,就像 jojo 说的搜索字符串“restart”