自定义镜像¶
本节介绍如何自定义 PyPI 或 Anaconda 存储库镜像。
注意:本文档适用于 Repository 2.26 及更新版本。对于 2.23 和 2.26 之间的版本,请参阅 2.23 文档。对于旧版本,请参阅 2.20 文档。
开始之前¶
您的 Anaconda Repository 以及镜像工具应该已经安装和配置cas-mirror
。请参阅镜像 Anaconda 存储库。
自定义你的镜像¶
以下命令可与该cas-mirror
工具一起使用:
cas-sync
:创建或更新现有的本地 Anaconda 包存储库。包保存在本地目录中。该目录由mirror_dir
配置设置定义。cas-sync-api-v4
:创建或更新现有的远程 Anaconda 包存储库。这些包被上传到现有 Anaconda 存储库实例的帐户中。帐户和实例由dest_channel
和dest_site
配置设置控制。cas-merge
:将 delta 存储库合并到现有的 Anaconda 包存储库中。增量存储库包含本地和远程 Anaconda 包存储库之间的更改。Delta 存储库是通过cas-sync
使用delta
配置设置生成的。
所有命令都可以读取由--file
(或-f
)命令行选项指定的 YAML 配置文件。YAML 文件可以包含以下任何有效密钥:
频道¶
从这些远程渠道获取 Conda 包。
默认:这些频道的列表:
<remote_url>/pkgs/main/
<remote_url>/pkgs/free/
<remote_url>/pkgs/pro/
平台¶
此平台列表的 Conda 软件包和安装程序是镜像的。
默认:所有平台的列表。这是:
['osx-32', 'osx-64', 'win-32', 'win-64', 'linux-32', 'linux-64', 'linux-armv6l', 'linux-armv7l', 'linux-ppc64le']
黑名单¶
要从镜像中排除的包名称列表。
白名单¶
要包含在镜像中的包名称列表。
白名单覆盖黑名单。如果一个包同时被列入黑名单和白名单,那么它就会被包含和镜像。
示例:该软件包numpy
在许可证系列中具有许可证BSD
。
如果license_blacklist
containsBSD
和whitelist
为空,则numpy
和所有其他 BSD 许可的包都被排除在外而不是镜像。
如果license_blacklist
containsBSD
和whitelist
contains
numpy
,则该numpy
包被包含和镜像,其他 BSD 许可的包被排除而不是镜像。
repodata_source ¶
使用repodata.json
(或repodata.json.bz2
)作为现有包的来源。
此文件必须位于特定平台的镜像目录中。
例子: /mirror/linux-64/repodata.json
镜像特定于平台的列表¶
默认情况下,cas-sync
和cas-sync-api-v4
镜像所有平台。如果您不需要所有平台,您可以通过编辑yaml
文件指定要镜像的平台来节省时间和磁盘空间。
例子:
platforms:
- linux-64
- win-32
镜像特定于包的列表¶
您可能只想镜像 Repository 的一小部分。与其将一长串您不想被镜像的包列入黑名单,不如简单地枚举您想要镜像的包列表。
示例:此示例仅反映了三个包 Accelerate、PyQt 和 Zope。所有其他包都被忽略:
package_list:
- accelerate
- pyqt
- zope
使用许可黑名单镜像¶
从 Repository 2.26.0 开始,Anaconda 镜像脚本支持以下许可证系列的许可证黑名单:
- AGPL
- APACHE
- BSD
- GPL2
- GPL3
- LGPL
- 麻省理工学院
- 所有权
- 公共区域
- 聚苯乙烯
- 其他
- 没有任何
示例:此示例镜像存储库中的所有包,但 GPL2-、GPL3- 或 BSD 许可的包除外:
license_blacklist:
- GPL2
- GPL3
- BSD
注意:旧版本的 Anaconda 镜像仅支持 GPL 许可黑名单。如果您使用的是旧版本的 Repository,请参阅自定义 PyPI 或 Anaconda Repository 镜像的文档。
使用黑名单镜像¶
在blacklist
允许访问所有软件包除明确列出。
示例:此示例镜像整个存储库,但 bzip2、tk 和 openssl 包除外:
blacklist:
- bzip2
- tk
- openssl
使用白名单镜像¶
白名单与 license_blacklist 或 blacklist 参数结合使用,并重新添加先前参数排除的包。
示例:这个示例镜像了整个存储库,除了任何 GPL2 或 GPL3 许可的包,但包括 readline,尽管它是 GPL3 许可的:
license_blacklist:
- GPL2
- GPL3
whitelist:
- readline
组合多个镜像配置¶
您可能会发现组合上述两个或多个参数是获得所需包的精确组合的最简单方法。
在任何其他参数之前评估平台参数。
示例:此示例仅镜像 dnspython、shapely 和 gdal 包的 linux-64 发行版:
platforms:
- linux-64
package_list:
- dnspython
- shapely
- gdal
如果将 license_blacklist 和 blacklist 参数组合在一起,则首先评估 license_blacklist,而 blacklist 是补充修饰符。
示例:在此示例中,镜像配置不镜像 GPL2 许可的包。它不反映 GPL3 许可的包 PyQt,因为它已被列入黑名单。它确实镜像了 Repository 中的所有其他包:
license_blacklist:
- GPL2
blacklist:
- pyqt
如果同时使用黑名单和白名单参数,则首先评估黑名单,白名单用作修饰符。
示例:此示例镜像存储库中除 astropy 和 pygments 之外的所有包。尽管被列入黑名单,但 Accelerate 被镜像,因为它被列入白名单:
blacklist:
- accelerate
- astropy
- pygments
whitelist:
- accelerate