How to use libapt (or libept) in debian-like system to list packages and get their infos?

前端 未结 3 1693
春和景丽
春和景丽 2021-01-02 01:01

Somebody used libapt or libept to list packages and get informations about package in a debian-like system?

Libapt is not well-documented at all, and i\'ve found few

相关标签:
3条回答
  • 2021-01-02 01:13

    In debian there is a package called libapt-pkg-doc which contains some documentation (like an API reference). Once installed, you can access it at file:///usr/share/doc/libapt-pkg-doc/html/index.xhtml.

    I only just had a look at libapt and here is what I have learned so far:

    How to list all packages:

    #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;
    }
    
    0 讨论(0)
  • 2021-01-02 01:20

    Take a look at how apt-cache(8) is implemented. Obtaining the source with apt is easy:

    # apt-get source apt
    

    In the source file cmdline/apt-cache.cc theres is a function called DumpPackage() which extracts information from a named file in the cache.

    0 讨论(0)
  • 2021-01-02 01:26

    There is also DPKG::Parse from CPAN if you are using perl.

    0 讨论(0)
提交回复
热议问题