[Distutils] "Python Package Management Sucks"

Toshio Kuratomi a.badger at gmail.com
Thu Oct 2 06:33:52 CEST 2008


Greg Ewing wrote:
> Toshio Kuratomi wrote:
> 
>> <nod>  this is what I was afraid of. This is definitely not a definition
>> of resource-only that has meaning for Linux distributions.  None of the
>> data in /usr/share is user-modifiable
> 
> In that case it must be there because it's architecture-independent,
> right?
> 
...That doesn't follow from what I said, but it's true :-)

> But by that criterion, all .py files should be in /usr/share, too.
> 

I mentioned in a different post that this has been considered by several
distributions.  Note that not all .py files can be shifted due to the
way python parses modules.  But certainly modules which are pure python
could be moved.  Reasons that Fedora hasn't done this are:

1) Historical: .py files have been in /usr/lib/python2.5/site-packages
for a long time.
2) Compatibility with third parties: Unfortunately not everyone uses
distutils.  If we shifted the location to /usr/share and users installed
those packages into /usr/lib it would fail.
3) /usr/share has two purposes/criteria[1]_: architecture independent
and datafiles.  /usr/lib has two criteria[2]_: architecture independent
and libraries.  With .py{,c,o} we have both architecture indepedence and
a library.  So the criteria is in conflict with each other.

There may be more reasons, I'm in the /usr/share camp but not so much
that I'll keep bringing it up when there's no new arguments to give.

Note that Debian has done a lot of neat things with python source
recent(ish).  Josselin, Matthias, and some of the other Debian devs
could tell us if .py files get installed to /usr/share there.

.. _[1]:
http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSHAREARCHITECTUREINDEPENDENTDATA
.. [2]_:
http://www.pathname.com/fhs/pub/fhs-2.3.html#USRLIBLIBRARIESFORPROGRAMMINGANDPA

> Also all shell scripts, Perl code, awk/sed scripts, etc, etc.

Things that are directly executable belong in a bin directory.  There
are next to no shell script libraries, just scripts.  Perl, awk, sed,
etc *scripts*  end up in /bin as well.  To my knowledge perl doesn't
support the split architecture independent library location/architecture
dependent library location that python does so everything goes into
/usr/lib.  Mono assemblies do not because of a pair of limitations of
the mono vm.  java jars go in /usr/share.  The m4 macros that
autoconf/automake use go there as well.

Programs that are written in python but don't want to expose their
internals to the outside world have their code under /usr/share.  We
make php apps do the same.  Perl is probably the same although I haven't
looked at an actual multi-file perl program in.... well, I don't
remember when so I don't know.

> Does the FHS specify that?
> 
The FHS sets out certain rules and criteria.  Linux vendors have
interpreted them and sometimes the standard is updated due to either
current practice or clarification of former practice.  I don't believe
that FHS "specifies" that .py files go in /usr/lib or /usr/share.  The
rules state things like "architecture independent data file" which is
why there's some grey area for /usr/lib/python's .py files.

Note that although I'm happy to talk about the FHS here, I'm not
involved with creating the standard.  I'm also only one packager from
one distro.  So I'm happy to help answer questions about the FHS and how
Fedora interprets it but am not in any better position to change it than
any of you.

-Toshio

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: OpenPGP digital signature
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20081001/6296c0df/attachment.pgp>


More information about the Distutils-SIG mailing list