[Distutils] PEP 345, PEP 376, PEP 386

Paul Moore p.f.moore at gmail.com
Thu Jun 4 14:23:21 CEST 2009

2009/6/4 Tarek Ziadé <ziade.tarek at gmail.com>:
>>> - PEP 376 | status : waiting for Phillip complementary feedback (and
>>> anyone else of course)
>> I can imagine distutils uninstalling files previously installed by dpkg
>> as a shortcut to breaking a machine. Though I'm not sure what will
>> actually happen in practice.
> Distutils defines a standard for an EGG-INFO structure, and provides a
> API for the uninstallation that is more likely to be a reference implementation.
> Although, It is already providing an install feature.
> If uninstalling a package with Distutils, while it was installed by dpkg breaks,
> I can imagine that in the very same system, you can also break it
> if you *install* packages with Distutils, easy_install, pip because
> you shortcut dpkg
> as well.

With Windows, if you install using bdist_wininst and then uninstall
using the (currently nonexistent) distutils uninstall, I'd expect that
it wouldn't remove the Add/Remove programs support items in the
registry, and the Removexxx.exe and xxx-wininst.log files installed by
bdist_wininst. The system would then still think that the package was
installed, even though it isn't. (And the system uninstall may break -
I'm not sure).

Given that Windows doesn't do dependency management, this is a
relatively minor form of breakage, but on a system that does, having
the system metadata wrong could cause incorrect dependencies to be
installed at a later date.

> I think this is the responsability of such a system to make sure it handles
> all installation and uninstallation.

It's surely not the responsibility of the OS to handle you "going
behind its back" - if I did "rm -rf /usr" on a Unix system, I wouldn't
think that it's the responsibility of the system to handle this (other
than by breaking!)

I'd say that it's distutils' responsibility not to offer to uninstall
anything it didn't install.


More information about the Distutils-SIG mailing list