-
Notifications
You must be signed in to change notification settings - Fork 166
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
(RFC) How to update existing installations #679
Comments
I would second that. There are a lot of intricacies involved. It looks like That can, of course, cause all kinds of conflicts with existing packages, even in the best case scenario where the |
Yes, to add some more context to other contributors:
So I think we should approach this very carefully, and only in some cases. Maybe the easiest from our maintenance point of view is to add a flag |
What we have done for Spyder so far is incorporate the update mechanism into our Spyder application. Assuming a fresh install from our constructor-based installer, our update plugin checks for available updates on Github and downloads a conda-lock file for minor/micro updates, or the full (constructor-based) package installer if a major update. For micro updates, Spyder uses I agree that it would be nice to have some mechanism to allow installing over an existing install. However, I think it would be best to achieve this by first uninstalling the old version before installing the new one. |
The challenge here are
Offering to re-install everything during the installation if the directory isn't empty may be a good first step (even though we have to be clear that this will destroy all environments), but it's not the full solution. And we must make our uninstall procedure more robust/complete first (I am working on #642 right now for |
The update logic in the installers is a bit convoluted right now, and I don't think it's working at all.
The background is that previous iterations of constructor would consider the target environment (if not empty) as part of the fresh installation. However, at some point, the installer was instructed to error if the target directory was not empty (by default). Adding the
-f
or-u
switches in the shell installer would somehow allow that, but there were no guarantees it would succeed. I am not aware of similar switches on Windows installers.These days, the installer does not solve the target environment, it simply runs an explicit install, overwriting as needed if
-f
was passed.I think that's still the right approach (happy to discuss that, though), but some users are confused by how to update the installation. There are two options:
conda
deployment,conda update -n base conda
should suffice assuming thebase
environment is tractable.conda
is not involved, then it's a matter of uninstalling / removing and installing the new one.I am thinking that maybe we could provide either a custom field to change the default message, or at least parameterize the message depending on whether
conda
is included inbase
or not. However, some apps might not want to mentionconda
at all to keep their delivery story simpler for their users (e.g. Spyder or napari).The text was updated successfully, but these errors were encountered: