devpi如何启用root/public
1.devpi index root/public 输出解读
1.1 基础信息
- **
root/public**:当前查看的索引全路径(用户是root,索引名是public)。 - **
index**:表明接下来的内容是该索引的配置属性。
1.2 功能与权限配置
- **
simple index**: - 含义:符合 PEP 503 规范的简单包索引接口。
- 作用:这是给
pip用的。当你执行pip install --index-url .../root/public/+simple/时,pip就是通过这个接口来读取包列表的。 - **
permissions(权限组)**: - **
toxresult_upload**:控制谁可以上传tox测试结果(tox是一个 Python 自动化测试工具)。 upload:控制谁可以向这个索引上传(发布) Python 包。- **
Special: ANONYMOUS(匿名用户)**: - 含义:代表未登录的任何人。
- 在
permissions下方看到它,通常意味着默认情况下,任何人都拥有只读/下载权限(可以执行pip install),但通常没有upload(上传)权限。 - **
Users: root**: - 含义:明确拥有该索引管理或写权限的用户。在这里,只有
root用户(创建者/管理员)拥有合法的最高权限(如修改配置、上传包等)。
1.3 安全与缓存策略
- **
whitelisted packages(白名单包)**: - 后面的
*(星号):代表所有包。 - 背景知识:
root/public继承了root/pypi(官方镜像)。在devpi的安全机制中,为了防止“依赖劫持”攻击(有人在私有源上传了一个和开源同名的包),你可以设置白名单。 - 当前含义:设置为
*意味着关闭了严格的白名单限制。无论是来自官方 PyPI 的包,还是你们自己上传的私有包,只要名字匹配,devpi都会信任并允许下载和覆盖。这是最方便、最不容易报“403 Forbidden”的设置。
2.如何启用root/public
2.1 如何配置继承多个索引?
如果你希望 root/public 同时继承 root/pypi(官方镜像)和 root/pxb7(另一个私有/定制索引),你可以使用 devpi-client 执行以下命令:
1 | # 登录 root 用户 |
2.2 核心机制:包的查找顺序
当你设置了多个继承对象,比如 bases=root/pxb7,root/pypi 时,如果你执行 pip install attrs,devpi 寻找这个包的优先级顺序如下:
- 第一优先级:
root/public本地(你自己直接上传到该索引的包)。 - 第二优先级:
root/pxb7(bases列表中靠前的索引)。 - 第三优先级:
root/pypi(bases列表中靠后的索引)。
⚠️ 注意:顺序很重要。如果你在
root/pxb7和root/pypi中有同名且同版本的包,devpi会优先使用在bases中写在前面的那个索引(即root/pxb7)。