Maybe `sudo pip install` should:

- create a chroot && mkdir --prefix
- drop privileges*
- pip install
- chown -R root:root
- mv chroot/prefix/* prefix/

In most cases, the user does not need to run the (unreviewed, unsigned)
code as root; neither should they run the (unreviewed, unsigned) setup.py
as root.

All a wheel needs to be installed is an unzip.*

On Friday, May 25, 2018, Victor Stinner <vstin...@redhat.com> wrote:

> As an user, I want to use "sudo pip install" because packages
> installed in /usr (or /usr/local) are accessible without having to
> touch PYTHONPATH: the install directory is part of the default
> sys.path.
>
> Steve Dower also proposed the idea of a "default virtual environment"
> somewhere in the $HOME directory which would be in the default
> sys.path.
>
> Victor
>
> 2018-05-23 21:47 GMT+02:00 Alex Walters <tritium-l...@sdamon.com>:
> > I think the obvious, if socially hard solution, is to make pip panic
> when it
> > sees its being run as root (without, perhaps, a flag to tell pip "No, I
> > really mean it, run as root"), and default to --user.  It is not a good
> idea
> > to install packages system wide with pip for reasons more than just
> > clobbering apt/dnf installed packages.  I still think the best idea for
> > getting a python program to run system wide is either A: symlink from a
> > inside a venv  into something on $PATH, B: just set a shebang to the
> python
> > in a venv, or C: bundle your application into a .deb or .rpm and use the
> > system package manager to install it.
> >
> >> -----Original Message-----
> >> From: Victor Stinner <vstin...@redhat.com>
> >> Sent: Wednesday, May 23, 2018 11:22 AM
> >> To: distutils-sig@python.org
> >> Subject: [Distutils] sudo pip install: install pip files into /usr/local
> > on Linux?
> >>
> >> Hi,
> >>
> >> pip is currently not well integrated on Linux: it conflicts  with the
> >> system package manager like apt or rpm. When pip writes files  into
> >> /usr, it can replace files written by the system package manager  and
> >> so create different kind of issues. For example, if you check the
> >> system integry, you will likely see that some Python files have been
> >> modified.
> >>
> >> I would like to open a discussion to see how each Linux vendor handles
> >> the issue, and see if a common solution can be designed.
> >>
> >> Debian uses /usr for apt-get install and /usr/local for distutils and
> >> "sudo pip".
> >>
> >> Fedora  decided to change pip to install files into /usr/local by
> >> default,  instead of /usr, so "sudo pip install" doesn't replace files
> >> installed  by dnf (Fedora package manager):
> >> https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe
> >>
> >> It  gives you 3 main places to install Python code: /usr (managed by
> >> dnf),  /usr/local (managed by sudo pip), $HOME/.local (managed by pip
> >> --user).
> >>
> >> Would it make sense to make the Fedora/Debian change upstream? At
> >> least, give an opt-in option for Linux vendors to use /usr/local?
> >>
> >> I  propose to make the change upstream because there are still issues,
> >> and  I don't want to be alone to have to fix them :-) It should be
> >> easier if  we agree on a filesystem layout and an implementation, so
> >> we can  collaborate on issues!
> >>
> >>
> >> Issues with the current Fedora implementation:
> >>
> >> (1)  When Python is embedded in an application, there is an issue with
> >> the  current heuristic to decide if /usr/local should be added to
> >> sys.path:
> >>
> >> https://bugzilla.redhat.com/show_bug.cgi?id=1532287
> >>
> >> (2)  On Fedora, "sudo pip install -U" currently removes old code from
> >> /usr  and install the new one in /usr/local. We should leave /usr
> >> unchanged,  since only dnf should touch /usr.
> >>
> >> https://bugzilla.redhat.com/show_bug.cgi?id=1550368#c24
> >>
> >> The implementation is made of a single patch on the Python site module:
> >>
> >> https://src.fedoraproject.org/rpms/python3/blob/master/f/00251-change-
> >> user-install-location.patch
> >>
> >> --
> >>
> >> There are two issues related to the "sudo pip" change, but they
> >> already exist when pip is installed in $HOME/.local:
> >>
> >> (3) Priority issue between PATH and PYTHONPATH directories.
> >>
> >> When  the user runs "pip", the pip binary may come from /usr,
> >> /usr/local or  $HOME/.local/bin, but the Python pip module ("import
> >> pip") may come from  a different path. Which binary and which module
> >> should be used?
> >>
> >> Obvisouly, users can replace these two environment variables...
> >>
> >> (4)  Related to (3). Running "pip" may run pip binary of one pip
> >> version,  but pick the "pip" Python module of another pip version.
> >>
> >> For example, pip9 binary from /usr/bin/pip, but pip10 module from
> >> /usr/local.
> >>
> >>
> >> Fedora works around issue (4) with a downstream patch on pip:
> >>
> >> https://src.fedoraproject.org/rpms/python-pip/blob/master/f/pip9-allow-
> >> pip10-import.patch
> >>
> >> --
> >>
> >> I  don't well well how Linux distributions handle the issue with "sudo
> >>  pip". So don't hesitate to correct me if I'm wrong :-) My goal is
> >> just  to start a discussion about a common "upstream" solution.
> >>
> >> Victor
> >> --
> >> Distutils-SIG mailing list
> >> distutils-sig@python.org
> >> https://mail.python.org/mm3/mailman3/lists/distutils-sig.python.org/
> >> Message archived at https://mail.python.org/mm3/
> archives/list/distutils-
> >> s...@python.org/message/OLGLHTSHLEPLHUTTVNU6L5QFTMNFIB6Z/
> >
> --
> Distutils-SIG mailing list
> distutils-sig@python.org
> https://mail.python.org/mm3/mailman3/lists/distutils-sig.python.org/
> Message archived at https://mail.python.org/mm3/
> archives/list/distutils-sig@python.org/message/
> 3FIFTWKLXC6Y6QI5XI7ZA2J2XEYS4A6J/
>
--
Distutils-SIG mailing list
distutils-sig@python.org
https://mail.python.org/mm3/mailman3/lists/distutils-sig.python.org/
Message archived at 
https://mail.python.org/mm3/archives/list/distutils-sig@python.org/message/XOCQZ2ANEE6E3GVI7A6EJJTCSPHC6WNV/

Reply via email to