13

誰かがlibaptまたはlibeptを使用してパッケージを一覧表示し、Debianのようなシステムでパッケージに関する情報を取得しましたか?

Libaptは十分に文書化されておらず、libeptに関するいくつかの例とチュートリアルを見つけました。誰かが私に最良の方法を説明できますか

  1. apt-system内のすべてのパッケージのリストを取得します
  2. 単一のパッケージに関する情報(名前、バージョン、依存関係、説明など)を取得します。
  3. 単一のパッケージによってインストールされたファイルのリストを取得します

apt内部ファイルを直接操作するのは非常に簡単ですが、ライブラリを使用してapt仕様を尊重したいと思います。

4

3 に答える 3

12

libapt-pkg-docdebian には、いくつかのドキュメント (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;
}
于 2014-05-31T12:33:13.660 に答える
6

apt-cache(8) がどのように実装されているか見てみましょう。apt を使用してソースを取得するのは簡単です。

# apt-get source apt

ソース ファイルには、キャッシュ内の名前付きファイルから情報を抽出cmdline/apt-cache.ccする関数が呼び出されます。DumpPackage()

于 2008-12-04T18:16:17.687 に答える
0

perl を使用している場合は、CPAN の DPKG::Parse もあります。

于 2009-02-26T15:57:33.373 に答える