diff options
-rw-r--r-- | lib/transaction.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/transaction.c b/lib/transaction.c index 82d570c62..9d8dbcf0a 100644 --- a/lib/transaction.c +++ b/lib/transaction.c @@ -571,8 +571,14 @@ assert(otherFi != NULL); } else { /* Skip create on all but the first instance of a shared file */ rpmFileAction oaction = rpmfsGetAction(otherFs, otherFileNum); - if (oaction != FA_UNKNOWN && !XFA_SKIPPING(oaction)) - rpmfsSetAction(fs, i, FA_SKIP); + if (oaction != FA_UNKNOWN && !XFA_SKIPPING(oaction)) { + rpmfileAttrs oflags; + /* ...but ghosts aren't really created so... */ + oflags = rpmfiFFlagsIndex(otherFi, otherFileNum); + if (!(oflags & RPMFILE_GHOST)) { + rpmfsSetAction(fs, i, FA_SKIP); + } + } } /* Skipped files dont need fixup size or backups, %config or not */ |