自定义镜像#

本节介绍如何自定义您的 PyPI 或 Anaconda 仓库镜像。

开始之前#

您的 Anaconda Enterprise 4 Repository 应该已经安装和配置,以及镜像工具 cas-mirror。请参阅 镜像 Anaconda 仓库

自定义您的镜像#

以下命令可以与 cas-mirror 工具一起使用

  • cas-sync:创建或更新现有的本地 Anaconda 包仓库。包会保存到本地目录中。此目录由 mirror_dir 配置设置定义。

  • cas-sync-api-v4:创建或更新现有的远程 Anaconda 包仓库。包会上传到现有 Anaconda Enterprise 4 Repository 实例的帐户中。帐户和实例由 dest_channeldest_site 配置设置控制。

  • cas-merge:将增量仓库合并到现有的 Anaconda 包仓库中。增量仓库包含本地和远程 Anaconda 包仓库之间的更改。增量仓库由 cas-sync 使用 delta 配置设置生成。

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

remote_url#

Conda 包、Anaconda 安装程序和 Miniconda 安装程序都从此远程 URL 获取。

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

channels#

Conda 包从此远程通道获取。

默认值:这些通道的列表

  • <remote_url>/pkgs/main/

  • <remote_url>/pkgs/free/

  • <remote_url>/pkgs/pro/

mirror_dir#

镜像保存在此本地目录中。

注意:Anaconda Enterprise 4 Repository 的完整镜像大约使用 650 GB 的磁盘空间。请确保镜像目录有足够的空间。

默认值:/opt/cas-mirror

platforms#

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

默认值:所有平台的列表。即

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

fetch_installers#

是否从 remote_url 获取所有 Anaconda 和 Miniconda 安装程序。

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

默认值:true

python_versions#

要镜像的 Python 版本。

默认值:所有版本。

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

pkg_list#

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

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

license_blacklist#

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

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

  • AGPL

  • APACHE

  • BSD

  • GPL2

  • GPL3

  • LGPL

  • MIT

  • PROPRIETARY

  • PUBLICDOMAIN

  • PSF

  • OTHER

  • NONE

blacklist#

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

whitelist#

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

白名单会覆盖黑名单。如果一个包同时在黑名单和白名单中,则它会被包含并镜像。

示例:包 numpy 的许可证属于 BSD 许可证系列。

如果 license_blacklist 包含 BSDwhitelist 为空,则 numpy 和所有其他 BSD 许可的包都会被排除且不镜像。

如果 license_blacklist 包含 BSDwhitelist 包含 numpy,则 numpy 包会被包含并镜像,而其他 BSD 许可的包会被排除且不镜像。

dest_channel#

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

默认值:“anaconda”

dest_site#

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

默认值:None

delta#

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

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

delta_dir#

增量在此目录上生成(或合并)。

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

max_retries#

在失败之前允许的重试次数。

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

cas-synccas-sync-api-v4 命令支持此功能。

默认值:0

safe#

如果 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

镜像特定于包的列表#

您可能只想镜像仓库的一小部分子集。与其将您不想镜像的长列表包列入黑名单,不如简单地枚举您想镜像的包列表。

示例:此示例仅镜像 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

  • MIT

  • PROPRIETARY

  • PUBLICDOMAIN

  • PSF

  • OTHER

  • NONE

示例:此示例镜像仓库中的所有包,但 GPL2、GPL3 或 BSD 许可的包除外

license_blacklist:
  - GPL2
  - GPL3
  - BSD

使用黑名单进行镜像#

blacklist 允许访问除明确列出的包之外的所有包。

示例:此示例镜像整个 Repository,但 bzip2、tk 和 openssl 包除外

blacklist:
  - bzip2
  - tk
  - openssl

使用白名单进行镜像#

白名单与 license_blacklist 或 blacklist 参数结合使用,并重新添加先前参数排除的包。

示例:此示例镜像整个 Repository,但任何 GPL2 或 GPL3 许可的包除外,但包括 readline,尽管它实际上是 GPL3 许可的

license_blacklist:
  - GPL2
  - GPL3
whitelist:
  - readline

组合多个镜像配置#

您可能会发现,组合上面两个或多个参数是获得您想要的包的确切组合的最简单方法。

platforms 参数在任何其他参数之前进行评估。

示例:此示例仅镜像 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

如果 blacklist 和 whitelist 参数都使用,则首先评估 blacklist,而 whitelist 用作修饰符。

示例:此示例镜像仓库中的所有包,但 astropy 和 pygments 除外。尽管 Accelerate 列在黑名单上,但由于它列在白名单上,因此会被镜像

blacklist:
 - accelerate
 - astropy
 - pygments
whitelist:
 - accelerate