![缺少依赖项,但是包没有损坏?](https://linux22.com/image/847957/%E7%BC%BA%E5%B0%91%E4%BE%9D%E8%B5%96%E9%A1%B9%EF%BC%8C%E4%BD%86%E6%98%AF%E5%8C%85%E6%B2%A1%E6%9C%89%E6%8D%9F%E5%9D%8F%EF%BC%9F.png)
上下文
我想审核我已安装的软件包。我创建了一个 Python 助手,调用dpkg-query
,使用 Python 字典和列表创建一个软件包数据库。助手足够智能,可以检查依赖项是否确实存在于字典中,从而克隆已安装的软件包数据库。我收到软件包错误wings3d
:助手通知我erlang-abi-13.a
缺少名为的软件包。Synaptic 告诉我此软件包未安装。它仍将此软件包列为wings3d
依赖项,但将其显示在依赖项中,使用斜体而不是常规字体。
问题
当 Synaptic 使用斜体显示依赖项时,这是什么意思?为什么依赖项可能缺失,而软件包似乎没有损坏?
答案1
所有以 开头的包erlang-abi
都是虚拟包。从 apt-cache 输出中可以看出:
apt-cache show erlang-abi-15.b
N: Can't select versions from package 'erlang-abi-15.b' as it is purely virtual
N: No packages found
你的助手没有考虑到虚拟包,所以它失败了。这也是为什么 Synaptic 显示包时斜体。
答案2
做
apt-cache depends erlang-abi-13.a # see what depends upon it
和
apt-cache rdepends erlang-abi-13.a # see what it depends upon
然后对 wings3d 执行相同操作,查看是否列出了 erlang-abi-13.a。
进行发行版更新时,软件包和要求可能会有点混乱。这可能是造成这种情况的原因。