Skip to content

Commit aa37de9

Browse files
authored
[ASB] Retry package installation without cacheonly option when the package may not be cached (#1210)
1 parent 206c1a3 commit aa37de9

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

src/common/commonutils/PackageUtils.c

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,8 @@ static int CheckAllPackages(const char* commandTemplate, const char* packageMana
154154
static int UpdateInstalledPackagesCache(OsConfigLogHandle log)
155155
{
156156
const char* commandTemplateDpkg = "%s-query -W -f='${binary:Package}\n'";
157-
const char* commandTemplateRpm = "%s -qa --queryformat \"%{NAME}\n\"";
158-
const char* commandTemplateYumDnf = "%s list installed --cacheonly | awk '{print $1}'";
157+
const char* commandTemplateRpm = "%s -qa --queryformat \"%{NAME}\\n\"";
158+
const char* commandTemplateYumDnf = "%s list installed --cacheonly | awk '{print $1}'";
159159
const char* commandTmeplateZypper = "%s search -i";
160160

161161
char* results = NULL;
@@ -191,7 +191,7 @@ static int UpdateInstalledPackagesCache(OsConfigLogHandle log)
191191

192192
if ((0 == status) && (NULL != results))
193193
{
194-
if (NULL != (buffer = DuplicateString(results)))
194+
if (NULL != (buffer = FormatAllocateString("\n%s", results)))
195195
{
196196
FREE_MEMORY(g_installedPackagesCache);
197197
g_installedPackagesCache = buffer;
@@ -463,7 +463,14 @@ int InstallOrUpdatePackage(const char* packageName, OsConfigLogHandle log)
463463

464464
if (0 == status)
465465
{
466-
status = IsPackageInstalled(packageName, log);
466+
if ((0 != (status = IsPackageInstalled(packageName, log))) && (g_tdnfIsPresent || g_dnfIsPresent || g_yumIsPresent))
467+
{
468+
// When package installation ends with 0 (success) but the package is not installed after, do one retry without the --cacheonly option
469+
if (0 == (status = CheckOrInstallPackage(commandTemplate, g_tdnfIsPresent ? g_tdnf : (g_dnfIsPresent ? g_dnf : g_yum), packageName, log)))
470+
{
471+
status = IsPackageInstalled(packageName, log);
472+
}
473+
}
467474
}
468475

469476
if (0 == status)

0 commit comments

Comments
 (0)