Mail Archives: cygwin/2004/09/24/18:03:37
Igor Pechtchanski wrote:
> It'll work for simple programs, but not for packages where preremove
> scripts erase files that are needed to run some programs from that
> package. One example (not necessarily a perfect one) that comes to mind
> right away is the base-files package, where the preremove script will
> currently erase /etc/profile (so any script executing "bash -l" will not
> get the expected results). I'm sure there are better examples...
>
> FWIW, this is probably somewhat similar to the issue of circular
> dependencies of postinstall scripts -- there is no good general solution
> if we assume monolithic scripts.
Wouldn't the "proper" way to do this be to build the dependency tree
then remove packages in depth-first order, running each preremove before
removing each package list?
Example:
Dependency tree:
A
/ \
B C
\
D
So lets say you want to remove and then upgrade new versions of A, B, C,
and D.
You first get the depth-first order: D, C, B, A.
Then you run: preremove(D), remove-files(D), preremove(C),
remove-files(C), preremove(B), remove-files(B), preremove(A),
remove-files(A)
To install you do the same thing, except you'd do breadth-first and
you'd do postinstall(X) after each install-files(X). (I know this is
not the current method, where all postinstalls are run in a batch at the
end.)
Brian
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -