Мне нужно установить несколько пакетов в моей программе на 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 не говорит, что пакет установлен! На самом деле пакет не установлен.
Так что-нибудь не так с этим кодом? что-нибудь еще нужно сделать, чтобы установка была завершена?
Задача ещё не решена.
Других решений пока нет …