首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建要由脱机conda/傀儡环境管理的包的过程

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

Stack Overflow用户
提问于 2015-02-16 02:45:53
回答 2查看 844关注 0票数 1

我正在尝试构建一个包,由Linux中的离线conda环境来管理。我正在和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/的自定义通道

代码语言:javascript
复制
$ cat .condarc 
channels: 
- http://10.1.20.10/yum/anaconda_pkgs/

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

代码语言:javascript
复制
./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中的自定义回购(通道)中

我仍然不能从主机或puppet agent -t中执行puppet agent -t。我得到以下信息:

代码语言:javascript
复制
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上搜索此包

代码语言:javascript
复制
binstar search -t conda py4j
EN

回答 2

Stack Overflow用户

发布于 2015-02-16 17:20:08

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

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

票数 1
EN

Stack Overflow用户

发布于 2015-02-16 17:23:51

我将回答您有关各种json文件的问题,但请注意,您真的不需要关心这些文件中的任何一个。

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

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

./pkgs/cache/ef2e2e6cbda49e8aeeea0ae0164dfc71.json

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

./pkgs/py4j-0.8.2.1-py27_0/info/replpe.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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28533837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档