2008-12-04 37 views
10

有人使用libapt或libept列出軟件包並獲取有關軟件包的信息在類似debian的系統中?如何在類似debian的系統中使用libapt(或libept)來列出軟件包並獲取其信息?

Libapt沒有很好的記錄,我發現幾個關於釋放的例子和教程。有人可以解釋我的最佳方法

  1. 得到使用apt-系統中每個包的列表
  2. 關於單個包(如名稱,版本,相關性,說明等的
  3. 獲取列表
  4. 獲取信息由單一的封裝內部容易安裝文件

工作文件直接是很簡單,但我想用一個庫尊重容易規範。

回答

6

看看apt-cache(8)如何實現。獲得使用apt源很簡單:

# apt-get source apt 

在源文件中cmdline/apt-cache.cc那裏有一個叫DumpPackage()函數提取從高速緩存中的一個名爲文件的信息。

0

如果您使用的是Perl,還有來自CPAN的DPKG :: Parse。

10

在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; 
} 
+0

是否列出所有已安裝的軟件包,還是列出了所有可用於安裝的軟件包? – 2016-09-18 07:27:38

-2

就更不用說了,有wpkg它有能力閱讀Debian軟件包並提供所有信息。但是,它不知道有關apt或dpkg數據庫的任何信息。它將能夠讀取.deb文件,並且可以使用C++提取所有信息和文件。

相關問題