mxmlnkn / ratarmount

Access large archives as a filesystem efficiently, e.g., TAR, RAR, ZIP, GZ, BZ2, XZ, ZSTD archives
MIT License
709 stars 36 forks source link

Providing conda packages #99

Closed ap-- closed 1 year ago

ap-- commented 1 year ago

Hello @mxmlnkn

I'd like to install ratarmount via conda and wanted to ask what your thoughts are on providing conda packages. I would offer to create the required conda-forge package feedstocks to make that happen.

Packages that would need to be created:

Let me know what you think, Cheers, Andreas 😃

mxmlnkn commented 1 year ago

Hi there :),

I's welcome uploading a conda package. I already have a pipeline for indexed_bzip2 as you found out. Those were uploaded by me. Unfortunately, I'm pretty new to the conda ecosystem and I don't use it normally.

I didn't port the indexed_bzip2 conda CI to pragzip yet because the downloads were around five in total ... compared to thousands via PyPI. But, pragzip is not a required dependency yet anyway because it is not fully finished.

Could the low download count be because it is a "personal feedstock" instead of conda-forge? I'm not sure I quite get what difference that would make for someone wanting to install ratarmount.

ap-- commented 1 year ago

The downloads for your indexed_bzip2 package are low, because users would have to specifically add your personal channel to the install command or to their environment.yml (basically requirements.txt)

The conda ecosystem uses channels to host packages. By default conda uses a channel called default which is managed by Anaconda Inc. This default channel is more curated and doesn't move as fast (I assume because Anaconda also provides paid tiers with guarantees regarding how stable the distributed tools are) But there is a very large community driven project called conda-forge, which provides the conda-forge channel which contains a lot more and more recent packages than the defaults channel. To add packages to that channel you create a new feedstock repository in the conda-forge github organisation via the staged-recipes repository. The feedstocks are then managed by whoever volunteers to be maintaining them. For well designed tools, this maintaining overhead is very little, and can mostly be automated via bots provided by the conda-forge community.

So for each package you will end up with a repository in the conda-forge org, where me (and I would of course add you) would have maintainer access. So something like https://github.com/conda-forge/ratarmount-feedstock

If you would like, I can set all of this up, and provide a few more explanations what I consider best-practice and what would help to reduce the maintainer burden, in terms of automation etc... I would start with the dependencies and make these feedstock repositories one by one.

mxmlnkn commented 1 year ago

I see. Thank you for the detailed explanation.

If you would like, I can set all of this up, and provide a few more explanations what I consider best-practice and what would help to reduce the maintainer burden, in terms of automation etc... I would start with the dependencies and make these feedstock repositories one by one.

I will take up that offer. Thank you for your help! Let me know when you need some changes in one of the projects owned by me. The other depended-on projects also had responsive maintainers the last time I reported bugs for any of them.

ap-- commented 1 year ago

Great 👍 I'll start setting everything up in the next few days and will keep this issue updated!

ap-- commented 1 year ago

Stage Recipes:

ap-- commented 1 year ago

The last remaining pull request got merged! :tada:

conda create -n myenv -c conda-forge ratarmount
conda activate myenv
ratarmount --help

Cheers, Andreas

mxmlnkn commented 1 year ago

It took a while but it finally is done :tada:

Thank you for keeping at it and thank you so much for your work on this :heart:

As the last step, I'll have to add it to the Readme. Maybe another badge and/or your posted install steps.