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

时间:2015-02-16 02:45:53

标签: puppet anaconda conda

我正在尝试构建一个由脱机conda环境管理的包 在Linux中。我正在使用py4j进行干预。

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

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

    1. 调整配方以指向我的源代码分发副本。
    2. condabuildpy4j− conda install –use-local py4j
    3. $ conda index linux-64
    4. conda index linux-64py4j配置写入repodata.json。一世 可以看到py4j位于repodata.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-64已更新但没有 py4j的配置。

      我手动将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
      

2 个答案:

答案 0 :(得分:1)

--use-local仅搜索conda-bld/linux-64频道。如果您将包移至其他本地渠道,则需要将其作为~/.condarc网址添加到channels file://

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

答案 1 :(得分:1)

我会回答你关于各种json文件的问题,但请注意,你真的不需要关心其中的任何一个。

  

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

这是构建过程中的残余。构建软件包后,它将安装到_test环境中,以便可以运行test meta.yaml部分中的操作。每个环境都有一个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内部使用的特殊缓存文件。

  

./康达 - 间/ py4j-0.8.2.1-py27_0.json

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