我正在运行 Ubuntu 22.04 Lemp Server,但我不确定我是否完全了解 pip3 及其工作原理。安装某些python3-pip
软件包时,其中一些需要以 root 或 sudo 用户身份安装和运行,因为它们使用/修改/更新 root 用户目录中的 Web 服务器文件(例如 或/var/www/html
./var/..
或 )/whatever/.../whatever
。
为了让我的pip3
软件包保持最新,我创建了一个根 crontab,其中包含以下行:
@weekly pip3 freeze > /root/pip3-upgrade-requirements.txt && cd /root/ && pip3 install --upgrade -r /root/pip3-upgrade-requirements.txt
问题是,我认为(不太确定)我pip3
以 sudo 用户身份安装了大多数软件包,因为我以 sudo 用户身份运行其中一些软件包。这是一个错误,因为(现在)我知道python3-pip
以 root 身份运行/安装软件包很危险,因为它可能会以某种方式从存储库下载恶意软件或不受信任的软件包pip3
,并覆盖pip3
Ubuntu 发行版检查和安装的软件包。
我读了很多资料,很多人都认为安装pip3
软件包的正确方法是使用 在虚拟环境中安装它们.venv
。然后在sudo pip3 install
命令之后我注意到以下警告:
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
如果你能帮助我扩展我对 pip 的理解,我有点困惑
- 当我使用时,我的 pip3 包安装到哪里
sudo pip3 install package-name
- 当我使用时,我的 pip3 包安装到哪里
pip3 install package-name
- 如果我的 pip3 包是从我的 Ubuntu 发行版存储库下载的,并且该存储库已检查是否存在安全漏洞和错误,并通过了维护人员的测试,或者如果它们是直接从 pypi pip3 存储库下载的,而 Ubuntu 维护人员尚未检查下载和更新是否存在安全漏洞。
- 以 sudo 身份运行 pip3 应用程序与以普通用户身份运行 pip3 应用程序的区别
- 以 sudo 或普通用户身份安装 pip3 软件包之间的区别
- 以 sudo 或普通用户身份升级 pip3 软件包之间的区别
- 使用命令升级 pip3 包的区别
sudo pip3 freeze > /root/pip3-upgrade-requirements.txt && sudo pip3 install --upgrade -r /root/pip3-upgrade-requirements.txt
或命令
pip3 freeze > ~/pip3-upgrade-requirements.txt && pip3 install --upgrade -r ~/pip3-upgrade-requirements.txt
- 使用命令升级 pip3 包的区别
sudo pip3 freeze > /root/pip3-upgrade-requirements.txt && sudo pip3 install --upgrade -r /root/pip3-upgrade-requirements.txt
或命令
sudo pip-review --auto
- 使用命令升级 pip3 包的区别
pip3 freeze > ~/pip3-upgrade-requirements.txt && pip3 install --upgrade -r ~/pip3-upgrade-requirements.txt
或命令
pip-review --auto
- 如何检查我的根 pip3 包是否导致权限破坏以及与系统包管理器的行为冲突。
- 如何修复由 引起的任何损坏的权限
sudo pip3 install
。 - 如何检查和验证我的 pip3 包是否已由 root 或本地用户安装。
我需要知道所有这些事情,这样我才能更好地理解如何实现我的最终目标,以及这篇文章的主要问题。这个问题是...
我如何正确修复我的 pip3 包权限,然后将使用 sudo 和本地用户安装的 pip3 包迁移到虚拟环境,然后安全地下载、更新和使用我的 pip3 包?
任何能提供清晰/简洁答案和分步说明的帮助都将不胜感激。任何能帮助您更好地理解 pip3 的帮助也将不胜感激。谢谢!