为什么 ffmpeg 作为 x11 的一部分被删除?

为什么 ffmpeg 作为 x11 的一部分被删除?

我有一个没有监视器的嵌入式设备,运行 Debian Jessie。由于我不需要 UI,因此我考虑清理 X11 软件包。这给出了一个有点出乎意料的结果:

 sudo -u nobody apt-get remove '^x11' -s 

这会产生以下结果:

以下软件包将被删除: ffmpeg libavdevice57 libavfilter6 ... libx11-dev libxau-dev ...

将被删除的 ffmpeg 是此版本来自 jessie-backports。那是不是故意的。严格来说libx11-dev不匹配'^x11',但我可以解释为自动安装的软件包被自动删除。但是ffmpeg是手动安装的(由 确认apt-mark showmanual)。

^x11导致此问题的package name 和 ffmpeg 之间的链接是什么?

我也尝试过sudo -u nobody apt-get remove '^vnc' -ssudo -u nobody apt-get autoremove 都不影响 ffmpeg;它不是一些无论如何都会被自动删除的孤立包。它与 X11 特别相关。

答案1

我还没有跟踪完整的依赖关系树,但链接的包至少具有以下依赖关系链:ffmpeg 依赖于 libsdl2,而 libsdl2 又依赖于 libxss1,而 libxss1 又依赖于 x11-common。

由于x11-commonmatches ^x11,它被删除,打破了 ffmpeg 的依赖关系。因此,必须删除 ffmpeg。假设这是唯一的这样的链,您应该能够通过确保它x11-common不被删除来保留 ffmpeg。

答案2

您被告知只有几个 ffmpeg 库被删除,因为没有其他包引用它们。

如果你这样做...

apt-get install ffmpeg

然后删除,然后这些库将保留......也许......

在一段时间内,ffmpeg 被(愚蠢地)从存储库中删除。现在庆幸的是它又回来了。

根据您在 Jessie 中使用的具体软件包,将会产生不同的结果。

如果您迁移到最新的 Ubuntu,您将发生一组完全不同的操作,因为 ffmpeg 的伪装代码(我的意见)现在已被删除+ true/real ffmpeg 现在再次提供。

我记得,对于 Jessie,poser 代码被称为 aconv 或类似的东西,所以如果您尝试在某些时候安装 ffmpeg,您要么会收到一条消息,说要安装 aconv,要么 ffmpeg 可能是指向 aconv 的虚拟包。这些废话多年来一直令人困惑。

请记住。 APT 系统知道它在做什么 + 仅当孤儿包不再有引用时才会删除它们。

因此,如果一个包被标记为要删除,那么无论出于什么原因,该包都应该被删除(没有引用)。

相关内容