Open cbcunc opened 9 years ago
The problem is stemming from installing the anaconda metapackage. This metapackage will force the installation of certain packages, even if those are not the latest versions/builds. If you look at the packages in the bad environment, you will see that curl is out of date. The krb5 dependency was added in build 1 of curl.
You can fix the issue by updating curl.
Thanks for an answer. The recipe for netCDF4 should then update curl.
The recipe for netCDF4 can't update curl because the anaconda package forces a downgrade to a particular build of curl. You can see this by creating a new environment and installing netCDF4. After that, try installing anaconda. You will see this section of output from conda
The following packages will be DOWNGRADED:
curl: 7.43.0-1 defaults --> 7.43.0-0 defaults
numpy: 1.9.2-py27_2 defaults --> 1.9.2-py27_0 defaults
pip: 7.1.2-py27_0 defaults --> 7.0.3-py27_0 defaults
python: 2.7.10-1 defaults --> 2.7.10-0 defaults
setuptools: 18.1-py27_0 defaults --> 17.1.1-py27_0 defaults
If you want the latest builds of these packages, you must update them after installing the anaconda metapackage.
So will anaconda work properly if I install it and then upgrade curl in preparation for netCDF4? (And I've had a lot of problems with the downgraded pip and setuptools.) Is conda --update all
bad for anaconda?
Yes, anaconda will work properly. If you install the anaconda metapackage, then conda install netCDF4
, it will update everything it needs (including curl). I don't believe that conda --update all
is bad. I use it all the time.
The reason the metapackages are there is to provide snapshots of the packages in an anaconda release. The versions of all the packages in Anaconda 2.3.0 will be frozen in the anaconda 2.3.0 metapackage. That way you can easily reproduce installs of anaconda 2.3.0 because the package versions are fixed.
The whole point of the issue is that "If you install the anaconda metapackage, then conda install netCDF4
," then curl is not updated and krb5 is not installed. If conda --update all
isn't a bad thing, then conda install anaconda
or conda create -n xxx anaconda
shouldn't downgrade packages, or should at least install the same versions as conda --update all
for packages in anaconda.
On my machine, if I install the anaconda metapackage, and then conda install netCDF4
, curl is updated (and krb5 is installed).
$ conda install netCDF4
Fetching package metadata: ....
Solving package specifications: .
Package plan for installation in environment /Users/xxxxx/miniconda/envs/krbbad:
The following NEW packages will be INSTALLED:
krb5: 1.13.2-0 defaults
wheel: 0.24.0-py27_0 defaults
The following packages will be UPDATED:
curl: 7.43.0-0 defaults --> 7.43.0-1 defaults
numpy: 1.9.2-py27_0 defaults --> 1.9.2-py27_2 defaults
pip: 7.0.3-py27_0 defaults --> 7.1.2-py27_0 defaults
python: 2.7.10-0 defaults --> 2.7.10-1 defaults
setuptools: 17.1.1-py27_0 defaults --> 18.1-py27_0 defaults
Proceed ([y]/n)?
The purpose of the anaconda metapackage is to create an environment with known package versions. The anaconda metapackage acts like the Anaconda installers and will install a pre-determined version of each package it depends on.
Either the netCDF4 package was updated, or the behavior of installing it is different if done after installing anaconda than at the same time. It also means that the order in which packages are specified on conda create
is not very significant. anaconda's dependencies on conda create -n xxx anaconda netcdf4
seem to take precedence over netcdf4's. I don't know how the metapackage decides whose dependencies are more important. i know the purpose of the metapackage is to manage known good sets (KGS's) of package versions. It's just not like package dependencies or KGS's never change over time.
ENVIRONMENT (under OSX 10.10.5):
BAD:
REASON:
GOOD:
I would submit a PR, but http://anaconda.org/anaconda/netcdf4/1.1.9/download/osx-64/netcdf4-1.1.9-np19py27_0.tar.bz2 returns a 404.