web-dev-qa-db-ja.com

独自のプライベートcondaリポジトリをホストするにはどうすればよいですか?

私はいくつかのpython互いに依存しているプロジェクトを持っています。各プロジェクトに異なるリリースバージョンがあり、異なるプロジェクトは特定のプロジェクトの異なるリリースバージョンに依存している可能性があります。これらのプロジェクトのリリースをcondaパッケージとしてプッシュし、他のプロジェクトがそこから必要なバージョンをインストールできる、内部サーバー上の自分のcondaリポジトリ。

26
Nefarious

condaカスタムチャネル をプライベートリポジトリとして使用できます。基本的な手順は、「conda build」を使用してcondaパッケージを作成し、そのパッケージをカスタムチャネル(ディレクトリ)にコピーし、そのディレクトリでcondaインデックスを実行することです。その後、「conda install -c」を使用して、このチャネルからパッケージをインストールできます。

より詳細な例では、linux-64を想定します。

  • チャネルを作成します。
    mkdir -p /tmp/my-conda-channel/linux-64
  • 今、meta.yamlで「abc」という名前のプロジェクトがあり、バージョンXでbuild.shがあると仮定します。

    conda build abc

  • これにより、conda-bldディレクトリにtar.bz2ファイルが作成されます。例:〜/ miniconda3/conda-bld/linux-64/abc-X-py35_0.tar.bz2そのファイルをチャンネルにコピーします。

    cp ~/miniconda3/conda-bld/linux-64/abc-X-py35_0.tar.bz2 /tmp/my-conda-channel/linux-64/

  • インデックスを作成します:

    conda index /tmp/my-conda-channel/linux-64/

これで、パッケージをカスタムチャネルにアップロードしました。以下を実行することにより、どのconda環境にもインストールできます。

conda install -c file://tmp/my-conda-channel/ abc=X

ここで、Xはバージョンであるため、チャンネルにさらに多くのバージョンを配置したら、特定のバージョンをインストールできます。

「abc」のXバージョンに依存するプロジェクトがある場合は、単純にそのプロジェクトmeta.yamlに追加します。例:

package:
  name: some-other-project
  version: 0.1
requirements:
  build:
   - abc X
...

このチャネルを作成したら、 。condarc ファイルに追加して、自動的に検索されるようにすることをお勧めします。例えば:

channels:
- file://tmp/my-conda-channel/   
- defaults
36
Paul

これには2つの部分があります。チャネルの作成方法と使用方法です。パート2はうまくやるのが一番難しいです。

最初の部分は conda documentation で詳細に説明されています。ファイルから直接、または静的Webサーバー経由でチャネルを提供できます。

チャネルを使用するための1つのアプローチは-c file://tmp/my-conda-channel/ですが、最近のcondaバージョンでは、カスタムチャネルを介してはるかに優れたソリューションが許可されます。 )condaに追加されました。

ドキュメントは、この部分を含むconda config --describeから入手できます。

# custom_channels (map: str)
#   A map of key-value pairs where the key is a channel name and the value
#   is a channel location. Channels defined here override the default
#   'channel_alias' value. The channel name (key) is not included in the
#   channel location (value).  For example, to override the location of
#   the 'conda-forge' channel where the url to repodata is
#   https://anaconda-repo.dev/packages/conda-forge/linux-64/repodata.json,
#   add an entry 'conda-forge: https://anaconda-repo.dev/packages'.
#
# custom_channels: {}

チャネルを追加するための構文は文書化されていませんが、 ソースの読み取り 正しい呼び出しは次のように見えます:

conda  --set custom_channels.my-conda-channel file://tmp/

(注:my-conda-channel/はパスの一部ではありません)。これを構成に追加すると、conda-forgeまたは他の「組み込み」チャネルと同じ方法で独自のチャネルを使用できるようになります。

conda install -c my-conda-channel my-cool-package

MS Windows設定の場合、これをWindows共有で使用するための正しいスラッシュとバックスラッシュのセットはfile://\\SOMECORP\Corp\conda\channels\です。魅力的です。

6
Janus