有人使用 libapt 或 libept 在类似 debian 的系统中列出软件包并获取有关软件包的信息?
Libapt 根本没有很好的文档记录,我发现很少有关于 libept 的示例和教程。有人可以解释我最好的方法吗
- 获取 apt-system 中每个包的列表
- 获取有关单个包的信息(如名称、版本、依赖项、描述等。
- 获取单个包安装的文件列表
直接使用 apt 内部文件非常简单,但我想使用一个库来尊重 apt 规范。
有人使用 libapt 或 libept 在类似 debian 的系统中列出软件包并获取有关软件包的信息?
Libapt 根本没有很好的文档记录,我发现很少有关于 libept 的示例和教程。有人可以解释我最好的方法吗
直接使用 apt 内部文件非常简单,但我想使用一个库来尊重 apt 规范。
在 debian 中有一个名为的包libapt-pkg-doc
,其中包含一些文档(如 API 参考)。安装后,您可以通过 file:///usr/share/doc/libapt-pkg-doc/html/index.xhtml 访问它。
我只是看了一下 libapt,这是我到目前为止所学到的:
如何列出所有包:
#include <apt-pkg/cachefile.h>
#include <apt-pkg/pkgcache.h>
int main() {
// _config and _system are defined in the libapt header files
pkgInitConfig(*_config);
pkgInitSystem(*_config, _system);
pkgCacheFile cache_file;
pkgCache* cache = cache_file.GetPkgCache();
for (pkgCache::PkgIterator package = cache->PkgBegin(); !package.end(); package++) {
std::cout << package.Name() << std::endl;
}
return 0;
}
看看 apt-cache(8) 是如何实现的。使用 apt 获取源代码很容易:
# apt-get source apt
在源文件cmdline/apt-cache.cc
中,有一个函数调用DumpPackage()
,它从缓存中的命名文件中提取信息。
如果您使用 perl,还有来自 CPAN 的 DPKG::Parse。