2008-12-04 24 views
10

Quelqu'un a utilisé libapt ou libept pour lister les paquets et obtenir des informations sur le paquet dans un système de type debian?Comment utiliser libapt (ou libept) dans un système de type debian pour lister les paquets et obtenir leurs infos?

Libapt n'est pas bien documenté du tout, et j'ai trouvé quelques exemples et tutoriels sur libept. Quelqu'un peut-il me expliquer les meilleures méthodes pour

  1. obtenir une liste de tous les paquets dans le apt-système
  2. informations get sur les paquets simples (comme le nom, la version, dépendances, description, etc.
  3. obtenir la liste des fichiers installés par un seul paquet

directement des fichiers internes apt est assez simple, mais je veux utiliser une bibliothèque pour respecter les spécifications apt.

Répondre

6

Jetez un oeil à comment apt-cache (8) est implémenté. L'obtention de la source avec apt est facile:

# apt-get source apt 

Dans le fichier source est cmdline/apt-cache.cc Theres une fonction appelée DumpPackage() qui extrait des informations à partir d'un fichier nommé dans le cache.

0

Il y a aussi DPKG :: Parse de CPAN si vous utilisez perl.

10

Dans debian, il existe un package appelé libapt-pkg-doc qui contient de la documentation (comme une référence d'API). Une fois installé, vous pouvez y accéder dans le fichier: ///usr/share/doc/libapt-pkg-doc/html/index.xhtml.

Je ne viens d'avoir un coup d'œil à libapt et voici ce que je l'ai appris jusqu'à présent:

Comment lister tous les paquets:

#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

Est-ce que cela liste tous les paquets * installés *, ou liste-t-il tous les paquets * disponibles pour l'installation *? –

+1

@ ThrowawayAccount3Million il liste les paquets disponibles si je me souviens bien – eyelash

-2

Juste mentionner, il y a wpkg qui a la capacité lire les paquets Debian et vous donner toutes les informations. Cependant, il ne sait rien sur les bases de données apt ou dpkg. Il sera capable de lire un .deb et vous pourrez extraire toutes les informations et les fichiers avec lui, tout en C++.

Questions connexes