установка пакета debian программно с помощью libapt-pkg

Мне нужно установить несколько пакетов в моей программе на C ++, поэтому я написал следующий код:

    pkgInitConfig(*_config);
pkgInitSystem(*_config, _system);

pkgCacheFile cache_file;
pkgCache *cache = cache_file.GetPkgCache();
pkgDepCache *dep_cache = cache_file.GetDepCache();
pkgPackageManager *pm = new pkgPackageManager(dep_cache);

for(pkgCache::PkgIterator package = cache->PkgBegin(); !package.end(); package++)
{
if((*package).CurrentState == pkgCache::State::NotInstalled)
{
if(package.Name() == "MyPkgName")
if(dep_cache->MarkInstall(package))
{
std::cout << "Marked" << std::endl;
}
break;
}
}

APT::Progress::PackageManager *progress =   APT::Progress::PackageManagerProgressFactory();
pkgPackageManager::OrderResult rs = pm->DoInstall(progress);

if(rs == pkgPackageManager::Completed)
std::cout << "Completed" << std::endl;
else if (rs == pkgPackageManager::Failed)
std::cout << "Failed!" << std::endl;
else
std::cout << "InComplete!" << std::endl;

Кажется, что этот блок кода делает свою работу и результат pm->DoInstall() функция pkgPackageManager::Completed, но когда я пытаюсь установить этот пакет из командной строки, apt-get не говорит, что пакет установлен! На самом деле пакет не установлен.

Так что-нибудь не так с этим кодом? что-нибудь еще нужно сделать, чтобы установка была завершена?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …