自定义镜像

本节介绍如何自定义 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_channeldest_site配置设置控制。
  • cas-merge:将 delta 存储库合并到现有的 Anaconda 包存储库中。增量存储库包含本地和远程 Anaconda 包存储库之间的更改。Delta 存储库是通过cas-sync使用delta配置设置生成的。

所有命令都可以读取由--file(或-f)命令行选项指定的 YAML 配置文件。YAML 文件可以包含以下任何有效密钥:

远程网址

Conda 软件包、Anaconda 安装程序和 Miniconda 安装程序是从此远程 URL 获取的。

默认: https://repo.anaconda.com/

频道

从这些远程渠道获取 Conda 包。

默认:这些频道的列表:

  • <remote_url>/pkgs/main/
  • <remote_url>/pkgs/free/
  • <remote_url>/pkgs/pro/

镜像目录

镜像保存在这个本地目录中。

注意:Anaconda 存储库的完整镜像使用大约 100 GB 的磁盘空间。确保镜像目录有足够的空间。

默认: /opt/cas-mirror

平台

此平台列表的 Conda 软件包和安装程序是镜像的。

默认:所有平台的列表。这是:

['osx-32', 'osx-64', 'win-32', 'win-64', 'linux-32', 'linux-64', 'linux-armv6l', 'linux-armv7l', 'linux-ppc64le']

fetch_installers

是否从remote_url.

如果fetch_installers设置为,false则不会获取安装程序。

默认: true

python_versions

要镜像的 Python 版本。

默认:所有版本。

例子: ['2.7', '3.6']

pkg_list

要镜像的包名称的显式列表。

提供此列表时,不允许设置license_blacklistblacklistwhitelist键。

许可证黑名单

要从镜像中排除的许可证列表。

可以列入黑名单的许可证系列有:

  • AGPL
  • APACHE
  • BSD
  • GPL2
  • GPL3
  • LGPL
  • 麻省理工学院
  • 所有权
  • 公共区域
  • 聚苯乙烯
  • 其他
  • 没有任何

黑名单

要从镜像中排除的包名称列表。

白名单

要包含在镜像中的包名称列表。

白名单覆盖黑名单。如果一个包同时被列入黑名单和白名单,那么它就会被包含和镜像。

示例:该软件包numpy在许可证系列中具有许可证BSD

如果license_blacklistcontainsBSDwhitelist为空,则numpy和所有其他 BSD 许可的包都被排除在外而不是镜像。

如果license_blacklistcontainsBSDwhitelistcontains numpy,则该numpy包被包含和镜像,其他 BSD 许可的包被排除而不是镜像。

目标通道

与本地存储库实例同步时使用的可选通道。

默认:“蟒蛇”

目标站点

与本地存储库实例同步时使用的可选站点。

默认:无

增量

如果delta为真,则从 生成增量mirror_dir

如果delta为 false,则直接应用更改。

delta_dir

增量生成(或合并)到此目录中。

如果未指定,则生成的增量目录名为 delta-<timestamp>-pkgs<timestamp>替换为时间戳。

最大重试次数

失败前允许的重试次数。

当它设置为 0 时,cas-mirror在第一个错误时失败。默认值为 0。

仅支持cas-synccas-sync-api-v4命令。

默认值:0

安全

如果safetrue,同步存储库或合并增量目录永远不会删除任何内容。

默认: false

repodata_source

使用repodata.json(或repodata.json.bz2)作为现有包的来源。

此文件必须位于特定平台的镜像目录中。

例子: /mirror/linux-64/repodata.json

镜像特定于平台的列表

默认情况下,cas-synccas-sync-api-v4镜像所有平台。如果您不需要所有平台,您可以通过编辑yaml文件指定要镜像的平台来节省时间和磁盘空间。

例子:

platforms:
  - linux-64
  - win-32

镜像特定于包的列表

您可能只想镜像 Repository 的一小部分。与其将一长串您不想被镜像的包列入黑名单,不如简单地枚举您想要镜像的包列表。

示例:此示例仅反映了三个包 Accelerate、PyQt 和 Zope。所有其他包都被忽略:

package_list:
- accelerate
- pyqt
- zope

镜像 Python 版本特定的包

您可能只想镜像版本的一个子集。

示例:此示例仅镜像为 Python 3.3 构建的 Anaconda 包:

python_versions:
  - 3.3

使用许可黑名单镜像

从 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