>我正在尝试构建一个由脱机conda
环境管理的包在 Linux 中。我正在和py4j
一起进行试运行.
在我的在线构建服务器上:
- 我下载了
py4j
食谱 - 并下载源码分发 (
py4j-0.8.2.1.tar.gz
( - 将配方和源分发复制到离线木偶服务器
在我的离线木偶服务器上:
- 调整配方以指向我的源代码分发副本。
-
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
--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
这与第一个类似。它是安装到根环境中的包的环境元数据。