自定义镜像#

本节解释了如何自定义您的 PyPI 或 Anaconda 仓库镜像。

开始之前#

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

自定义你的镜像#

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

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

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

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

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

remote_url#

Conda 包、Anaconda 安装程序和 Miniconda 安装程序是从这个远程 URL 获取的。

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

频道#

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

默认:这些频道的列表:

  • /pkgs/main/

  • /pkgs/free/

  • /pkgs/pro/

mirror_dir#

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

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

默认值: /opt/cas-mirror

平台#

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

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

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

获取安装程序#

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

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

默认值:true

python_版本#

要镜像的Python版本。

默认:所有版本。

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

pkg_list#

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

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

license_blacklist#

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

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

  • AGPL

  • APACHE

  • BSD

  • GPL2

  • GPL3

  • LGPL

  • 麻省理工学院

  • 专有

  • 公共领域

  • PSF

  • 其他

黑名单#

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

白名单#

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

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

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

如果 license_blacklist 包含 BSD 并且 whitelist 为空, 那么 numpy 和所有其他 BSD 许可的包将被排除并不被镜像。

如果 license_blacklist 包含 BSD 并且 whitelist 包含 numpy,那么 numpy 包将被包含并镜像,而其他 BSD 许可的包将被排除并不进行镜像。

目标通道#

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

默认值:“anaconda”

目标站点#

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

默认值:无

delta#

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

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

delta_dir#

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

如果未指定此选项,生成的增量目录将被命名为 delta--pkgs 将被替换为时间戳。

最大重试次数#

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

当设置为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

镜像特定软件包列表#

您可能只想镜像存储库的一小部分。与其黑名单列出您不想镜像的包,不如简单地列举您想要镜像的包列表。

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

  • 麻省理工学院

  • 专有

  • 公共领域

  • PSF

  • 其他

示例:此示例镜像了存储库中的所有包,除了那些使用GPL2、GPL3或BSD许可证的包:

license_blacklist:
  - GPL2
  - GPL3
  - BSD

使用黑名单进行镜像#

blacklist 允许访问所有包,除了明确列出的那些。

示例:此示例镜像整个仓库,除了bzip2、tk和openssl包:

blacklist:
  - bzip2
  - tk
  - openssl

使用白名单进行镜像#

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

示例:此示例镜像了整个仓库,除了任何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,因为它已被列入黑名单。它确实镜像了存储库中的所有其他软件包:

license_blacklist:
  - GPL2
blacklist:
  - pyqt

如果同时使用了黑名单和白名单参数,首先评估黑名单,白名单则作为修改器使用。

示例:此示例镜像了存储库中除astropy和pygments之外的所有包。尽管Accelerate被列入了黑名单,但由于它也在白名单上,因此仍然被镜像:

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