* Anthony Towns <aj@azure.humbug.org.au> [011023 09:07]:
> On Tue, Oct 23, 2001 at 01:31:50AM -0400, David M. Cooke wrote:
> > At some point, Anthony Towns <aj@azure.humbug.org.au> wrote:
> > > Again, _why_ does this matter? Who does this? Is it even remotely common?
> > > That people would even consider installing another version of python in
> > > /usr/local surely just points to a problem with the Debian packaging, no?
> > Well, I do it for one. 
> 
> And is there some reason you can't call them /usr/local/python2.1-opt, say?
> 
> Or is there some reason you can't just install all the modules you otherwise
> have installed?

Just to make the discussion a little bit more focussed: I think several
issues were mixed up in my original mail:

(1) For once, #!/usr/bin/env has it's problems. Scripts that use
    "#!/usr/bin/env python" are more fragile than scripts without.

(2) Another issue is "python" vs. "python1.5". It's a separate question
    whether scripts need to be strictly coupled to a specific Python
    version.


Regarding (1): If you ask me how common the situation is that people
install local Python versions in /usr/local, then I will ask you how
common it is that it's reasonable that a script provided by a Debian
package will benefit from using #!/usr/bin/env ?


Regarding (2): Making the dependency explicit (by using
/usr/bin/python1.5) is just playing safe.

As far as I can see, if we hadn't the legacy of the existing packages
and installations, and if versioned dependencies would work on all
systems in all situations, we could come up with a quite clean setup:
python-base et al. could be empty packages (virtual packages wouldn't
work!), and other packages could depend on them (e.g. "Depends:
"python-base (>= 2.0), python-gtk" for a package that need at least
Python 2.0 or better. Still in this case, what could you do if Python
2.3 broke that script ?)

But we haven't an ideal situation, so we have to fight with that kind of
legacy.

But maybe it brings us to the core of the problem:

As far as I can tell our principal problem is that there's a large set
of existing packages (from slink, potato) that have wrong dependencies
(like unversioned "Depends: python-base" for packages that depend on
Python 1.5.2) that would be (erronously) satisfied if we just continued
to use python-base and so on.

One way to resolve this is to include a huge list of conflicts in
python-base et al.

Another way to resolve this is to drop these package names, perhaps in
favour of some other package names.

IMHO, in the current, messed up situation, scripts and packages that
play safe in explicitely stating a Python version have the big advantage
that they will lead to these kinds of problems with underspecified
dependencies.

It's much the same reasoning why libraries have a number in them that
will be increased for incompatible API changes. AFAICS, with the setup
you are suggesting you can never warranty that kind of robustness.

     Gregor


Reply via email to