有人使用libapt或libept列出軟件包並獲取有關軟件包的信息在類似debian的系統中?如何在類似debian的系統中使用libapt(或libept)來列出軟件包並獲取其信息?
Libapt沒有很好的記錄,我發現幾個關於釋放的例子和教程。有人可以解釋我的最佳方法
- 得到使用apt-系統中每個包的列表 關於單個包(如名稱,版本,相關性,說明等的
- 獲取列表
- 獲取信息由單一的封裝內部容易安裝文件
工作文件直接是很簡單,但我想用一個庫尊重容易規範。
有人使用libapt或libept列出軟件包並獲取有關軟件包的信息在類似debian的系統中?如何在類似debian的系統中使用libapt(或libept)來列出軟件包並獲取其信息?
Libapt沒有很好的記錄,我發現幾個關於釋放的例子和教程。有人可以解釋我的最佳方法
工作文件直接是很簡單,但我想用一個庫尊重容易規範。
看看apt-cache(8)如何實現。獲得使用apt源很簡單:
# apt-get source apt
在源文件中cmdline/apt-cache.cc
那裏有一個叫DumpPackage()
函數提取從高速緩存中的一個名爲文件的信息。
如果您使用的是Perl,還有來自CPAN的DPKG :: Parse。
在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;
}
就更不用說了,有wpkg它有能力閱讀Debian軟件包並提供所有信息。但是,它不知道有關apt或dpkg數據庫的任何信息。它將能夠讀取.deb文件,並且可以使用C++提取所有信息和文件。
是否列出所有已安裝的軟件包,還是列出了所有可用於安裝的軟件包? – 2016-09-18 07:27:38