[Distutils] bdist_nsis, bdist_deb, bdist_msi, bdist_inno, bdist_pkgtool, bdist_sdux, bdist_mpkg, etc.

Bob Ippolito bob at redivi.com
Tue Dec 20 22:09:57 CET 2005

> Ronald Oussoren wrote:
>> On 13-dec-2005, at 22:42, M.-A. Lemburg wrote:
>>> Bob Ippolito wrote:
>>>> On Dec 13, 2005, at 11:13 AM, M.-A. Lemburg wrote:
>>>>>>>> I'd like to focus attention on these distribution formats
>>>>>>>> that distutils is missing:
>>>>>>> I'd like to another important candidate to the list:
>>>>>>> bdist_mpkg:
>>>>>>>    Mac OS X installer format
>>>>>>>    Part of py2app by Bob Ippolito
>>>>>>>    http://undefined.org/python/py2app.html#bdist-mpkg-documentation
>>>>>> bdist_mpkg is actually available on its own now, but I'm not sure
>>>>>> adding
>>>>>> it to distutils is a great idea.  The current version is already
>>>>>> moved
>>>>>> over to setuptools, and I'm pretty close to adding egg support to
>>>>>> it.  I
>>>>>> may even require that the Python bits of the installation package
>>>>>> are
>>>>>> eggs, as that would allow me to remove a bunch of code.  Eggs mostly
>>>>>> obsolete what bdist_mpkg is for, but it's also used to install
>>>>>> things
>>>>>> like documentation and example code, so I'm not going to drop it
>>>>>> altogether.
>>>>> Looks like now is a good time to add it to distutils then :-)
>>>> No.  Definitely not.
>>>> ...
>>>> In other words, I don't consent to adding bdist_mpkg to Python until
>>>> it
>>>> supports eggs.
>>> Ok, then I'll remove the above candidate from the list.
>>> Anyone else interested in writing a bdist_mpkg command
>>> that doesn't require setuptools ?
>>> Given the good documentation for the format, this shouldn't
>>> be hard:
>>> http://s.sudre.free.fr/Stuff/PackageMaker_Howto.html
>> Should the volunteer also write the package management tools? One reason
>> why
>> I'm interested in setuptools is that OSX's 'Installer.app' is just that,
>> a tool
>> to install .pkg/.mpkg archives. You cannot uninstall packages and
>> upgradeing
>> seems to leave files around unless you manually remove them in a
>> pre/post script.
>> OSX is great, but its installer application sucks.
>> Setuptools/easy_install solves
>> several problems for me:
>> 1) uninstall
>> 2) dependency management
>> 3) automaticly downloading required software
> I'm sure Apple will add support for uninstall soon. Even if not,
> we can easily add an uninstall script to the created package which
> then removes all traces of the installed package - much like
> bdist_wininst does in order to support uninstall of the Windows
> package.

I thought they'd add support for uninstall soon too... 5 years ago.  I
gave up.  The installer portion of OS X is not important to Apple because
the majority of users will only see it when bootstrapping the OS and
installing a select few applications.  The majority of other things are
either self-contained applications or built with InstallerVISE.

Uninstall scripts just aren't commonplace for Mac OS X, even for things
that have installer packages.  If we're going to come up with a new idiom
we might as well pick one that works, and that's easy_install.

> Dependency management is a nice to have feature, but I
> wouldn't consider it essential.

I disagree, and so do plenty of other users.  I've dealt with this
platform and Python for several years, and have been providing packages
for users and writing the software to make it possible.  Without
dependency management, even double-click installation is daunting since
you have to choose several different packages in the right order and find
the right package for your Python and Mac OS X version.

setuptools not only knows which order to install things (for supporting
pacakges) but it'll go ahead and find it all for you and install it as

Mac OS X users are used to easy.  Python is not currently easy on the Mac
unless you're using DarwinPorts or Fink, but those package management
systems have their own problems.  easy_install fixes almost everything for
the Python on Mac OS X situation.

> Automatic downloads are nice to have as well, but sys admins
> rarely trust tools that automatically download and install
> software, unless they have complete control of where things
> are downloaded, when and whether there's proper authenticity
> control built into the tool.

Mac OS X users are very rarely sysadmins, and easy_install supports that
use case too.  You can tell it not to download anything, or you can tell
it where to download things from (even just a local path).

> AFAIK, easy_install doesn't
> provide any kind of authenticity control - probably due to
> the fact that PyPI doesn't have this feature. At least the
> MD5 sum should be checked, but for this, the PyPI registry
> would have to provide this information in some way.

The PyPI registry provides for GPG signatures and MD5, and I'm relatively
certain that easy_install does check MD5.  The ez_setup bootstrap
definitely checks the md5 for known versions of setuptools, and I'm
assuming that a similar feature is in easy_install for normal packages.


More information about the Distutils-SIG mailing list