构建要由脱机 conda/puppet 环境管理的包的过程



>我正在尝试构建一个由脱机conda环境管理的包在 Linux 中。我正在和py4j一起进行试运行.

在我的在线构建服务器上:

  1. 我下载了py4j食谱
  2. 并下载源码分发 ( py4j-0.8.2.1.tar.gz (
  3. 将配方和源分发复制到离线木偶服务器

在我的离线木偶服务器上:

  1. 调整配方以指向我的源代码分发副本。
  2. condabuildpy4j− conda install –use-local py4j
  3. $ conda index linux-64

conda index linux-64py4j配置写入repodata.json。我可以看到py4jrepodata.json.还有一个 py4j-0.8.2.1-py27_0.json/opt/anaconda/conda-meta/下创建

我们有一个映射到/srv/www/yum/anaconda_pkgs/的自定义通道

$ cat .condarc 
channels: 
- http://10.1.20.10/yum/anaconda_pkgs/

我可以看到py4j配置已添加到以下文件中:

./envs/_test/conda-meta/py4j-0.8.2.1-py27_0.json    
./pkgs/cache/ef2e2e6cbda49e8aeeea0ae0164dfc71.json    
./pkgs/py4j-0.8.2.1-py27_0/info/recipe.json    
./pkgs/py4j-0.8.2.1-py27_0/info/index.json    
./conda-bld/linux-64/repodata.json  ./conda-bld/linux-64/.index.json 
./conda-meta/py4j-0.8.2.1-py27_0.json

有人可以解释这些json文件中的每一个应该做什么吗?

我也可以看到有一个repodata.json.index.json 已更新但没有/srv/www/yum/anaconda_pkgs/linux-64py4j 的配置 。

我手动将py4j-0.8.2.1.tar.gz复制到自定义存储库中(频道(在/srv/www/yum/anaconda_pkgs/linux-64

我仍然conda install –use-local py4j无法从主机或 puppet agent -t .我得到以下信息:

err: /Stage[main]/Anaconda::Packages/Anaconda::Install_pkg[py4j]/Package[py4j]/ensure: change from absent to present failed: Execution of ‘/opt/anaconda/bin/conda install –yes –quiet py4j’ returned 1: Fetching package metadata: .. 
Error: No packages found in current linux-64 channels matching: py4j

您可以在Binstar上搜索此软件包

binstar search -t conda py4j

--use-local只搜索conda-bld/linux-64频道。如果将包移动到另一个本地通道,则需要将其作为file:// URL 添加到~/.condarc channels

每当将包添加到本地存储库时,都需要在该目录上运行conda index。这将重新生成repodata.json文件。

我会回答你关于各种json文件的问题,但请注意,你真的不需要关心这些。

./envs/_test/conda-meta/py4j-0.8.2.1-py27_0.json

这是构建过程中的残余。生成包后,将其安装到_test环境中,以便可以运行meta.yaml的"test"部分中的操作。 每个环境都有一个 conda-meta 目录,其中包含该环境中安装的每个包的元数据。

./

pkgs/cache/ef2e2e6cbda49e8aeeea0ae0164dfc71.json

pkgs目录中的所有内容都是缓存。这是通道 repodata 的本地缓存,因此 conda 在"获取包元数据"时不必重新下载它(如果它没有更改(。

./

pkgs/py4j-0.8.2.1-py27_0/info/recipe.json

同样,这是一个缓存。当p4js包安装在任何位置时,将在pkgs目录中提取它。包内部的 info 目录中是包的所有元数据。此文件是用于创建包的配方中的元数据。Conda 不会在任何地方使用此元数据,只是为了方便起见而包含它。

./

pkgs/py4j-0.8.2.1-py27_0/info/index.json

这是包本身中包含的包的元数据。这就是conda index将用来创建repodata.json的内容。

./

conda-bld/linux-64/repodata.json

这是已构建的包的特殊通道的存储库元数据(与 --use-local 一起使用的通道,并由conda build自动使用。

./

conda-bld/linux-64/.index.json

这是conda index内部使用的特殊缓存文件。

./

conda-meta/py4j-0.8.2.1-py27_0.json

这与第一个类似。它是安装到根环境中的包的环境元数据。

相关内容

  • 没有找到相关文章

最新更新