Вопрос по package-managers, c++, debian, apt – Как использовать libapt (или libept) в Debian-подобной системе для получения списка пакетов и получения их информации?

11

Кто-то использовал libapt или libept для вывода списка пакетов и получения информации о пакете в системе, подобной debian?

Libapt не совсем хорошо документирован, и я нашел несколько примеров и учебных пособий по libept. Может кто-нибудь объяснить мне лучшие методы

получить список всех пакетов в apt-системеполучить информацию об отдельных пакетах (например, имя, версия, зависимости, описание и т. д.)получить список файлов, установленных одним пакетом

Работать напрямую с внутренними файлами apt довольно просто, но я хочу использовать библиотеку для соблюдения требований apt.

Ваш Ответ

2   ответа
10

libapt-pkg-doc который содержит некоторую документацию (например, ссылку на API). После установки вы можете получить к нему доступ в файле: ///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;
}
Есть ли в этом списке всеустановлены пакеты, или он перечисляет все пакеты, которыедоступны для установки? Throw Away Account
@ ThrowawayAccount3Million перечисляет доступные пакеты, если я правильно помню eyelash
6

как реализован apt-cache (8). Получить исходный код с помощью apt очень просто:

# apt-get source apt

В исходном файлеcmdline/apt-cache.cc есть функция под названиемDumpPackage() который извлекает информацию из именованного файла в кеш.

Похожие вопросы