[Python-Dev] How we can get rid of eggs for 2.6 and beyond

Phillip J. Eby pje at telecommunity.com
Fri Mar 21 20:02:25 CET 2008


At 11:21 AM 3/21/2008 -0500, skip at pobox.com wrote:
>     Joachim> I think, the uninstall should _not_ 'rm -rf' but only 'rm' the
>     Joachim> files (and 'rmdir' directories, but not recursively) that it
>     Joachim> created, and that have not been modified in the meantime (after
>     Joachim> the installation).
>
>That's not sufficient.  Suppose file C (e.g. /usr/local/etc/mime.types) is
>in both packages A and B.
>
>     Install A - this will create C
>     Install B - this might overwrite C, saving a copy, or it might retain
>                 A's copy.
>     Uninstall B - this has to know that C is used by A and not touch it

Correct.  However, in practice, B should not touch C, unless the file 
is shared between them.

This is a key issue for support of namespace packages, at least if we 
want to avoid using .pth files.  (Which is what setuptools-built 
system packages do for namespace packages currently.)

Of course, one possible solution is for both A and B to depend on a 
"virtual package" that contains C, such that both A and B can install 
it if it's not there, and list it in their dependencies.  But this is 
one of the handful of open issues that needs to be resolved with Real 
Life Package Management people, such as Debian, Fedora, etc.

Neither overwriting, refusing to install, nor backups will properly 
address this issue.  However, this is properly a topic for the 
Distutils-SIG or whatever SIG the actual spec goes to.  On Python-Dev 
I'm only looking for a go/no-go on the overall approach.



More information about the Python-Dev mailing list