2015-02-16 2 views
1

Я пытаюсь создать пакет для управления автономной средой conda в Linux. Я делаю сухой пробег с py4j.Процесс создания пакета для управления автономной средой conda/puppet

На моем онлайн сервере сборки:

  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-64 записывает конфигурацию py4j в repodata.json. I можно посмотреть 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

Является ли 'py4j-0.8.2.1.tar.gz' опечаткой? Его следует называть 'py4j-0.8.2.1-py27_0.tar.gz'. – asmeurer

ответ

0

--use-local только ищет conda-bld/linux-64 канала. Если вы переместите пакет на другой локальный канал, вам нужно будет добавить его в свой ~/.condarcchannels как адрес file://.

Всякий раз, когда вы добавляете пакет в локальное репо, вам нужно запустить conda index в этом каталоге.Это восстановит файл repodata.json.

0

Я отвечу на вопрос о различных файлах 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

Это Specia l кэш-файл, используемый внутренним путем conda index.

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

Это аналогично первому. Это метаданные среды для пакета, который вы установили в корневую среду.