RPM Community Forums

Mailing List Message of <rpm-devel>

Re: %post-script prerequisites

From: Michael Schroeder <mls@suse.de>
Date: Thu 25 Sep 2008 - 11:08:31 CEST
Message-ID: <20080925090831.GB20089@suse.de>
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
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.