簡體   English   中英

如何在類似debian的系統中使用libapt(或libept)來列出包並獲取它們的信息?

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

有人使用libapt或libept來列出包並在類似debian的系統中獲取有關包的信息嗎?

Libapt沒有詳細記錄,我發現很少有關於libept的例子和教程。 有人可以解釋我最好的方法

  1. 獲取apt-system中每個包的列表
  2. 獲取有關單個包的信息(如名稱,版本,依賴關系,描述等)。
  3. 獲取單個包安裝的文件列表

直接使用apt內部文件非常簡單,但我想使用庫來遵守apt規范。

在debian中有一個名為libapt-pkg-doc的包,其中包含一些文檔(如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;
}

看看apt-cache(8)是如何實現的。 使用apt獲取源代碼很簡單:

# apt-get source apt

在源文件cmdline/apt-cache.cc theres是一個名為DumpPackage()的函數,它從緩存中的命名文件中提取信息。

如果你使用perl,還有來自CPAN的DPKG :: Parse。

只需提一下,有一個wpkg ,它能夠讀取Debian軟件包並為您提供所有信息。 但是,它對apt或dpkg數據庫一無所知。 它將能夠讀取.deb,你可以用C ++提取所有信息和文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM