That's a problem though, there shouldn't be much of a problem of having both versions of the package available in a single environment, as long as the second package is namespaced appropriately, in this case it's just a shell alias. This should be possible with Nix. There are situations where it makes sense to have multiple versions if say you're doing some CI work involving different versions of a runtime.

On 4/08/2016 10:07 PM, Guillaume Maudoux (Layus) wrote:
Hi,

I think you are putting your efforts in the wrong direction.
Nix is not designed to install both python 3.4 and 3.5 in the same
environment.

What it can do however is cache both in the store, so you can get an
environment with python 3.4 with
nix-shell -p python34
and an environment with python 3.5 with
nix-shell -p python35

Nix can provide you with as many different environments at the same time.
You can have a shell with python 3.4 running besides a shell with python
3.5.
You should however not install both in your default environment (nix-env
-i) as it won't work.

May I refer you to https://nixos.org/wiki/Development_Environments ?

Regards,
-- Layus.


Le 03/08/16 à 16:43, Roland Koebler a écrit :
Hi,

I think I've now found out (at least partially), although this could
result in a package being installed multiple times.

It appears that the flag setting only works on already installed packages.
Yes, and if I use

     $ nix-env -i python3-3.5.2
     ...
     $ nix-env --set-flag priority 10 python3-3.5.2
     ...
     $ nix-env -i python3-3.4.5 python3-3.5.2
     replacing old ‘python3-3.5.2’
     installing ‘python3-3.4.5’
     installing ‘python3-3.5.2’

it does not work, since the last command first removes python3-3.5.2,
then probably the flag is lost, and then installs it again.

Also I'm not sure, but even if there are name collisions in the user
environment, it should still be possible to install both packages but only
use one of the names, and then create your name alias to the non-named
package. However I do not know how this can be done.
I think I've found out. The following works:

     $ nix-env -i python3-3.5.2
     $ nix-env --set-flag priority 10 python3-3.5.2
     $ nix-env -i -P python3-3.4.5

--preserve-installed / -P was the relevant switch.
However, this can have some strange side-effects, since -P can
cause a package to be installed "multiple times":

     $ nix-env -i -P python3-3.4.5
     ...
     $ nix-env -i -P python3-3.4.5
     ...
     $ nix-env -i -P python3-3.4.5
     ...
     $ nix-env -q
     ...
     python3-3.4.5
     python3-3.4.5
     python3-3.4.5
     python3-3.4.5
     ...

This could then be "resolved" by:

     $ nix-env -e python3-3.4.5
     uninstalling ‘python3-3.4.5’
     uninstalling ‘python3-3.4.5’
     uninstalling ‘python3-3.4.5’
     uninstalling ‘python3-3.4.5’
     $ nix-env -P -i python3-3.4.5
     installing ‘python3-3.4.5’

But it still looks strange.
Is this intentional?

Roland

_______________________________________________
nix-dev mailing list
nix-dev@lists.science.uu.nl
http://lists.science.uu.nl/mailman/listinfo/nix-dev
_______________________________________________
nix-dev mailing list
nix-dev@lists.science.uu.nl
http://lists.science.uu.nl/mailman/listinfo/nix-dev

--
Founder of Matrix AI
https://matrix.ai/
+61420925975

_______________________________________________
nix-dev mailing list
nix-dev@lists.science.uu.nl
http://lists.science.uu.nl/mailman/listinfo/nix-dev

Reply via email to