On 05/28/2013 06:50 PM, Stanislav Ochotnicky wrote:
Quoting Panu Matilainen (2012-09-21 10:17:27)
A directory (empty or not) can't be automatically replaced by anything
else (symlink or otherwise) in the existing rpm versions. If absolutely
necessary, it can be accomplished by doing the necessary renames and
symlinks in "%pretrans -p <lua>" scriptlet, but that should be only seen
as the last resort as its not exactly a safe operation.
This used to work in %pre scriptlet as well. It seems like RPM is now doing some
additional checks and it will not even get to the point of %pre scriptlet. As
far as I can see for F17/F18 %pre scriptlet will work, but F19+ %pretrans has to
be used, correct?
%pre was never correct for the task because it means rpm wont know about
the change, which can cause side-effects like files from the new package
removed on cleanup of the older package, junk left behind etc. What
exactly happens depends on the details.
And yes, rpm >= 4.11 enforces use of %pretrans for the purpose as it
detects the issue early on, whereas older versions just merrily go ahead
and likely ends up making a mess during the transaction.
Since I *knew* we used %pre for this exact problem before, I have used it and
it broke upgrade paths[1]. I assume just rewriting %pre[2] into following
%pretrans will work:
for key, dir in pairs({"boot", "conf"}) do
path = "%{_datadir}/%{name}/" .. dir
if posix.readlink(path) then
os.remove(path)
end
end:
It certainly seemed to work now, but I wonder if I am just missing something else.
Yup, something like that.
- Panu -
[1] https://admin.fedoraproject.org/updates/FEDORA-2013-9207/xmvn-0.5.0-2.fc19
[2] http://pkgs.fedoraproject.org/cgit/xmvn.git/tree/xmvn.spec#n117
--
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/devel