• Bug#1103905: pyenv: please build two binary packages, to split off the

    From Francesco Poli (wintermute)@21:1/5 to All on Tue Apr 22 19:40:01 2025
    Package: pyenv
    Version: 2.5.4-1
    Severity: wishlist
    X-Debbugs-Cc: invernomuto@paranoici.org

    Hello,
    thanks for maintaining pyenv in Debian: it seems to work for me.

    However, I see that Debian binary package 'pyenv' (the only binary
    package built from Debian source package 'pyenv') has a long list of
    (direct and indirect) dependencies, mainly compilers/toolchains
    and library development packages, needed when running commands like

    $ pyenv install <something>

    On the other hand, once you have installed whatever you need in
    your $PYENV_ROOT (under your home directory), all those dependencies
    are not used to run commands like "pyenv init" and "pyenv versions",
    and to make the shims work properly and select the desired version
    of Python (also depending on the current working directory, possibly
    configured with "pyenv local").


    So consider the following scenario: the '/home' partition is shared
    among a management host and a number of work hosts (for instance,
    this happens on many HPC clusters, where the compute nodes mount
    /home through an appropriate network filesystem, such as NFS or
    something similar, from the storage node).
    Users may want to run "pyenv install" and "pyenv local" on the
    management host, but then may want to use the shims to select
    the desired Python version on the work hosts.

    It would be great, if the sysadmin could install Debian binary
    package 'pyenv' with all the dependencies on the management host,
    but only install a minimal Debian binary package (without all
    the dependencies) on the work hosts.

    I tried to imagine a way to achieve this.
    I think I found it.


    Debian source package 'pyenv' could be improved in the following
    manner. Instead of building a single Debian binary package, Debian
    source package 'pyenv' could build two distinct Debian binary
    packages:

    * 'pyenv-runtime' (almost without dependencies) only shipping
    the following files

    /usr/bin/pyenv (a symlink to ../share/pyenv/libexec/pyenv )
    /usr/share/pyenv/libexec/pyenv
    /usr/share/pyenv/libexec/pyenv-init
    /usr/share/pyenv/libexec/pyenv-commands
    /usr/share/pyenv/libexec/pyenv-rehash
    /usr/share/pyenv/libexec/pyenv-versions
    /usr/share/pyenv/libexec/pyenv-version-name
    /usr/share/pyenv/libexec/pyenv-version-file
    /usr/share/pyenv/libexec/pyenv-version-file-read
    /usr/share/pyenv/libexec/pyenv-hooks
    /usr/share/pyenv/libexec/pyenv-help
    /usr/share/pyenv/libexec/pyenv-exec
    /usr/share/pyenv/libexec/pyenv-shims
    /usr/share/pyenv/libexec/pyenv-which
    /usr/share/pyenv/libexec/pyenv-whence
    /usr/share/pyenv/libexec/pyenv-version-origin
    /usr/share/pyenv/libexec/pyenv-prefix
    /usr/share/pyenv/libexec/pyenv-latest

    * 'pyenv' shipping all the rest and depending on pyenv-runtime and
    on all the other dependencies

    This way, the sysadmin could install 'pyenv' on the management
    host and only 'pyenv-runtime' on the work hosts.

    Please consider doing this split.
    It would be very useful in the above-described scenario.

    Thanks for your time and dedication!


    -- System Information:
    Debian Release: trixie/sid
    APT prefers testing
    APT policy: (500, 'testing')
    Architecture: amd64 (x86_64)

    Kernel: Linux 6.12.21-amd64 (SMP w/16 CPU threads; PREEMPT)
    Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.utf8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /usr/bin/dash
    Init: systemd (via /run/systemd/system)
    LSM: AppArmor: enabled

    Versions of packages pyenv depends on:
    ii build-essential 12.12
    ii curl 8.13.0-1
    ii expat 2.7.1-1
    ii libauthen-sasl-perl 2.1700-1
    ii libbz2-dev 1.0.8-6
    ii libcgi-pm-perl 4.68-1
    ii liberror-perl 0.17030-1
    ii libffi-dev 3.4.7-1
    ii libio-socket-ssl-perl 2.089-1
    ii liblwp-protocol-https-perl 6.14-1
    ii liblzma-dev 5.8.1-1
    ii libmediawiki-api-perl 0.52-2
    ii libncurses-dev 6.5+20250216-2
    ii libreadline-dev 8.2-6
    ii libsqlite3-dev 3.46.1-3
    ii libssl-dev 3.5.0-1
    ii libterm-readkey-perl 2.38-2+b4
    ii libwww-perl 6.78-1
    ii libxml2-dev 2.12.7+dfsg+really2.9.14-0.4
    ii libxmlsec1-dev 1.2.41-1+b1
    ii llvm 1:19.0-63
    ii make 4.4.1-2
    ii pcre2-utils 10.45-1
    ii python3 3.13.2-2
    ii tk-dev 8.6.16
    ii wget 1.25.0-2
    ii xz-utils 5.8.1-1
    ii zlib1g-dev 1:1.3.dfsg+really1.3.1-1+b1

    pyenv recommends no packages.

    Versions of packages pyenv suggests:
    ii git 1:2.47.2-0.1
    pn libsecret-1-dev <none>
    pn python3-openssl <none>
    ii python3-requests 2.32.3+dfsg-5
    pn python3-tk-dbg <none>

    -- no debconf information

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)