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

构建由脱机conda/puppet环境管理的包的过程,puppet,anaconda,conda,Puppet,Anaconda,Conda,我正在尝试构建一个由离线conda环境管理的包 在Linux中。我正在用py4j进行试运行 在我的联机生成服务器上: 我下载了py4j配方 并下载源代码发行版(py4j-0.8.2.1.tar.gz) 将配方和源分发复制到脱机傀儡 服务器 在我的脱机puppet服务器上: 调整配方以指向源发行版的副本 condabuildpy4j− conda安装–使用本地py4j $conda index linux-64 conda index linux-64将py4j配置写入repodata.json。

我正在尝试构建一个由离线
conda
环境管理的包 在Linux中。我正在用
py4j
进行试运行

在我的联机生成服务器上:

  • 我下载了
    py4j
    配方
  • 并下载源代码发行版(
    py4j-0.8.2.1.tar.gz
  • 将配方和源分发复制到脱机傀儡 服务器
  • 在我的脱机puppet服务器上:

  • 调整配方以指向源发行版的副本
  • condabuildpy4j− conda安装–使用本地py4j
  • $conda index linux-64
  • conda index linux-64
    py4j
    配置写入
    repodata.json
    。我 可以看到
    py4j
    位于
    repodata.json
    中。还有一个
    py4j-0.8.2.1-py27_0.json
    /opt/anaconda/conda meta/

    我们有一个自定义频道映射到
    /srv/www/yum/anaconda\u 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
    复制到我的自定义repo中 (频道)在
    /srv/www/yum/anaconda_-pkgs/linux-64中

    我仍然无法执行
    conda安装–从主机或服务器使用本地py4j
    傀儡代理-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
    
    ——使用本地
    仅搜索
    conda bld/linux-64
    频道。如果将包移动到另一个本地频道,则需要将其添加到
    ~/.condarc
    频道
    ,作为
    文件://
    url


    无论何时向本地回购添加包,都需要在该目录上运行
    conda index
    。这将重新生成
    repodata.json
    文件。

    我将回答您有关各种json文件的问题,但请注意,您确实不需要关心这些文件

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

    这是构建过程中的遗留问题。构建包后,将其安装到
    \u 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


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

    py4j-0.8.2.1.tar.gz
    打字错误吗?它应该被称为
    py4j-0.8.2.1-py27_0.tar.gz