YaOzI
YaOzI

Reputation: 17548

conda packages with version name of 'custom'

When I using conda search anaconda I found a few custom version packages, shown as follow:

Fetching package metadata: ....
anaconda                 1.6.0                np17py33_0  defaults
                          ...                    ...          ...
                         4.0.0               np110py35_0  defaults        
                         4.0.0               np110py34_0  defaults        
                         4.0.0               np110py27_0  defaults        
                         custom                   py35_0  defaults        
                         custom                   py34_0  defaults        
                         custom                   py27_0  defaults 

Note that these three custom version pkgs are shown at the end of conda search anaconda results, so they are considered the newest version by conda, which also affects conda install anaconda results (so I have to using conda install anaconda=4.0.0).

Then conda info anaconda=custom gives following results:

Fetching package metadata: ....                                                

anaconda custom py35_0                                                         
----------------------                                                         
file name   : anaconda-custom-py35_0.tar.bz2                                   
name        : anaconda                                                         
version     : custom                                                           
build number: 0                                                                
build string: py35_0                                                           
channel     : defaults                                                         
size        : 3 KB                                                             
date        : 2016-03-14                                                       
license     : BSD                                                              
md5         : 47c237b38bfc175cb73aed8b8b33ade7                                 
space       : python                                                           
installed environments:                                                        
dependencies:                                                                  
    python 3.5*                                                                

anaconda custom py34_0                                                         
----------------------                                                         
file name   : anaconda-custom-py34_0.tar.bz2                                   
name        : anaconda                                                         
version     : custom                                                           
build number: 0                                                                
build string: py34_0                                                           
channel     : defaults                                                         
size        : 3 KB                                                             
date        : 2016-03-14                                                       
license     : BSD                                                              
md5         : 767a59923372d998b8c83fb16ac035a1                                 
space       : python                                                           
installed environments:                                                        
dependencies:                                                                  
    python 3.4*                                                                

anaconda custom py27_0                                                         
----------------------                                                         
file name   : anaconda-custom-py27_0.tar.bz2                                   
name        : anaconda                                                         
version     : custom                                                           
build number: 0                                                                
build string: py27_0
channel     : defaults                                                      
size        : 3 KB                                                          
date        : 2016-03-14                                                    
license     : BSD                                                           
md5         : 8288aef529d5a46d07bd84b4fcf4308a                              
space       : python                                                        
installed environments:                                                     
dependencies:                                                               
    python 2.7*           

BUT I don't know/remeber HOW and WHY these three packages appear in this computer, can anyone explain:

  1. How these custom version pkgs are created in the first place?
  2. How/Why these custom version pkgs are shown in the conda search results?
  3. How to remove these custom version pkgs?

Upvotes: 14

Views: 12048

Answers (2)

kalefranz
kalefranz

Reputation: 4762

The one custom version of any package that exists (right now, in the official repos) is for the anaconda package.

Here's there reason... The anaconda conda packages are metapackages, meaning they are packages of packages--or packages that have no real source code and only bring in a bunch of dependencies. Each anaconda package has every sub-package pinned to an explicit and specific version of that sub-package. That's because Continuum does extensive testing on the interoperability of that set of packages (and those specific versions).

Now, after you've installed anaconda, either through the Anaconda Installer or installing Miniconda and then conda install anaconda, you have a set of packages with all of these tested guarantees. There's no reason you have to stick to this locked set of packages--you can install anything and any version you want. You no longer have a version-identifiable Anaconda Distribution though. You've customized it. Thus, when you run conda list and the version of the anaconda package shows custom, you know you've diverged from the set of packages in the Anaconda Distribution that are robustly tested for interoperability.

Your conda search anaconda query just reflects an artifact of how this is implemented. You'll notice in that query that custom packages are listed first, meaning they have the lowest sort order when comparing versions. Thus, if you run conda update anaconda after you've diverged from the specifically-pinned anaconda packages, you'll be back to a numbered version of the Anaconda Distribution.

Upvotes: 16

Paul
Paul

Reputation: 5935

This is really a partial answer. I'm not positive why exactly this version exists.

(1) In terms of the specific version value of custom it seems this is allowed from here:

version: string

The package version, which may not contain -. Conda acknowledges PEP 440.

So this anaconda package would be created in the same way as any of the other versions. I would assume using conda build.

(2) They are shown in the search results because they exist in the anaconda cloud. It seems this is an officially released version of anaconda.

As for why it exists, if you download one of the actual package files (for example linux-64-anaconda-custom-py35_0.tar.bz2), expand it, and read the info/index.json file it looks like this package will simply install python and the other bare bones needs. Compare this to anaconda version 4.0.0, or one of the others, and you will see a ton of packages. I assume this package exists so that if someone installs the custom version they will just get the bare bones packages and then they go through conda install-ing any others they want.

For example, look at the packages when you do conda create -n anc-test anaconda=4.0.0 vs. conda create -n anc-test anaconda=custom.

EDIT: Just saw that that is also in your conda info so you are probably already aware of the difference in dependencies.

(3) I don't think you can remove these custom packages from your search call as they are legitimate packages in the anaconda cloud. You might be able to exclude them from the conda search via regex. It doesn't look like from your output that they have been installed -- at least not in the current environment.

Upvotes: 0

Related Questions