在 C 中真的需要实现 `dpkg-query -S` 吗?

问题描述

https://askubuntu.com/questions/1314173/where-are-the-database-files-queried-by-dpkg-query/1314175

正如此处所讨论的,所有 dpkg-query -S 文件都在 /var/lib/dpkg/info/*.list 中。

以下测试表明简单的 grep 命令比 dpkg-query -S 快得多。考虑到 dpkg-query -S 的速度不快,而且看不到 dpkg-query -S 实际查询的文件并不明显,是否真的有必要在 C 中实现?

$ time dpkg-query -S /bin/ls
coreutils: /bin/ls

real    0m0.176s
user    0m0.116s
sys 0m0.060s
$ time grep -H '^/bin/ls$' /var/lib/dpkg/info/*.list
/var/lib/dpkg/info/coreutils.list:/bin/ls

real    0m0.091s
user    0m0.075s
sys 0m0.016s

解决方法

尽管 dpkg 数据库的布局和格式是管理员友好的,并且预计那些可能需要在恢复情况下或紧急情况下使用它的人,这个“接口”并没有扩展到除其他程序之外的其他程序dpkg 工具套件。

请参阅在此类访问上触发的 lintian 检查: https://lintian.debian.org/tags/uses-dpkg-database-directly

并查看以下规范,了解即将进行的更改将破坏任何此类直接使用,而不是使用官方支持的接口: https://wiki.debian.org/Teams/Dpkg/Spec/MetadataTracking

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...