Setting up a private conda channel - part 1

Research paths to set up an enterprise-wide private conda channel
conda
conda-channel
Author

J-M

Published

June 18, 2022

Background

I have a conda package for a compiled native library (moirai). While it may be in a position to be submitted to conda-forge, I will also be interested at some point in setting up “my” own conda channel, with a view to distribute packages on my enterprise intranet. I may as well use that library moirai to test setting up a custom conda channel.

This post will be a review of the possible ways to do this.

Resources

conda documentation

The main conda documentation has sections on managing channels and creating custom channels.

fast.ai

Jeremy Howard has written the post “fastchan, a new conda mini-distribution”. It is a good read giving the rationale for setting up this channel. The repo of the conda channel ‘fastconda’ has some elements of pipelines but may be a good starting point for channels hosted by Anaconda. I am not sure I can repurpose this for a private channel.

Reusing conda-forge?

Since I intuit that a process similar to that of conda-forge could be what is emulated internally, an option may be to upfront borrow from the conda-forge documentation

The workhorse of conda-forge appears to be using conda-smithy to manage your CI, though that section actually rather confused me at the first read. The github readme of conda-smithy may be a better starting point.

https://github.com/conda-forge/astra-toolbox-feedstock is a recently accepted recipe. Likely a good template to study for the swift stack.

Commercial offerings

  • At an enterprise level it may be better to use Anaconda Server rather than cook up something. I probably cannot afford the time to trial standing one up, but my IM&T business unit may look at it. In particular, if there are use cases for sophisticated user based access controls, “free” solutions may not be up to scratch nor to scale.
  • Anaconda cloud thingy
  • Channel on anaconda.org

Other

By the way one misleading thing if you google “How do I set up a conda channel?”: the erronously titled video How to create new channel in Anaconda (python) is actually demonstrating the creation of a conda environment. Skip.

Stocktake

The first impression is that there is not a clear, single path to standing up your own conda channel over HTTP(S), no turn-key solution. The closest may be the github repo Private Conda Repository.

A first plan for the next steps, presumably next posts, are: