我正在尝试构建一个由脱机conda
环境管理的包
在Linux中。我正在使用py4j
进行干预。
在我的在线构建服务器上:
py4j
食谱py4j-0.8.2.1.tar.gz
)在我的离线puppet服务器上:
condabuildpy4j− conda install –use-local 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_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
答案 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
这与第一个类似。它是您在根环境中安装的软件包的环境元数据。