On Mar 30, 2009, at 9:39 AM, Niels de Vos wrote:
Jeff Johnson wrote:
On Mar 30, 2009, at 9:05 AM, Niels de Vos wrote:
That isn't true for FC4 either. Its been almost a decade since requires and prereq are handled identically.
I'm not convinced on this point :-/ Pretty sure there is a difference when installing only two RPMs with changed Requires/PreReq. However I checked with rpm, not yum?! (yes, without loops)
So shop a different answer if you wish. I'm just the guy who wrote the code in RPM and who tries to explain how to fix packaging problems. If you don't like or believe my answers, by all means, shop elsewhere.
Please don't get me wrong, I'm grateful for you advise and explanations.
It's just that I've checked behavior of Requires/PreReq a long time ago with FC4 and am surprised to see that my assumptions are (completely) wrong...
NP. I'm just trying for solid analysis of packaging problems. You're not the only person who thinks that replacing Requires: with PreReq: does something meaningful.
(aside) There is most definitely an effect (because the dependency is not ignored in a loop) if PreReq: instead of Requires: is used. But its about *loops*, not some magical property of PreReq:.
And relying on how RPM breaks loops is too obscure and feeble for reliable packaging, because of nested dependency loops and erasure ordering and ...
Otherwise, adding an additional dependency (use Requires: or PreReq: to taste, they are synonyms) will change package install (but not erase, that's a different problem) ordering.
Ok. Thanks for explaining :)
Hint: there is almost certainly a dependency loop because you are trying to use an executable in a %pre script in the *-libs package that has not yet been installed.
So the library package needs to be installed before the executable you are trying to use in a %pre script.
The original question as about creating a user/group as owner of some files in the libs-package. The creation was done by %pre in the base-package. Installing the -libs works, but gives errors about the missing user/group.
A missing binary or library is obviously not the case here.
OK, there's hope that the packaging can be adjusted to fix the problem then. Note that I haven't looked at the root cause of the problem, have just been responding to the suggested replace with PreReq: as a solution.
That basically means that you cannot do what you are attempting in the *-libs %pre script.
Which then turns the question into How do I do <mumble> if I can't use a %pre script in a *-libs package?
My conclusion: Put the creation of users/groups in the <package>-libs, <package> will be installed after <package>-libs.
That will most definitely work if *-libs is always the 1st package of the set that needs the user/group added.
All other packages then need to depend on the 1st package which adds the user/group. Either PreReq: or Requires: should accomplish that.
No other adornment, like Requires(pre):, will be needed. You can add the (pre) context marker in the *-libs package if you wish; other packages should just use a Requires: (or PreReq: if you want, it simply does not matter).
73 de Jeff