On Wed, Sep 24, 2008 at 07:27:15PM +0000, Alexey Tourbin wrote:
> On Wed, Sep 24, 2008 at 07:08:54PM +0000, Alexey Tourbin wrote:
> > In package foo, program /usr/bin/foo is both packaged *and* called
> > in its %post script. The program /usr/bin/foo runs /usr/bin/bar,
> > for which we have the dependency "Requires: /usr/bin/bar".
>
> Here is similar example that does not require --noorder option
> to demonstrate the problem. The difference is that packages A
> and B have circular dependencies, so, unless we have "Requires(post)",
> rpm choose to install A first, and its %post script fails.
>
> Name: A
> Version: 1.0
> Release: 1
> Summary: A
> License: GPL
> Group: Development/Other
> Requires: /usr/bin/B
> #Requires(post): /usr/bin/B
> BuildArch: noarch
> AutoReqProv: no
> %package -n B
> Summary: B
> Group: Development/Other
> Requires: A
> AutoReqProv: no
> %description
> %description -n B
> %install
> mkdir -p %buildroot/usr/bin
> cat >%buildroot/usr/bin/A <<EOF
> /usr/bin/B
> EOF
> cat >%buildroot/usr/bin/B <<EOF
> :
> EOF
> chmod +x %buildroot/usr/bin/*
> %files
> /usr/bin/A
> %files -n B
> /usr/bin/B
> %post
> /usr/bin/A
So A requires B and B as a requires(post) to A? This isn't installable
at all, thus it's a packaging bug.
A has B in its requires, so B must be completely installed before
A works (maybe /usr/bin/A calls /usr/bin/B).
But B needs /usr/bin/A in the postinstall.
Cheers,
Michael.
--
Michael Schroeder mls@suse.de
SUSE LINUX Products GmbH, GF Markus Rex, HRB 16746 AG Nuernberg
main(_){while(_=~getchar())putchar(~_-1/(~(_|32)/13*2-11)*13);}
Received on Thu Sep 25 11:08:32 2008