2008-12-04 3 views
10

Jemand benutzte libapt oder libert, um Pakete aufzulisten und Informationen über das Paket in einem Debian-ähnlichen System zu bekommen?Wie benutzt man libapt (oder libpt) im Debian-ähnlichen System, um Pakete aufzulisten und ihre Infos zu bekommen?

Libapt ist nicht gut dokumentiert, und ich habe einige Beispiele und Tutorials über Libept gefunden. Kann mir jemand zu

  1. eine Liste aller Pakete in dem apt-System
  2. erhalten Informationen über einzelne Pakete bekommen beste Methoden erklärt (wie Name, Version, abhängigkeit, Beschreibung usw.
  3. get Liste Dateien, die von einem einzigen Paket installiert

Arbeit direkt mit apt internen Dateien sind recht einfach, aber ich mag eine Bibliothek verwenden apt Spezifikationen zu respektieren.

Antwort

6

Werfen Sie einen Blick auf wie apt-cache (8) implementiert ist. die Quelle mit apt zu erhalten, ist einfach:

# apt-get source apt 

in der Quelldatei cmdline/apt-cache.cc Theres eine Funktion DumpPackage() genannt, die Informationen aus einer Datei mit dem Namen im Cache extrahiert.

0

Es gibt auch DPKG :: Parse von CPAN, wenn Sie Perl verwenden.

10

In Debian gibt es ein Paket namens libapt-pkg-doc, das einige Dokumentation (wie eine API-Referenz) enthält. Nach der Installation können Sie unter file: ///usr/share/doc/libapt-pkg-doc/html/index.xhtml darauf zugreifen.

Ich hatte gerade erst einen Blick auf libapt und hier ist das, was ich bisher gelernt haben:

Wie alle Pakete aufzulisten:

#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

Werden alle * installierten * Pakete aufgelistet, oder werden alle Pakete aufgelistet, die für die Installation * verfügbar sind? –

+1

@ ThrowawayAccount3Million listet die verfügbaren Pakete auf, wenn ich mich richtig erinnere – eyelash

-2

Just, zu erwähnen, gibt es wpkg, die die Fähigkeit hat, um Debian-Pakete zu lesen und Ihnen alle Informationen zu geben. Sie wissen jedoch nichts über die apt- oder dpkg-Datenbanken. Es wird in der Lage sein, ein .deb zu lesen und Sie können alle Informationen und die Dateien damit extrahieren, alles in C++.

Verwandte Themen