On Apr 13, 2008, at 8:16 AM, Ralf S. Engelschall wrote:
> I cannot really provide a generic reproducer, but I'm these days
> upgrading lots of servers and I now the third time observed something
> strange:
>
Without a reproducer, generic or otherwise, don't expect a fix or a
change.
I'm an engineer, not a "strange" exorcist.
Meanwhile, the strongest clue is the ".rpmorig" suffix that
predominates.
A .rpmorig suffix is added in lib/fsm.c under these conditions:
case FA_BACKUP:
if (!(fsm->fflags & RPMFILE_GHOST)) /* XXX Don't if %
ghost file. */
fsm->osuffix = (teAdding ? SUFFIX_RPMORIG :
SUFFIX_RPMSAVE);
break;
The FA_BACKUP state is reached in lib/transaction.c in 2 places. The
first
place for FA_BACKUP is more typical in my experience, unpackaged files
that differ, and is also the case for a file in a TR_ADDED package:
if ((FFlags & RPMFILE_CONFIG) && (FFlags &
RPMFILE_EXISTS)) {
/* Here is a non-overlapped pre-existing config
file. */
fi->actions[i] = (FFlags & RPMFILE_NOREPLACE)
? FA_ALTNAME : FA_BACKUP;
There's a similar analysis for .rpmnew, only slightly harder.
> | warning: /usr/opkg/.bash_login created as /usr/
> opkg/.bash_login.rpmnew
> | warning: /usr/opkg/.bashrc created as /usr/opkg/.bashrc.rpmnew
> | warning: /usr/opkg/etc/openpkg/managers saved as /usr/opkg/etc/
> openpkg/managers.rpmorig
> | warning: /usr/opkg/etc/openpkg/platform saved as /usr/opkg/etc/
> openpkg/platform.rpmorig
> | warning: /usr/opkg/etc/openpkg/release saved as /usr/opkg/etc/
> openpkg/release.rpmorig
> | warning: /usr/opkg/etc/openpkg/rpmlua saved as /usr/opkg/etc/
> openpkg/rpmlua.rpmorig
> | warning: /usr/opkg/etc/openpkg/rpmmacros saved as /usr/opkg/
> etc/openpkg/rpmmacros.rpmorig
> | warning: /usr/opkg/etc/openpkg/rpmpopt saved as /usr/opkg/etc/
> openpkg/rpmpopt.rpmorig
> | warning: /usr/opkg/etc/rc.conf created as /usr/opkg/etc/
> rc.conf.rpmnew
>
> This is during e.g. upgrading the RPM 5 package
> "openpkg-4.0a0-20080412"
> to "openpkg-4.0a0-20080413" (the difference is just a small typo fix,
> everything else is the same in the package!). And now let's look at
> the
> %config files which produced the warnings:
>
> | # cd /usr/opkg/etc/openpkg/
> | # ls -l
> | total 401
> | -rw-r--r-- 1 root opkg 6 Apr 12 17:01 license
> | drwxr-xr-x 2 opkg opkg 6 Apr 13 13:30 license.d
> | -rw-rw-r-- 1 opkg opkg 60 Apr 13 13:30 managers
> | -rw-rw-r-- 1 opkg opkg 60 Apr 12 17:46 managers.rpmorig
> | -rw-r--r-- 1 opkg opkg 1837 Apr 13 13:30 openpkg.com.pgp
> | -rw-r--r-- 1 opkg opkg 1860 Apr 13 13:30 openpkg.net.pgp
> | -rw-r--r-- 1 opkg opkg 1807 Apr 13 13:30 openpkg.org.pgp
> | -rw-r--r-- 1 opkg opkg 20 Apr 13 13:30 platform
> | -rw-r--r-- 1 opkg opkg 20 Apr 12 17:46 platform.rpmorig
> | -rw-r--r-- 1 opkg opkg 488 Apr 13 13:31 register.conf
> | -rw-r--r-- 1 opkg opkg 22005 Apr 13 13:31 register.prep
> | -rw-r--r-- 1 opkg opkg 322 Apr 13 13:31 register.tran
> | -rw-r--r-- 1 opkg opkg 128 Apr 13 13:31 register.util
> | -rw-r--r-- 1 opkg opkg 61 Apr 13 13:30 release
> | -rw-r--r-- 1 opkg opkg 61 Apr 12 17:46 release.rpmorig
> | -rw-r--r-- 1 opkg opkg 6428 Apr 13 13:30 rpmlua
> | drwxr-xr-x 2 opkg opkg 2 Apr 13 13:30 rpmlua.d
> | -rw-r--r-- 1 opkg opkg 6428 Apr 12 17:46 rpmlua.rpmorig
> | -rw-r--r-- 1 opkg opkg 46317 Apr 13 13:30 rpmmacros
> | drwxr-xr-x 2 opkg opkg 2 Apr 13 13:30 rpmmacros.d
> | -rw-r--r-- 1 opkg opkg 46317 Apr 12 17:46 rpmmacros.rpmorig
> | -rw-r--r-- 1 opkg opkg 7537 Apr 13 13:30 rpmpopt
> | drwxr-xr-x 2 opkg opkg 2 Apr 13 13:30 rpmpopt.d
> | -rw-r--r-- 1 opkg opkg 7537 Apr 12 17:46 rpmpopt.rpmorig
> | -rw-r--r-- 1 opkg opkg 159 Nov 8 18:52 uuid
>
> As you can see, no content change, no permission changes, nothing
> (sure,
> as I said, only a typo in a completely different edge of the packaging
> was fixed, everything else remained the same). Nevertheless RPM 5
> thought there was a conflict and produced .rpmorig or .rpmnew files
> for
> all(!) %config files in the package. The first time I observed this, I
> still thought: "well, strange, but perhaps there was really a
> conflict".
> But now I'm not than surprised: there is really no difference, but
> nevertheless RPM 5 thinks it is.
>
The file action state also involves values in the old/new Headers. That
information needs to be displayed as well as the file attributes in
order
to understand the behavior.
> Does anybody has a clue what happened here?
>
> All this is with RPM 5.1b2, BTW!
>
> For one installation I currently even can reproduce the problem:
>
> | # /usr/opkg/bin/openpkg rpm -V openpkg
> | S.5....T c /usr/opkg/etc/rc.conf
> | # /usr/opkg/bin/openpkg rpm -Uvh /usr/opkg/RPM/PKG/
> openpkg-4.0a0-20080413.amd64-freebsd7.0-opkg.rpm --replacepkgs
> | Preparing...
> ########################################### [100%]
> | 1:openpkg warning: /usr/opkg/.bash_login
> created as /usr/opkg/.bash_login.rpmnew
> | warning: /usr/opkg/.bashrc created as /usr/opkg/.bashrc.rpmnew
> | warning: /usr/opkg/etc/openpkg/managers saved as /usr/opkg/etc/
> openpkg/managers.rpmorig
> | warning: /usr/opkg/etc/openpkg/platform saved as /usr/opkg/etc/
> openpkg/platform.rpmorig
> | warning: /usr/opkg/etc/openpkg/release saved as /usr/opkg/etc/
> openpkg/release.rpmorig
> | warning: /usr/opkg/etc/openpkg/rpmlua saved as /usr/opkg/etc/
> openpkg/rpmlua.rpmorig
> | warning: /usr/opkg/etc/openpkg/rpmmacros saved as /usr/opkg/etc/
> openpkg/rpmmacros.rpmorig
> | warning: /usr/opkg/etc/openpkg/rpmpopt saved as /usr/opkg/etc/
> openpkg/rpmpopt.rpmorig
> | warning: /usr/opkg/etc/rc.conf created as /usr/opkg/etc/
> rc.conf.rpmnew
> | ########################################### [100%]
>
If you add -Uvv instead of -Uvh, the FA_BACKUP and/or other elements
necessary to diagnose the behavior are displayed.
73 de Jeff
Received on Sun Apr 13 15:34:29 2008