Bug#934948: Unnecessary dependencies vs multiple binary packages
Hi, Simon. Thanks for the writeup which makes things much more
comprehensible.
Simon McVittie writes ("Bug#934948: Unnecessary dependencies vs multiple binary packages"):
> * All correctly-packaged Ruby libraries have a dependency on the Ruby
> interpreter, regardless of whether they also contain a #!/usr/bin/ruby
> executable script. This is similar to what is done for Perl and Python.
> - Please fact-check: is this true?
I think the reason we do this for Python might be related to Python
interpreter version compatibility. Otherwise it doesn't seem like it
serves any purpose ?
For Perl, the actual interpreter package is perl-base. There are Perl
scripts which run with perl-base and without perl-modules. "perl" is
most a metapackage - its main purpose is to pull in perl-modules. It
is true that pure-Perl modules depend on perl-base, directly or
indirectly. When the dependency is on "perl", that pulls in
perl-modules: ie, it isn't just the interpreter. I think the primary
purpose of the dependency on perl-base (where that is what is used) is
to specify the minimum perl version.
Would anything go wrong (with Perl or Python, say) if we didn't depend
on the interpreter ? (Assuming the dependency being dropped is
unversioned.)
I am the maintainer of a Tcl extension ("chiark-tcl") which does not
Depend on any Tcl interpreter, even though there obviously needs to be
one for it to be any use. A package which uses this extension (eg
"sauce") Depends on the interpreter.
> Design principles
> =================
>
> (These are principles, not hard rules, so we might need to compromise on
> some of them where they conflict.)
...
> * When an executable is installed, it must work.
> - That is, its dependencies must be sufficient.
> - Exception: if it's in /usr/share/doc/*/examples it doesn't have to work.
>
> * When a library is installed, it must be usable in the relevant
> interpreter(s).
> - That is, its dependencies, plus the interpreter itself, must be
> sufficient to import and use the library.
We have compromised on these principles on many past occasions. The
archive is full of portmanteau packages, which contain a variety of
things with different practical dependencies. We often write
Recommends or Suggests for the practical dependencies of less-critical
subcomponents.
devscripts is perhaps the best example.
> * When a user installs a library for one interpreter or environment,
> in general, we don't want the package dependencies to require that
> user to install an unrelated interpreter.
I think this design principle should generally outweigh the previous
two.
Ian.
--
Ian Jackson <ijackson@chiark.greenend.org.uk> These opinions are my own.
If I emailed you from an address @fyvzl.net or @evade.org.uk, that is
a private address which bypasses my fierce spamfilter.
Reply to: