tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: python conflict question

On 06/16, Thomas Klausner wrote:
> On Tue, Jun 16, 2020 at 01:29:13PM +0200, Nikita Gillmann wrote:
> > I think I was a bit too brief. I meant our ${PYVER}-binary naming, not
> > the package name.
> I think I know what you mean:
> For py*-packages, i.e. the ones that are built by default for multiple
> python versions, we usually rename bin/foo to bin/foo-${PYVERSSUFFIX},
> to avoid them conflicting and allowing parallel installation of
> multiple python versions of the same package/library.

Agreed.  I think that's a good approach: use a package name prefix of
"py*-" for Python libraries or for Python-specific packages (e.g., that
can be installed via pip).  That makes sense.  Ruby has a similar thing
with gems, and gems can provide libraries, binaries, or both.

> We usually do not do this for packages that are just written in python
> and do not provide a library that is used by other packages, see e.g.
> devel/meld.

Agreed again.  For a package that's providing a program, the package
name should definitely *not* begin with a short language (and version)
prefix (e.g., "py*-") because that's an implementation detail.  The
program could be rewritten in a different language in the future, and
its name might very well remain the same.

Things get confusing to me, though, when I see packages like
devel/py-mercurial.  This came up in a thread that mentioned that
the Certbot package was actually at security/py-certbot, not

In that thread, I learned that Mercurial had the same problem
(devel/py-mercurial), but that the problem was solved by making it
also available at devel/mercurial as a meta package (that included
devel/py-mercurial) to make it available at a name that people would

Unfortunately, Certbot does not have a meta package at security/certbot;
it just has security/py-certbot.  As a user, I would expect to find
it at security/certbot for the same reason that Mercurial has a meta
package at devel/mercurial: it's what people expect.  When I navigate to
the Certbot website

it's clearly presented as a program "for automatically using Let's
Encrypt certificates on manually-administrated websites to enable
HTTPS."  The fact that it's written in Python is inconsequential from a
user perspective.  IMO, it would be good to have a security/certbot meta
package.  It is nice that security/py-certbot installs bin/certbot via
the alternatives mechanism, but it's still not easy to find the package
if you don't know to allow for the "py*-" name prefix.

It's also awkward from a user perspective when installing binary
packages: you can't do "pkgin install certbot"; instead you have to do
"pkgin install py38-certbot" (replacing 38 with whatever version of
Python you want it to use that's available as a binary package).  That's
just weird from a user perspective: I just want the Certbot program, I
don't care what version of Python it uses.

Certbot is just an example.  IMO, it would be good for any program
like this to have a meta package like Mercurial does if it must have
the short language prefix name.  I understand the rationale that
devel/py-mercurial has other packages that use it.  That's fine.
And it makes it available at the name you'd expect by having the
devel/mercurial meta package.  It's just that for any program like this,
I think the user is expecting to find it at a name that does not begin
with the short language prefix.


Home | Main Index | Thread Index | Old Index