rpm and post script install/run order question (texlive) [2]

Phil Knirsch pknirsch at redhat.com
Tue Oct 9 15:59:28 UTC 2007


Patrice Dumas wrote:
> Hello,
> 
> My previous mail had errors, sorry. Resending.
> 
> I have some questions regarding rpm installation and script run order.
> It is for texlive, and I use letters that corresponds with:
> 
> A texlive
> B texlive-texmf
> C kpathsea
> D texlive-fonts
> E texlive-fonts-texmf
> 
> sA1 updmap-sys
> sA2 texconfig-sys
> 
> 
> We have:
> 
> A
> Requires: B C D
> Requires(post): sA2
> 
> B
> Requires(post): sA1 sA2
> 
> C doesn't requires anything, but has a post script (ldconfig) that must
>   be run before it can be used by programs in A or D.
> 
> D
> Requires: E C
> Requires(post): sA2
> 
> E
> Requires(post): sA1 sA2
> 
> The script sA1 is in A, but to be succesfull, it has to be run with A, B,
> C and D installed. If run multiple time, only the last run must be
> succesfull, but it should be run with all the packages that Requires it
> installed (B E), it is not a problem if previous runs are done wrong.
> sA2 is in A, but only requires A to be present to be successfull.
> 
> Unless I am wrong, in that kind of setup all the packages will be
> installed in the same batch (except maybe for C, but no user will
> ever install C directly).
> 
> I am not sure, however, what would be the order of installation of those
> packages, nor when would sA be called. For example, since C doesn't have
> any Requires(post) on A would it be possible to have an install order
> with C in the end, and the post scripts run before C is installed?
> Maybe there are other subtle possible failures? Also is the installation
> and post script run order dependent on which package is selected for,
> say a yum install, that is will:
> 
> yum install A
> yum install E
> yum install B
> 
> and so on and so forth give the same installation and post script run
> order?
> 
> My question may be a bit confused, so don't hesitate to ask for more
> info. Also I couldn't find a place where such issues are explained in
> depth. In the usual rpm manuals there are some explanations, but not
> precise enough. Is there some doc I could have missed?
> 
> The example is a bit simplified, since additionnally there is a
> dependency cycle between texlive-dvips and texlive-fonts, and also there
> is texlive-latex, but the issues faced shouldn't be different than for
> the example above, unless I missed something.
> 
> --
> Pat
> 

Well, from looking at the dependencies you listed here the dependency 
tree would look like this:




updmap-sys    texconfig-sys    C
   /|\             /|\
    |               |
            E       B
           /|\
            |
            D
           /|\
            |
            A


So effectively this means that on the 1st level of the tree updmap-sys, 
texconfig-sys and C can be ordered in any way as well as on the 2nd 
level E and B as they have no cross and/or chained dependencies.

So to answer your questions:

1) Can C be installed prior to sA being called: No, as the dependency 
chain clearly require B, C and D and therefore those will be installed 
prior to A.

2) Will the various yum install [A|E|B] give the same script run orders? 
Thats not 100% guaranteed as the installation order of E and B as well 
as the installation of updmap-sys, texconfig-sys and C are not fixed by 
any requires, so using a subset of packages to install first (e.g. only 
updmap-sys, texconfig-sys and C) might result in a different order for 
those packages than using a "full" install with A.

There might be some code inside rpm that could possibly have updmap-sys, 
texconfig-sys and C be installed in the same order despite having not 
dependencies between each other, but from an algorithmical point of view 
you can't and shouldn't rely on it.

Or to put it differently: If you need those packages to be installed in 
a specific order then just use Requires.

On the other hand, if those are "soft" requires then things get tricky , 
e.g. IF updmap-sys, texconfig-sys and C get installed then C needs to be 
installed after updmap-sys and/or texconfig-sys. I remember vaguely that 
such "soft" requires (which don't pull in packages automatically but 
which will be honored in case it is already in the transaction) were 
either planed or even already put into rpm, but Panu/JBJ can probably 
tell you a lot more in detail about that.

Read ya, Phil

-- 
Philipp Knirsch              | Tel.:  +49-711-96437-470
Team Lead Core Services      | Fax.:  +49-711-96437-111
Red Hat GmbH                 | Email: Phil Knirsch <pknirsch at redhat.com>
Hauptstaetterstr. 58         | Web:   http://www.redhat.com/
D-70178 Stuttgart, Germany
Motd:  You're only jealous cos the little penguins are talking to me.




More information about the fedora-devel-list mailing list