有人使用libapt或libept列出包并在类似debian的系统中获取有关包的信息吗?
Libapt没有完全记录,我发现很少有关于libept的例子和教程。
可以向某人解释我最好的方法直接使用apt内部文件非常简单,但我想使用库来遵守apt规范。
答案 0 :(得分:10)
在debian中有一个名为libapt-pkg-doc
的包,其中包含一些文档(如API参考)。安装完成后,您可以通过以下文件访问它:///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;
}
答案 1 :(得分:6)
看看apt-cache(8)是如何实现的。使用apt获取源代码很简单:
# apt-get source apt
在源文件cmdline/apt-cache.cc
中,theres是一个名为DumpPackage()
的函数,它从缓存中的命名文件中提取信息。
答案 2 :(得分:0)
如果你使用perl,还有来自CPAN的DPKG :: Parse。
答案 3 :(得分:-2)
简而言之,有wpkg能够读取Debian软件包并为您提供所有信息。但是,它对apt或dpkg数据库一无所知。它将能够读取.deb,你可以用C ++提取所有信息和文件。