[Distutils] PEP 345, PEP 376, PEP 386

David Cournapeau david at ar.media.kyoto-u.ac.jp
Thu Jun 4 14:38:42 CEST 2009


Brian Sutherland wrote:
> 2009/6/4 Tarek Ziadé <ziade.tarek at gmail.com>:
>   
>> Oups messed up sorry -> resending my answer
>>
>> On Thu, Jun 4, 2009 at 11:52 AM, Brian Sutherland
>> <brian at vanguardistas.net> wrote:
>>     
>>>>   - http://svn.python.org/projects/peps/trunk/pep-0386.txt
>>>>         
>>>    ...  < V('1.0.dev456')
>>>    ...  < V('1.0')
>>>    ...  < V('1.0.dev456post623')
>>>
>>> Looks like a typo or very un-intuitive. It doesn't seem right that a
>>> "dev" version sorts after a full release.
>>>       
>> This is a dev version of a post-release version. Which is an edge case
>> submitted by Phillip.
>>
>> How would you write it ?
>>     
>
>     ...  < V('1.0.dev456')
>     ...  < V('1.0.dev456post123')  # post-release of a dev version
>     ...  < V('1.0')
>     ...  < V('1.0.post456dev623')  # dev version of a post-release
>     ...  < V('1.0.post456')            # post release
>
> i.e. that a postfix of "dev" means "before" and a postfix of "post" means after.
>
>   
>>>> - 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.
>>     
>
> Yep. Though I think that nowdays dpkg installs to a different directory than
> Distutils' default. So users have to specify extra options to break
> their systems.
>   

That's unfortunately not true: by default (wo any --prefix option),
distutils install into /usr. So if a user just uses sudo with a
distutils-based package, he is very likely to mess up his system.

I think this should be considered as a distutils bug - by default, most
source distributions install into /usr/local (autoconf-based projects
certainly do).

> How should such a system stop distutils (acting as root) from doing an
> uninstallation?
>   

Ideally, distutils should detect whether it installed the package itself
or not.

IMHO, uninstall is beyond the scope of distutils; it is very difficult
to get right, with so many ways to screw up a system badly.

cheers,

David


More information about the Distutils-SIG mailing list